Buon giorno a tutti,
come ben sapete lavorando con action script e flash ci sono vari modi per ottenere lo stesso effetto,
peró alcune soluzioni sono corrette, altre sbagliate.
Per ora sono riuscito ad ottenere l'effetto che volevo ma con la procedura sbagliata.
QUello che vorrei simulare con FLASH 6, é un gioco di carte.
5 carte sono sul tavolo, coperte. Cliccandoci sopra si "scoprono"
Il difficile per me é evitare che ci siano delle carte ripetute.
Ho fatto una prova con i 4 assi. Cliccando sulle 4 carte coperte si rivelano gli assi, con una sequenza casuale.
Ho utilizzato il seguente metodo:
Le 4 carte sono 4 movie clip
Nel primo movie clip (carta01), nel frame 1 é presente un bottone (la carta coperta) che ha la seguente azione:
on (release) {
gotoAndStop(2);
_global.campo1=Math.ceil(Math.random()*4);
}
Nel frame 2 é presente il testo dinamico "campo1" e le seguenti azioni:
if (_global.campo1 == "1") {
gotoAndStop(3);
}
if (_global.campo1 == "2") {
gotoAndStop(4);
}
if (_global.campo1 == "3") {
gotoAndStop(5);
}
if (_global.campo1 == "4") {
gotoAndStop(6);
}
Nei frame 3/4/5/6 sono posizionate le immagini dei 4 assi.
Immagino che giá questo sia un modo sbagliato di risolvere la questione, perché se volessi fare la prova con 52 carte dovrei scrivere 52 volte IF bla bla bla e inserire nei 52 frames successivi le mie immagini.
Poi nel secondo movie clip "carta02", nel frame 1 c'é sia un campo di testo dinamico "campo2" e sempre il mio bottone che dice:
on (release) {
_global.campo2 = Math.ceil(Math.random()*4);
if (_global.campo2 == _global.campo1) {
gotoAndStop(2);
} else {
gotoAndStop(4);
}
}
Che succede nel frame 2? é presente la seguente azione:
_global.campo2 = Math.ceil(Math.random()*4);
if (_global.campo2 == _global.campo1) {
gotoAndStop(3);
} else {
gotoAndStop(4);
}
e nel frame 3:
_global.campo2 = Math.ceil(Math.random()*4);
if (_global.campo2 == _global.campo1) {
gotoAndStop(2);
} else {
gotoAndStop(4);
}
Basicamente il frame 2 e 3 si rimpallano l'azione fino a che il valore é diverso da campo1,
si arriva cosí al frame 4 dove sono presenti le mie solite azioni:
if (_global.campo2 == "1") {
gotoAndStop(4);
}
if (_global.campo2 == "2") {
gotoAndStop(5);
}
if (_global.campo2 == "3") {
gotoAndStop(6);
}
if (_global.campo2 == "4") {
gotoAndStop(7);
}
Come potete capire é un metodo ASSURDO, anche perché per le carte 3 e 4 diventa piú complicato perché tutto si allunga:
n (release) {
_global.campo3 = Math.ceil(Math.random()*4);
if (_global.campo3 == _global.campo1) {
gotoAndStop(2);
} else {
gotoAndStop(4);
}
if (_global.campo3 == _global.campo2) {
gotoAndStop(2);
} else {
gotoAndStop(4);
}
}
PAZZIA no?
Beh...qualcuno potrebbe essere cosí gentile da indirizzarmi sulla buona strada?
qual'é la maniera migliore per ottenere una carta random
e per fare in modo che no si ripete nelle posizioni successive???
GRAZIE PER L'ATTENZIONE, se siete arrivati fino alla fine siete dei geni!

Rispondi quotando