#include <graph.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include "main.h" #include "gui.h" #include "scene.h" void AfficherTimerEtScore(long unsigned int *score, int minutes,int secondes) /*Afficher le temps passé et le score*/ { char buf[100]; char buff[100]; /* Stockage du score et du timer */ couleur text; text=CouleurParComposante(78, 93, 47); ChoisirEcran(1); CopierZone(2,1,0,0,930,710,0,0); ChoisirCouleurDessin(text); snprintf(buf,100,"TEMPS : %02d:%02d",minutes,secondes); snprintf(buff,100,"SCORE : %07ld",*score); EcrireTexte(60,695,buf,2); EcrireTexte(600,695,buff,2); CopierZone(1,0,0,0,930,710,0,0); } int MourrirSerpent(PIXELS *serpent,PIXELS *obstacle, unsigned long longueur_serpent,unsigned long longueur_obstacle) { unsigned long i = 0; for(i=1;i<longueur_serpent;i++) { if(serpent[0].x == serpent[i].x && serpent[0].y == serpent[i].y ) { return 1; } } for(i=1;i<longueur_obstacle;i++) { if(serpent[0].x == obstacle[i].x && serpent[0].y == obstacle[i].y ) { return 1; } } if (serpent[0].x<=0 || serpent[0].x>W_GAME || serpent[0].y<=0 || serpent[0].y>H_GAME) { return 1; } return 0; } int MangerPastille(PIXELS *serpent, PIXELS* pastilles,PIXELS *obstacle,unsigned long *score,unsigned long longueur_serpent,unsigned long longueur_obstacle,unsigned long int *vitesse) { int i = 0; for(i=0;i<PASTILLES;i++) { if(serpent[0].x == pastilles[i].x && serpent[0].y == pastilles[i].y) { pastilles[i] = gen_pastille(serpent,pastilles,obstacle,longueur_serpent,longueur_obstacle); ChargerImage("./images/PommePastille.png",pastilles[i].x,pastilles[i].y,0,0,T_PIXEL,T_PIXEL); *score+=5; *vitesse/=1.008; return 1; } } return 0; } void DeplacementSerpent(int direction ,PIXELS *serpent, unsigned long longueur) { int tempX = serpent[0].x; int tempY = serpent[0].y; unsigned long i; couleur bg; ChoisirEcran(2); bg=CouleurParComposante(171, 204, 104); ChoisirCouleurDessin(bg); RemplirRectangle(serpent[longueur-1].x,serpent[longueur-1].y,T_PIXEL,T_PIXEL); for (i = 1; i <= longueur; i++) { int tempX2 = serpent[i].x; int tempY2 = serpent[i].y; serpent[i].x = tempX; serpent[i].y = tempY; tempX = tempX2; tempY = tempY2; } if(direction == 0) /* Direction vers la gauche */ { serpent[0].x-=T_PIXEL; ChargerImage("./images/SnakePart.png",serpent[0].x,serpent[0].y,0,0,T_PIXEL,T_PIXEL); } else if(direction == 1) /* Direction vers le haut */ { serpent[0].y-=T_PIXEL; ChargerImage("./images/SnakePart.png",serpent[0].x,serpent[0].y,0,0,T_PIXEL,T_PIXEL); } else if(direction == 2) /* Direction vers la droite */ { serpent[0].x+=T_PIXEL; ChargerImage("./images/SnakePart.png",serpent[0].x,serpent[0].y,0,0,T_PIXEL,T_PIXEL); } else if(direction == 3) /* Direction vers le bas */ { serpent[0].y+=T_PIXEL; ChargerImage("./images/SnakePart.png",serpent[0].x,serpent[0].y,0,0,T_PIXEL,T_PIXEL); } } int Serpent(PIXELS *serpent,PIXELS *pastilles,PIXELS *obstacle,unsigned long *score,unsigned long *longueur_serpent,unsigned long longueur_obstacle,unsigned long int *vitesse,int direction) { if(MourrirSerpent(serpent,obstacle,*longueur_serpent,longueur_obstacle) == 1) { return 2; } DeplacementSerpent(direction,serpent,*longueur_serpent); if(MangerPastille(serpent,pastilles,obstacle,score,*longueur_serpent,longueur_obstacle,vitesse) == 1) { *longueur_serpent+=2; return 1; } return 0; }