//SNAKE par Walter Siracusa DROITE=1,GAUCHE=2,HAUT=3,BAS=4; //Constantes des directions Game=false; Life=3; title_txt.text="Go !"; Score=0; //Compteur du score txt_score.text="0"; //Chaine du score Snake=new Object(); Snake.lg=0; //Longueur de Snake //Association des sons Snd_crunch=new Sound(); Snd_crunch.attachSound("crunch.mp3"); //Snake mange Snd_end=new Sound(); Snd_end.attachSound("end.mp3"); //Snake a rencontré un obstacle Snd_move=new Sound(); Snd_move.attachSound("move.mp3"); //Bruit du déplacement Snd_move.onSoundComplete=function(){ //Son terminé this.start(); //Rejoue le son } function Init(){ Game=true; //Booleen jeu en cours/fini bouton._visible=false; Depth=0; //Profondeur des body Snake.vt=16; //Vitesse (pas) de déplacement Snake.lg=1; //Longueur minimale de Snake (tête et queue non inclues) Snake.dir=DROITE; //Direction du Snake head._rotation=0; //Tête orientée à droite (0°) Snake.x=3*Snake.vt+8; //Position initiale de Snake Snake.y=8*Snake.vt+8; head.gotoAndStop(1); //Stoppe la tête sur le vert head._x=-20; //Cache la tête body0.gotoAndStop(1); //Stoppe la queue sur le vert body0._x=-20; //Cache la queue miam.gotoAndPlay(1); //Une pomme est placée aléatoirement Snd_move.stop(); //Bruit du serpent Snd_move.start(); } bouton.onRelease=function(){ //Supprime le corps for(i=1;i<=Snake.lg;i++) _root["body"+i].removeMovieClip(); if(Life>0){ Init(); //Créer le corps de body"1" à body"Snake.lg" (tête et queue en moins) for(i=1;i<=Snake.lg;i++) duplicateMovieClip("body","body"+i,Depth++); }else{ onEnterFrame=function(){}; _root.nextFrame(); } } function ControlSnake(){ //Les touches fléchées change l'orientation de Snake if(Key.isDown(Key.RIGHT) && Snake.dir!=GAUCHE){ //A droite Snake.dir=DROITE; head._rotation=0; }else if(Key.isDown(Key.LEFT) && Snake.dir!=DROITE){ //A gauche Snake.dir=GAUCHE; head._rotation=180; }else if(Key.isDown(Key.UP) && Snake.dir!=BAS){ //En haut Snake.dir=HAUT; head._rotation=270; }else if(Key.isDown(Key.DOWN) && Snake.dir!=HAUT){ //En bas Snake.dir=BAS; head._rotation=90; } } function MoveSnake(){ switch(Snake.dir){ //Déplace Snake selon son orientation case DROITE: Snake.x+=Snake.vt; break; case GAUCHE: Snake.x-=Snake.vt; break; case HAUT: Snake.y-=Snake.vt; break; case BAS: Snake.y+=Snake.vt; break; } //Chaque body prend la position du body suivant for(i=0;i<=Snake.lg-1;i++){ clip1=_root["body"+i]; clip2=_root["body"+(i+1)]; clip1._x=clip2._x; clip1._y=clip2._y; clip1._rotation=clip2._rotation; } //Le dernier body prend la position de la tête clip=_root["body"+Snake.lg]; clip._x=head._x; clip._y=head._y; clip._rotation=head._rotation; //La tête prend la position de Snake head._x=Snake.x; head._y=Snake.y; } onEnterFrame=function(){ if(Game){ ControlSnake(); MoveSnake(); //Snake sort de la scène (24 = 16+8, 456 = 480-16-8 , 376 = 400-16+8) if(head._x<24 || head._y<24 || head._x>456 || head._y>376) EndGame(); //La tête rentre en collision avec le reste du corps for(i=0;i<=Snake.lg;i++) if(_root["body"+i]._x==head._x && _root["body"+i]._y==head._y) EndGame(); //Snake percute un des 9 blocs for(i=1;i<=9;i++) if(_root["bloc"+i].hitTest(head._x,head._y,false)) EndGame(); //Snake mange une pomme if(miam.bool && miam.hitTest(head._x,head._y,false)) { Snake.lg++; //Le corps s'allonge d'un body duplicateMovieClip("body","body"+Snake.lg,Depth++); Score+=10; //Augmente le score de 10 points txt_score.text=Score; //Nouveau score Snd_crunch.start(); miam.gotoAndPlay(1); //Nouvelle pomme } } } function EndGame(){ Game=false; //Fin de la partie bouton._visible=true; head.nextFrame(); //Tête rouge //Tous les body (dont la queue) rouge for(b=0;b<=Snake.lg;b++) _root["body"+b].gotoAndPlay(2); Snd_move.stop(); //Bruit du déplacement arrêté Snd_end.start(); //Cri du serpent life_mc.nextFrame(); Life--; if(Life==0) title_txt.text="Fin"; }