Memory Flash

arradya Messages postés 3 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 24 avril 2007 - 18 avril 2007 à 00:08
arradya Messages postés 3 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 24 avril 2007 - 24 avril 2007 à 22:00
Bonjour à tous,


Je fais récemment un jeu en flash sous la forme d'un Memory, il fonctionne entièrement
grâce au code et il y a une boucle qui mélange automatiquement les images aléatoirement,
elle est sensée mélanger une seule fois mais la boucle ne s'arrête pas.
Autrement dit, les images se mélangent en permanence et donc on ne peut pas
jouer.


//MEMORY


LG_GRILLE=4, HT_GRILLE=4; //Largeur, hauteur de la grille (en cases)

LG_CASE=100, HT_CASE=100; //Largeur, hauteur d'une case (en pixels)

Counter = (LG_GRILLE*HT_GRILLE)/2; //Nombre de paires

Clic=false, Step=1, Fade=false;


Tab = new Array(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8);


//Association des sons

Snd_clic = new Sound(); //Crée l'objet son "Snd_clic" (son
d'apparition d'une image)

Snd_clic.attachSound("clic.mp3"); //Attache le son
"clic.mp3" à l'objet "Snd_clic"

Snd_match = new Sound(); //Son d'une paire trouvée

Snd_match.attachSound("match.mp3");


//Mélange Tab plusieurs fois

for (i=0; i<50; i++) {

    n = (LG_GRILLE*HT_GRILLE)-1; //Dernier index de Tab

    ind1 = Math.round(Math.random()*n); //0 <= ind1 <= n

    ind2 = Math.round(Math.random()*n); //0 <= ind1 <= n

    ind = Tab[ind1];

    Tab[ind1] = Tab[ind2];

    Tab[ind2] = ind;

   

}


//Affiche les papillons et les caches

Depth = 0;

ind = 0; //Index

for (j=0; j<HT_GRILLE; j++) {

    for (i=0; i<LG_GRILLE; i++) {

        //Papillons

        attachMovie("pap"+Tab[ind],
"pap"+ind, Depth++, {_x:i*LG_CASE, _y:j*HT_CASE});

        //Caches

        clip = attachMovie("cache",
"cache"+ind, Depth++, {_x:i*LG_CASE, _y:j*HT_CASE});

        clip.num = Tab[ind]; //Numéro

        ind++;

    }

}


//Fonction pour chaque cache

for (i=0; i<LG_GRILLE*HT_GRILLE; i++) {

    _root["cache"+i].onRelease = function() {

        Clic = true;

        Ref_cache = this;

    };

}


onEnterFrame = function () {

    //ETAPES 1 ET 2  : CLIQUER SUR UN CACHE PUIS UN AUTRE

    if (Clic && !Fade) { //Un cache cliqué et pas de
fade en cours

        Clic = false;

        if (Step == 1) { //1er cache cliqué

            cacheA = Ref_cache;

           
cacheA.gotoAndPlay("fadeout"); //Apparition du papillon A

            Snd_clic.start();

        } else if (Step == 2 && Ref_cache
!= cacheA) { //2e cache différent du 1er

            cacheB = Ref_cache;

           
cacheB.gotoAndPlay("fadeout"); //Apparition du papillon B

            Snd_clic.start();

        }

    }

   

    //ETAPE 3 : COMPARAISON DES PAPILLONS A ET B  

    if (Step == 3 && !Fade) {

        if (cacheA.num == cacheB.num) {
//Papillons identiques => Disparition

           
_root["pap"+cacheA._name.substr(5)].gotoAndPlay(2); //Papillon A

           
_root["pap"+cacheB._name.substr(5)].gotoAndPlay(2); //Papillon B

            cacheA.removeMovieClip();
//Supprime les caches A et B

           
cacheB.removeMovieClip();

           

            Snd_match.start();

            Counter--; //Une paire
en moins dans le jeu

            if (Counter>0) Step
= 1; //Il reste encore des paires à trouver

            else {
    //FIN DU JEU : Apparition de "Congratulations !"

               
attachMovie("bravo", "bravo", Depth++, {_x:30, _y:200});

               
Step = 4; //Etape sans issue

            }

           

        } else {     //Papillons
différents

           
cacheA.gotoAndPlay("fadein"); //Réapparition du cache A

           
cacheB.gotoAndPlay("fadein"); //Réapparition du cache B

        }

    }

};


Si quelqu'un peut m'aider


Merci beaucoup...


 


Arradya

2 réponses

cs_zev Messages postés 14 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 12 juin 2007
21 avril 2007 à 16:47
je n'ais pasanalyser ta source en détail mais deja je n'y ais pas vu de "break"
Dans le cas d'une boucle qui ne s'arrete jamais ,casse l'effet de ta boucle avec uen instuction "break"

exemple :

for(i=0;i<20;i++){
if(condition){
//instruction
}else{
break;
}
0
arradya Messages postés 3 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 24 avril 2007
24 avril 2007 à 22:00
Merci pour ton conseil, j'ai trouvé la solution

Arradya
0
Rejoignez-nous