Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    43

    sequenza casuale carte che non si ripetono

    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!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    583
    Non so se è il metodo migliore, ma in un gioco di carte che ho fatto tempo fa avevo usato due array.

    Ho associato ad ogni carta un id, cioè un valore unico ed identificativo, formato da "seme" + "valore". Tipo c1 rappresentava l'asso di cuori.

    La prima array che viene definita all'inizio contiene tutte le carte del mazzo, tipo

    var arrayMazzo:Array = new Array();
    arrayMazzo[0] = "c1";
    arrayMazzo[1] = "c2";
    arrayMazzo[2] = "c3";
    arrayMazzo[3] = "c4";
    ...

    La seconda array rappresenta le carte pescate e all'inizio del gioco sarà ovviamente vuota.

    Il gioco sta nel far passare elementi da un array all'altra.

    Inoltre ho creato solamente un movieclip 'carta generica' che richiamavo sullo stage e modificavo a seconda dell'elemento dell'array.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    43

    grazie!

    devo proprio documentarmi su questo array!

    grazie per la dritta, adesso ci provo!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.