diff --git a/Menu.c b/Menu.c new file mode 100644 index 0000000..7a52068 --- /dev/null +++ b/Menu.c @@ -0,0 +1,25 @@ +#include +#include +#include + +int main(void){ + InitialiserGraphique(); + CreerFenetre(10,10,1700,1000); + couleur c=CouleurParNom("red"); + ChoisirCouleurDessin(c); + RemplirRectangle(1300,100,300,200); + c=CouleurParNom("purple"); + ChoisirCouleurDessin(c); + RemplirRectangle(1300,400,300,200); + + while(1){ + if(SourisCliquee()==1){ + if(_X>=1300&&_Y>=100&&_X<=1600&&_Y<=300){ + return EXIT_SUCCESS; + } + if(_X>=1300&&_Y>=300&&_X>=&&_Y<=){ + return EXIT_SUCCESS; + } + } + } +} diff --git a/Pause.c b/Pause.c new file mode 100644 index 0000000..a638aeb --- /dev/null +++ b/Pause.c @@ -0,0 +1,426 @@ +#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; + } + + } +} diff --git a/Points.c b/Points.c new file mode 100644 index 0000000..e8a17c1 --- /dev/null +++ b/Points.c @@ -0,0 +1,391 @@ +#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 100L + +/*affichage du 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){ + 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]==9){ + c=CouleurParNom("yellow"); + ChoisirCouleurDessin(c); + RemplirRectangle(posx,posy,20,20); + } + + if(tab[i][j]==7){ + c=CouleurParNom("brown"); + ChoisirCouleurDessin(c); + RemplirRectangle(posx,posy,20,20); + } + + if(tab[i][j]==8){ + c=CouleurParNom("green"); + ChoisirCouleurDessin(c); + RemplirRectangle(posx,posy,20,20); + } + + if(tab[i][j]==6){ + c=CouleurParNom("purple"); + ChoisirCouleurDessin(c); + RemplirRectangle(posx,posy,20,20); + } + 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; +} +int CliqueTouche(int defaut){ + 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; + } + 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("white"); + 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("white"); + 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,int type){ + int ia,ja; + if(nb==0){ + return 1; + } + srand(time(NULL)); + while(nb!=0){ + ia=rand()%40; + ja=rand()%60; + if(tab[ia][ja]==0){ + if(type==1){ + /*pommes*/ + tab[ia][ja]=30; + }else if(type==2){ + /*pommes pour mur*/ + tab[ia][ja]=50; + }else if(type==3){ + /*mur*/ + tab[ia][ja]=40; + } + nb=nb-1; + } + } +} +/*initialisation du plateau de jeu*/ +void init(int tab[H][L]){ + /*creation 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); + /*initialisation de la grille a 0(vert)*/ + for(i=1;isuivant){ + n++; + DessinerTimer(n); + suivant=Microsecondes()+DELTA; + } + + if(Microsecondes()>suivant3){ + if(direc==0){ + sxmin=sxmin+1; + tab[sxmin][symin]=0; + direc=VoirCase(tab,sxmin,symin,direc); + } + if(direc==1){ + symin=symin-1; + tab[sxmin][symin]=0; + direc=VoirCase(tab,sxmin,symin,direc); + } + if(direc==2){ + sxmin=sxmin-1; + tab[sxmin][symin]=0; + direc=VoirCase(tab,sxmin,symin,direc); + } + if(direc==3){ + symin=symin+1; + tab[sxmin][symin]=0; + direc=VoirCase(tab,sxmin,symin,direc); + } + suivant3=Microsecondes()+DELTO; + } + + /*deplacement tete*/ + if(Microsecondes()>suivant2){ + /*haut*/ + if(direction==2){ + if(VerifChemin(tab,sxmax-1,symax)==1){ + sxmax=sxmax-1; + tab[sxmax][symax]=1; + }else if(VerifChemin(tab,sxmax-1,symax)==3){ + sxmax=sxmax-1; + tab[sxmax][symax]=1; + point=point+5; + DessinerScore(point); + Pastille(tab,1,1); + }else if(VerifChemin(tab,sxmax-1,symax)==2){ + sxmax=sxmax-1; + tab[sxmax][symax]=1; + Pastille(tab,5,3); + Pastille(tab,1,2); + }else{ + fin=1; + } + } + /*droite*/ + if(direction==3){ + if(VerifChemin(tab,sxmax,symax+1)==1){ + symax=symax+1; + tab[sxmax][symax]=1; + }else if(VerifChemin(tab,sxmax,symax+1)==3){ + symax=symax+1; + tab[sxmax][symax]=1; + point=point+5; + DessinerScore(point); + Pastille(tab,1,1); + }else if(VerifChemin(tab,sxmax,symax+1)==2){ + symax=symax+1; + tab[sxmax][symax]=1;; + Pastille(tab,5,3); + Pastille(tab,1,2); + }else{ + fin=1; + } + } + /*gauche*/ + if(direction==1){ + if(VerifChemin(tab,sxmax,symax-1)==1){ + symax=symax-1; + tab[sxmax][symax]=1; + } + else if(VerifChemin(tab,sxmax,symax-1)==3){ + symax=symax-1; + tab[sxmax][symax]=1; + point=point+5; + DessinerScore(point); + Pastille(tab,1,1); + }else if(VerifChemin(tab,sxmax,symax-1)==2){ + symax=symax-1; + tab[sxmax][symax]=1;; + Pastille(tab,5,3); + Pastille(tab,1,2); + }else{ + fin=1; + } + } + /*bas*/ + if(direction==0){ + if(VerifChemin(tab,sxmax+1,symax)==1){ + sxmax=sxmax+1; + tab[sxmax][symax]=1; + } + else if(VerifChemin(tab,sxmax+1,symax)==3){ + sxmax=sxmax+1; + tab[sxmax][symax]=1; + point=point+5; + DessinerScore(point); + Pastille(tab,1,1); + }else if(VerifChemin(tab,sxmax+1,symax)==2){ + sxmax=sxmax+1; + tab[sxmax][symax]=1;; + Pastille(tab,5,3); + Pastille(tab,1,2); + }else{ + fin=1; + } + } + suivant2=Microsecondes()+DELTO; + } + + + if(fin==1){ + return EXIT_SUCCESS; + } + + } +} + diff --git a/SerpentFonction.c b/SerpentFonction.c new file mode 100644 index 0000000..5c719a3 --- /dev/null +++ b/SerpentFonction.c @@ -0,0 +1,418 @@ +#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; + } + 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; + } + + } +} + +