diff --git a/Snake/Deplacement.h b/Snake/Deplacement.h new file mode 100644 index 0000000..08ec316 --- /dev/null +++ b/Snake/Deplacement.h @@ -0,0 +1,16 @@ +#ifndef DEPLACEMENT_H +#define DEPLACEMENT_H + +#include +#include +#include +#include + +#define H 42 +#define L 62 + +int CliqueTouche(int defaut, int *pause, int *fin); +void DeplacementQueue(int tab[H][L], int *sxmin, int *symin, int *direc,int); +void DeplacementTete(int tab[H][L], int *sxmax, int *symax, int direction, int *temoin, int *fin, int *point,int menu); + +#endif // DEPLACEMENT_H diff --git a/Snake/Menu.c b/Snake/Menu.c new file mode 100644 index 0000000..161f669 --- /dev/null +++ b/Snake/Menu.c @@ -0,0 +1,65 @@ +#include +#include +#include +#include "Menu.h" + +int MenuDebut(void){ + couleur c=CouleurParNom("green"); + ChoisirCouleurDessin(c); + RemplirRectangle(1300,100,300,200); + c=CouleurParNom("purple"); + ChoisirCouleurDessin(c); + RemplirRectangle(1300,400,300,200); + c=CouleurParNom("red"); + ChoisirCouleurDessin(c); + RemplirRectangle(1300,700,300,200); + c=CouleurParNom("white"); + ChoisirCouleurDessin(c); + EcrireTexte(1400,150,"Normal",1); + EcrireTexte(1400,450,"Mirror",1); + EcrireTexte(1400,750,"Hard",1); + EcrireTexte(200,100,"Snake de Maxim Lalane et Raphael Beau",2); + EcrireTexte(300,200,"Choisissez un mode de jeu : ",1); + EcrireTexte(350,250,"-Normal, un jeu snake tout ce qu'il y a de plus basique",1); + EcrireTexte(350,300,"-Mirror, les murs sur les cotes tombent, les boules violettes font leur apparition !",1); + EcrireTexte(350,350,"-Hard, Bon courage !!",1); + EcrireTexte(300,450,"Les regles sont simples :",1); + EcrireTexte(350,500,"Regle n1-Mangez un maximum de pommes rouges pour grandir",1); + EcrireTexte(350,550,"Regle n2-Ne vous prennez pas de murs, ou vous perdrez !",1); + EcrireTexte(350,600,"Regle n3-Malheur a vous si vous prennez un boule violette",1); + EcrireTexte(350,650,"Regle n4-N'oubliez pas de vous amuser ;)",1); + + while(1){ + if(SourisCliquee()==1){ + if(_X>=1300&&_Y>=100&&_X<=1600&&_Y<=300){ + return 1; + } + if(_X>=1300&&_Y>=400&&_X<=1600&&_Y<=600){ + return 2; + } + if(_X>=1300&&_Y>=700&&_X<=1600&&_Y<=900){ + return 3; + } + } + } +} +/*Initialisation de la page*/ +void InitEcran(void){ + InitialiserGraphique(); + CreerFenetre(10,10,1700,1000); + couleur c; + c=CouleurParNom("dark blue"); + ChoisirCouleurDessin(c); + RemplirRectangle(0,0,1700,1000); +} + +void MenuFinPerdu(void){ + couleur c=CouleurParNom("white"); + ChoisirCouleurDessin(c); + EcrireTexte(1300,200,"Dommage ! Peut-etre une prochaine fois",2); +} + +void MenuFinGagne(void){ + couleur c=CouleurParNom("white"); + EcrireTexte(1300,200,"Felicitations ! Vous etes trop fort !!",2); +} diff --git a/Snake/Menu.h b/Snake/Menu.h new file mode 100644 index 0000000..7aa7e96 --- /dev/null +++ b/Snake/Menu.h @@ -0,0 +1,14 @@ +#ifndef MENU_H +#define MENU_H + +#include +#include +#include +#include + +int MenuDebut(void); +void MenuFinGagne(void); +void MenuFinPerdu(void); +void InitEcran(void); + +#endif // MENU_H diff --git a/Snake/main.c b/Snake/main.c new file mode 100644 index 0000000..44e9f4c --- /dev/null +++ b/Snake/main.c @@ -0,0 +1,65 @@ +#include +#include +#include +#include + +#include "Afficher.h" +#include "ModifTab.h" +#include "Deplacement.h" +#include "Chemin.h" +#include "Menu.h" + +#define DELTA 1000000L; +#define DELTO 1000L +#define DELTI 900000L + +int main(void) { + int tab[H][L], direction = 0, temoin = 0, direc = 0, pause = 1,mode=0; + int sxmin = 17, symin = 30, sxmax = 27, symax = 30, fin = 0, point = 0, Compteur_Temps = 0; + int *pointeur_pause = &pause; + int *pointeur_sxmin = &sxmin; + int *pointeur_symin = &symin; + int *pointeur_direc = &direc; + int *pointeur_temoin = &temoin; + int *pointeur_sxmax = &sxmax; + int *pointeur_symax = &symax; + int *pointeur_fin = &fin; + int *pointeur_point = &point; + unsigned long suivant = Microsecondes() + DELTA; + unsigned long suivant2 = Microsecondes() + DELTO; + unsigned long suivant3 = Microsecondes() + DELTO; + InitEcran(); + mode=MenuDebut(); + init(tab,mode); + + while (1) { + if(fin!=1){ + Affiche(tab); + if (ToucheEnAttente() == 1) { + direction = Semage(tab, direction, sxmax, symax, pointeur_pause, pointeur_fin); + } + if (pause == 1) { + if (Microsecondes() > suivant) { + Compteur_Temps++; + DessinerTimer(Compteur_Temps); + suivant = Microsecondes() + DELTA; + } + if (Microsecondes() > suivant3) { + DeplacementQueue(tab, pointeur_sxmin, pointeur_symin, pointeur_direc,mode); + suivant3 = TempsArret(pointeur_temoin); + } + if (Microsecondes() > suivant2) { + DeplacementTete(tab, pointeur_sxmax, pointeur_symax, direction, pointeur_temoin, pointeur_fin, pointeur_point,mode); + suivant2 = Microsecondes() + DELTO; + } + } + } + else if (fin == 1) { + if(Gagne(tab)==0){ + MenuFinGagne(); + }else{ + MenuFinPerdu(); + } + } + } +} diff --git a/Snake/makefile b/Snake/makefile new file mode 100644 index 0000000..0f8c60c --- /dev/null +++ b/Snake/makefile @@ -0,0 +1,20 @@ +exec : Chemin.o Deplacement.o Afficher.o ModifTab.o main.o Menu.o + gcc -ansi -o exec Chemin.o Deplacement.o Afficher.o ModifTab.o main.o Menu.o -lgraph +run : exec + ./exec +Chemin.o : Chemin.c + gcc -c Chemin.c -lgraph +Deplacement.o : Deplacement.c + gcc -c Deplacement.c -lgraph +Afficher.o : Afficher.c + gcc -c Afficher.c -lgraph +ModifTab.o : ModifTab.c + gcc -c ModifTab.c -lgraph +main.o : main.c + gcc -c main.c -lgraph +Menu.o : Menu.c + gcc -c Menu.c -lgraph +clean : + rm -f *~ + rm -f *.o + rm exec