#include #include #include #include /*taille 2 de plus pour avoir les bordures du plateau de jeu*/ #define H 42 #define L 62 /*initialisation des compteur(timer et deplacement du serpent*/ #define DELTA 1000000L #define DELTO 1000L #define DELTI 300000L /*affichage di plateau de jeu en fonction du tableau*/ void AfficheTab(int tab[H][L], int posx, int posy, int i, int j){ couleur c; if(tab[i][j]==0){ c=CouleurParNom("black"); ChoisirCouleurDessin(c); RemplirRectangle(posx,posy,20,20); } if(tab[i][j]==40){ c=CouleurParNom("dark grey"); ChoisirCouleurDessin(c); RemplirRectangle(posx,posy,20,20); c=CouleurParNom("black"); ChoisirCouleurDessin(c); DessinerRectangle(posx+2,posy+2,16,16); } if(tab[i][j]==1||tab[i][j]==9||tab[i][j]==7||tab[i][j]==8||tab[i][j]==6){ c=CouleurParNom("dark orange"); ChoisirCouleurDessin(c); RemplirRectangle(posx,posy,20,20); c=CouleurParNom("brown"); ChoisirCouleurDessin(c); RemplirArc(posx+5,posy+5,10,10,360,360); } if(tab[i][j]==30){ c=CouleurParNom("red"); ChoisirCouleurDessin(c); RemplirArc(posx,posy,20,20,360,360); } if(tab[i][j]==50){ c=CouleurParNom("purple"); ChoisirCouleurDessin(c); RemplirArc(posx,posy,20,20,360,360); } } /*parcours du tableau pour rendu graphique*/ void Affiche(int tab[H][L]){ int i,j,posx=0,posy=0; for(i=0;i<=H;i++){ for(j=0;j<=L;j++){ AfficheTab(tab, posx, posy, i, j); posx=posx+20; } posx=0; posy=posy+20; } posx=0; posy=0; } /*verifie les touches cliquée par le joueur*/ int CliqueTouche(int defaut,int* pause,int* fin){ switch(Touche()){ case XK_Up: if(defaut!=0){ defaut=2; return defaut; } case XK_Down: if(defaut!=2){ defaut=0; return defaut; } case XK_Right: if(defaut!=1){ defaut=3; return defaut; } case XK_Left: if(defaut!=3){ defaut=1; return defaut; } case XK_space: if(*pause==1){ *pause=0; } else if(*pause==0){ *pause=1; } return defaut; case XK_Escape: *fin=1; return defaut; default : return defaut; } } /*affichage du timer*/ void DessinerTimer(int n){ couleur c; char buf[100]; c=CouleurParNom("dark blue"); ChoisirCouleurDessin(c); RemplirRectangle(0,875,200,100); c=CouleurParNom("red"); ChoisirCouleurDessin(c); snprintf(buf,100,"time : %d",n); EcrireTexte(50,900,buf,2); } /*affichage du score*/ void DessinerScore(int n){ couleur c; char buf[100]; c=CouleurParNom("dark blue"); ChoisirCouleurDessin(c); RemplirRectangle(200,875,200,100); c=CouleurParNom("yellow"); ChoisirCouleurDessin(c); snprintf(buf,100,"score : %d",n); EcrireTexte(250,900,buf,2); } /*Mise en place de pastilles le plateau de jeu en fonction de ce que l'on veut placer */ int Pastille(int tab[H][L],int nb_de_pastilles,int type_pastille){ int ia,ja; if(nb_de_pastilles==0){ return 1; } srand(time(NULL)); while(nb_de_pastilles!=0){ ia=rand()%40; ja=rand()%60; if(tab[ia][ja]==0){ if(type_pastille==1){ /*pommes*/ tab[ia][ja]=30; }else if(type_pastille==2){ /*pommes pour mur*/ tab[ia][ja]=50; }else if(type_pastille==3){ /*mur*/ tab[ia][ja]=40; } nb_de_pastilles=nb_de_pastilles-1; } } } /*initialisation du plateau de jeu*/ void init(int tab[H][L]){ /*creation de la page*/ InitialiserGraphique(); CreerFenetre(10,10,1700,1000); int i,j; couleur c; c=CouleurParNom("dark blue"); ChoisirCouleurDessin(c); RemplirRectangle(0,0,1700,1000); DessinerScore(0); DessinerTimer(0); /*initialisation de la grille a 0(vert)*/ for(i=1;isuivant){ Compteur_Temps++; DessinerTimer(Compteur_Temps); suivant=Microsecondes()+DELTA; } /*deplacement queue*/ if(Microsecondes()>suivant3){ DeplacementQueue(tab,pointeur_sxmin,pointeur_symin,pointeur_direc); suivant3=TempsArret(pointeur_temoin); } /*deplacement tete*/ if(Microsecondes()>suivant2){ DeplacementTete(tab,pointeur_sxmax,pointeur_symax,direction,pointeur_temoin,pointeur_fin,pointeur_point); suivant2=Microsecondes()+DELTO; } } if(fin==1){ return EXIT_SUCCESS; } } }