//GOBMAN par Walter Siracusa DROITE=1,GAUCHE=2,HAUT=3,BAS=4; //Constantes des directions LG_GRILLE=18, HT_GRILLE=24; //Largeur, hauteur de la grille (en cases) CASE=20; //Largeur et hauteur d'une case (en pixels) NB_GHOST=4; //Nombre de fantômes Game=0; //0 = pas commencé, 1 = en cours, 2 = perdu, 3 = gagné Score=0; //Score en fonction du nombre de pastilles mangées //Tableau du labyrinthe (0 = passage, 1 = mur) Tab=new Array([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], [1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1], [1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1], [1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1], [1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,1,0,1], [1,0,0,0,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1], [1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1], [1,0,1,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1], [1,0,1,1,0,1,1,0,0,0,0,0,1,1,0,1,1,1,0,1,1,1,0,1], [1,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1], [1,0,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,1], [1,0,0,0,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,1], [1,0,1,1,0,1,1,0,0,0,0,0,1,1,1,0,1,1,0,1,1,1,0,1], [1,0,1,1,0,1,1,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,0,1], [1,0,1,1,0,0,0,0,0,1,1,0,1,1,1,0,1,1,0,0,0,0,0,1], [1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1], [1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1], [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]); //Association des sons Snd_miam=new Sound(); Snd_miam.attachSound("miam.wav"); Snd_argg=new Sound(); Snd_argg.attachSound("argg.wav"); //Timing timer0=getTimer(); //Place les clips miam sur le chemin et les totalise Depth=0; Nb_miam=0; //Nombre de miam for(j=0;jy){ //En dessous if(MoveTest(ghost,HAUT)) ghost.dir=HAUT; else if(!MoveTest(ghost,ghost.dir)) ghost.dir=BAS; } //Au même niveau : contourne l'obstacle else if(ghost._y==y && !MoveTest(ghost,ghost.dir)){ if(MoveTest(ghost,BAS)) ghost.dir=BAS; else ghost.dir=HAUT; } }//Déplacement vertical else if(ghost.dir==HAUT || ghost.dir==BAS){ if(ghost._xx){ //A droite if(MoveTest(ghost,GAUCHE)) ghost.dir=GAUCHE; else if(!MoveTest(ghost,ghost.dir)) ghost.dir=DROITE; } //Au même niveau : contourne l'obstacle else if(ghost._x==x && !MoveTest(ghost,ghost.dir)){ if(MoveTest(ghost,DROITE)) ghost.dir=DROITE; else ghost.dir=GAUCHE; } } //Déplace le fantôme switch(ghost.dir){ case DROITE: ghost._x+=ghost.vt; break; case GAUCHE: ghost._x-=ghost.vt; break; case HAUT: ghost._y-=ghost.vt; break; case BAS: ghost._y+=ghost.vt; break; } } } onEnterFrame=function(){ //Boucle principale if(Game==1 || Game==2) MoveGhost(); //Déplace les fantômes même si la partie est perdue if(Game==3) gob._rotation+=4; //Partie gagnée: Gobman tourne sur lui-même if(Game==1 && gob.ok){ //Partie en cours et Gobman contrôlable //Oriente Gobman au clavier ControlGobman(); //Gobman se déplace tout seul tant qu'il ne rencontre pas un obstacle if(MoveGobman()) gob.play(); //Gobman se déplace : animation de la bouche else gob.gotoAndStop(1); //Gobman est arrêté : animation stoppée //Gobman mange les pastilles ? miam=_root["miam"+(Math.floor(gob._x/CASE)+Math.floor(gob._y/CASE)*LG_GRILLE)]; if(miam.getDepth()!=undefined){ //La pastille n'est pas déjà mangée miam.removeMovieClip(); //Supprime la pastille _root.attachMovie("points","points",Depth++,{_x:gob._x,_y:gob._y}) Score+=10; //Ajoute 10 points au score txt_score.text=Score; Snd_miam.start(); if(--Nb_miam==0){ //Toutes les pastilles sont mangées => "GAGNE !" clip=_root.attachMovie("end","end",Depth++,{_x:110,_y:170}) clip.gotoAndStop(2); //Score Bonus temps timer=Math.floor((getTimer()-timer0)/100); trace("timer:"+timer); if(timer<1000){ //1000 dixieme de seconde max trace(Score); Score+=Math.floor((1000-timer)*0.8); //0.8 points par dixieme de seconde en moins trace(Score) } //Score Bonus life Score+=gob.life*25; //25 points par vie restante trace(Score); txt_score.text=Score; //Destruction des fantômes for(i=1;i<=NB_GHOST;i++) _root["ghost"+i].gotoAndPlay("destroy"); Game=3; _root.play(); } } //Collision entre Gobman et un fantôme ? if(gob.inv>0){ //Gobman est invincible gob.inv--; gob._alpha=50; }else{ //Gobman n'est pas invincible gob._alpha=100; for(i=1;i<=NB_GHOST;i++){ if(gob.hitTest(_root["ghost"+i])){ //Collision avec un fantôme lives.nextFrame(); //Gobman perd une vie... gob.inv=150; //Durée d'invincible Snd_argg.start(); gob.life--; if(gob.life==0){ //Plus de vie => FIN: "PERDU..." _root.attachMovie("end","end",Depth++,{_x:110,_y:170}) Game=2; _root.play(); } gob.gotoAndPlay("catch"); //Clignote puis repositionné break; } } } } }