Ajout Menu Start, Pause
This commit is contained in:
parent
7c0621f36a
commit
114f3dbb39
18
GUI.c
Normal file
18
GUI.c
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <graph.h>
|
||||||
|
|
||||||
|
int Menu()
|
||||||
|
{
|
||||||
|
ChargerImage("./images/Menu.png",0,0,0,0,930,710);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Pause()
|
||||||
|
{
|
||||||
|
ChargerImage("./images/Pause.png",0,0,0,0,930,710);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Reinitialiser()
|
||||||
|
{
|
||||||
|
CopierZone(8,0,0,0,930,710,0,0);
|
||||||
|
}
|
8
GUI.h
Normal file
8
GUI.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef GUI_H
|
||||||
|
#define GUI_H
|
||||||
|
|
||||||
|
void Pause();
|
||||||
|
void Reinitialiser();
|
||||||
|
int AfficherGUI(unsigned char menu);
|
||||||
|
|
||||||
|
#endif
|
5
Makefile
5
Makefile
@ -3,7 +3,7 @@ CFLAGS = -Wall -Wextra
|
|||||||
|
|
||||||
all: prog
|
all: prog
|
||||||
|
|
||||||
prog: main.o evenement.o
|
prog: main.o evenement.o GUI.o
|
||||||
$(CC) -o $@ $^ -lgraph
|
$(CC) -o $@ $^ -lgraph
|
||||||
|
|
||||||
main.o: main.c evenement.h
|
main.o: main.c evenement.h
|
||||||
@ -12,5 +12,8 @@ main.o: main.c evenement.h
|
|||||||
evenement.o: evenement.c evenement.h
|
evenement.o: evenement.c evenement.h
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
$(CC) $(CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
GUI.o: GUI.c GUI.h
|
||||||
|
$(CC) $(CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o prog
|
rm -f *.o prog
|
||||||
|
29
evenement.c
29
evenement.c
@ -1,8 +1,9 @@
|
|||||||
#include <graph.h>
|
#include <graph.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include <time.h>
|
#include "GUI.h"
|
||||||
|
|
||||||
void AfficherTimerEtScore(long unsigned int *score, int minutes,int secondes) /*Afficher le temps passé et le score*/
|
void AfficherTimerEtScore(long unsigned int *score, int minutes,int secondes) /*Afficher le temps passé et le score*/
|
||||||
{
|
{
|
||||||
@ -79,16 +80,10 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
|
|||||||
bg=CouleurParComposante(171, 204, 104);
|
bg=CouleurParComposante(171, 204, 104);
|
||||||
ChoisirCouleurDessin(bg);
|
ChoisirCouleurDessin(bg);
|
||||||
|
|
||||||
if(serpent[longueur-1].x > 900 || serpent[longueur-1].x < 0)
|
|
||||||
{
|
|
||||||
serpent[longueur-1].x = 30;
|
|
||||||
serpent[longueur-1].y = 710; /* Valeurs toujours de couleurs verte */
|
|
||||||
}
|
|
||||||
|
|
||||||
RemplirRectangle(serpent[longueur-1].x,serpent[longueur-1].y,T_PIXEL,T_PIXEL);
|
RemplirRectangle(serpent[longueur-1].x,serpent[longueur-1].y,T_PIXEL,T_PIXEL);
|
||||||
|
|
||||||
|
for (i = 1; i <= longueur; i++)
|
||||||
for (i = 1; i <= longueur; i++) {
|
{
|
||||||
int tempX2 = serpent[i].x;
|
int tempX2 = serpent[i].x;
|
||||||
int tempY2 = serpent[i].y;
|
int tempY2 = serpent[i].y;
|
||||||
|
|
||||||
@ -99,6 +94,7 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
|
|||||||
tempY = tempY2;
|
tempY = tempY2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(direction == 0) /* Direction vers la gauche */
|
if(direction == 0) /* Direction vers la gauche */
|
||||||
{
|
{
|
||||||
serpent[0].x-=T_PIXEL;
|
serpent[0].x-=T_PIXEL;
|
||||||
@ -119,4 +115,19 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
|
|||||||
serpent[0].y+=T_PIXEL;
|
serpent[0].y+=T_PIXEL;
|
||||||
ChargerImage("./images/SnakePart.png",serpent[0].x,serpent[0].y,0,0,T_PIXEL,T_PIXEL);
|
ChargerImage("./images/SnakePart.png",serpent[0].x,serpent[0].y,0,0,T_PIXEL,T_PIXEL);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int Serpent(PIXELS *serpent,PIXELS *pastilles,unsigned long *score,int *longueur_serpent,unsigned long int *vitesse,int direction)
|
||||||
|
{
|
||||||
|
if(MourrirSerpent(serpent,*longueur_serpent) == 1)
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
DeplacementSerpent(direction,serpent,*longueur_serpent);
|
||||||
|
if(MangerPastille(serpent,pastilles,score,*longueur_serpent,vitesse) == 1)
|
||||||
|
{
|
||||||
|
*longueur_serpent+=2;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
@ -15,5 +15,7 @@ int PastilleSurSerpent(PIXELS pastille, PIXELS *serpent, int longueur_serpent);
|
|||||||
|
|
||||||
int MourrirSerpent(PIXELS *serpent, int longueur_serpent);
|
int MourrirSerpent(PIXELS *serpent, int longueur_serpent);
|
||||||
|
|
||||||
|
int Serpent(PIXELS *serpent,PIXELS *pastilles,unsigned long *score,int *longueur_serpent,unsigned long int *vitesse,int direction);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
BIN
images/Menu.png
Normal file
BIN
images/Menu.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 40 KiB |
BIN
images/PERDU.png
Normal file
BIN
images/PERDU.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 38 KiB |
BIN
images/Pause.png
Normal file
BIN
images/Pause.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 41 KiB |
166
main.c
166
main.c
@ -4,6 +4,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "evenement.h"
|
#include "evenement.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "GUI.h"
|
||||||
|
|
||||||
#define DELTA 100000L
|
#define DELTA 100000L
|
||||||
#define DELTA2 1000000L
|
#define DELTA2 1000000L
|
||||||
@ -110,10 +111,12 @@ int main()
|
|||||||
unsigned long score = 0;
|
unsigned long score = 0;
|
||||||
unsigned long suivant;
|
unsigned long suivant;
|
||||||
unsigned long suivant2;
|
unsigned long suivant2;
|
||||||
int go_on=1;
|
int game_on=0;
|
||||||
|
int window_on=1;
|
||||||
int secondes = 0;
|
int secondes = 0;
|
||||||
int minutes = 0;
|
int minutes = 0;
|
||||||
unsigned long int vitesse = DELTA;
|
unsigned long int vitesse = DELTA;
|
||||||
|
int valeur_retourne = 0;
|
||||||
|
|
||||||
size_t longueur_serpent = 10;
|
size_t longueur_serpent = 10;
|
||||||
size_t longueur_pastilles = PASTILLES;
|
size_t longueur_pastilles = PASTILLES;
|
||||||
@ -136,93 +139,112 @@ int main()
|
|||||||
CreerFenetre(10,10,W_WINDOW,H_WINDOW); /* Peut être changer cette ligne avec la fonction Maxx et Maxy fournie dans graph.h ??*/
|
CreerFenetre(10,10,W_WINDOW,H_WINDOW); /* Peut être changer cette ligne avec la fonction Maxx et Maxy fournie dans graph.h ??*/
|
||||||
ChoisirTitreFenetre("SNAKE SAE11 IN C");
|
ChoisirTitreFenetre("SNAKE SAE11 IN C");
|
||||||
DessinerScene(pastilles,serpent,longueur_serpent);
|
DessinerScene(pastilles,serpent,longueur_serpent);
|
||||||
|
while(window_on)
|
||||||
while(go_on) /* Lancement du cycle pour les Inputs et le Jeu*/
|
{
|
||||||
{
|
ChoisirEcran(0);
|
||||||
|
Menu();
|
||||||
|
if (ToucheEnAttente() == 1)
|
||||||
if (ToucheEnAttente() == 1)
|
|
||||||
{
|
{
|
||||||
switch (Touche())
|
switch (Touche())
|
||||||
{
|
{
|
||||||
case XK_Up:
|
case XK_space:
|
||||||
direction = 1;
|
game_on=1;
|
||||||
if(direction_davant == 3 && direction == 1)
|
DessinerScene(pastilles,serpent,longueur_serpent);
|
||||||
{
|
break;
|
||||||
direction = direction_davant;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case XK_Down:
|
|
||||||
direction = 3;
|
|
||||||
if(direction_davant == 1 && direction == 3)
|
|
||||||
{
|
|
||||||
direction = direction_davant; /* Changements de direction du serpent*/
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case XK_Left:
|
|
||||||
direction = 0;
|
|
||||||
if(direction_davant == 2 && direction == 0)
|
|
||||||
{
|
|
||||||
direction = direction_davant;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case XK_Right:
|
|
||||||
direction = 2;
|
|
||||||
if(direction_davant == 0 && direction == 2)
|
|
||||||
{
|
|
||||||
direction = direction_davant;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case XK_space:
|
|
||||||
if(pause == 0)
|
|
||||||
{
|
|
||||||
pause = 1 ;
|
|
||||||
} /* Faire pause */
|
|
||||||
else if(pause == 1)
|
|
||||||
{
|
|
||||||
pause = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{ if(pause==0)
|
while(game_on) /* Lancement du cycle pour les Inputs et le Jeu*/
|
||||||
|
{
|
||||||
|
if (ToucheEnAttente() == 1)
|
||||||
{
|
{
|
||||||
|
switch (Touche())
|
||||||
if (Microsecondes()>suivant2)
|
|
||||||
{
|
{
|
||||||
secondes++;
|
case XK_Up:
|
||||||
if(secondes == 60)
|
direction = 1;
|
||||||
{
|
if(direction_davant == 3 && direction == 1)
|
||||||
minutes++;
|
{
|
||||||
secondes = 0;
|
direction = direction_davant;
|
||||||
}
|
}
|
||||||
suivant2=Microsecondes()+DELTA2;
|
break;
|
||||||
|
case XK_Down:
|
||||||
|
direction = 3;
|
||||||
|
if(direction_davant == 1 && direction == 3)
|
||||||
|
{
|
||||||
|
direction = direction_davant; /* Changements de direction du serpent*/
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case XK_Left:
|
||||||
|
direction = 0;
|
||||||
|
if(direction_davant == 2 && direction == 0)
|
||||||
|
{
|
||||||
|
direction = direction_davant;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case XK_Right:
|
||||||
|
direction = 2;
|
||||||
|
if(direction_davant == 0 && direction == 2)
|
||||||
|
{
|
||||||
|
direction = direction_davant;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case XK_space:
|
||||||
|
if(pause ==0)
|
||||||
|
{
|
||||||
|
pause=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if(pause == 1)
|
||||||
|
{
|
||||||
|
pause=0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Microsecondes()>suivant)
|
if(pause==1)
|
||||||
{
|
{
|
||||||
suivant=Microsecondes()+vitesse;
|
ChoisirEcran(0);
|
||||||
AfficherTimerEtScore(&score,minutes,secondes);
|
Pause();
|
||||||
direction_davant = direction; /* Check si le serpent à le droit de changer de direction */
|
}
|
||||||
if(MourrirSerpent(serpent,longueur_serpent))
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ if(pause==0)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (Microsecondes()>suivant2)
|
||||||
{
|
{
|
||||||
FermerGraphique();
|
secondes++;
|
||||||
free(serpent);
|
if(secondes == 60)
|
||||||
free(pastilles);
|
{
|
||||||
return EXIT_FAILURE;
|
minutes++;
|
||||||
|
secondes = 0;
|
||||||
|
}
|
||||||
|
suivant2=Microsecondes()+DELTA2;
|
||||||
}
|
}
|
||||||
DeplacementSerpent(direction,serpent,longueur_serpent);
|
|
||||||
if(MangerPastille(serpent,pastilles,&score,longueur_serpent,&vitesse) == 1)
|
if (Microsecondes()>suivant)
|
||||||
{
|
{
|
||||||
longueur_serpent+=2;
|
suivant=Microsecondes()+vitesse;
|
||||||
serpent = (PIXELS*) realloc(serpent,longueur_serpent * sizeof(PIXELS));
|
AfficherTimerEtScore(&score,minutes,secondes);
|
||||||
|
direction_davant = direction; /* Check si le serpent à le droit de changer de direction */
|
||||||
|
|
||||||
|
valeur_retourne = Serpent(serpent,pastilles,&score,&longueur_serpent,&vitesse,direction);
|
||||||
|
if(valeur_retourne == 1)
|
||||||
|
{
|
||||||
|
serpent = (PIXELS*) realloc(serpent,longueur_serpent * sizeof(PIXELS));
|
||||||
|
}
|
||||||
|
else if (valeur_retourne == 2)
|
||||||
|
{
|
||||||
|
game_on=0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FermerGraphique();
|
FermerGraphique();
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
BIN
prog
Executable file
BIN
prog
Executable file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user