Ajout Menu Start, Pause
This commit is contained in:
166
main.c
166
main.c
@@ -4,6 +4,7 @@
|
||||
#include <time.h>
|
||||
#include "evenement.h"
|
||||
#include "main.h"
|
||||
#include "GUI.h"
|
||||
|
||||
#define DELTA 100000L
|
||||
#define DELTA2 1000000L
|
||||
@@ -110,10 +111,12 @@ int main()
|
||||
unsigned long score = 0;
|
||||
unsigned long suivant;
|
||||
unsigned long suivant2;
|
||||
int go_on=1;
|
||||
int game_on=0;
|
||||
int window_on=1;
|
||||
int secondes = 0;
|
||||
int minutes = 0;
|
||||
unsigned long int vitesse = DELTA;
|
||||
int valeur_retourne = 0;
|
||||
|
||||
size_t longueur_serpent = 10;
|
||||
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 ??*/
|
||||
ChoisirTitreFenetre("SNAKE SAE11 IN C");
|
||||
DessinerScene(pastilles,serpent,longueur_serpent);
|
||||
|
||||
while(go_on) /* Lancement du cycle pour les Inputs et le Jeu*/
|
||||
{
|
||||
|
||||
|
||||
if (ToucheEnAttente() == 1)
|
||||
while(window_on)
|
||||
{
|
||||
ChoisirEcran(0);
|
||||
Menu();
|
||||
if (ToucheEnAttente() == 1)
|
||||
{
|
||||
switch (Touche())
|
||||
{
|
||||
case XK_Up:
|
||||
direction = 1;
|
||||
if(direction_davant == 3 && direction == 1)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
case XK_space:
|
||||
game_on=1;
|
||||
DessinerScene(pastilles,serpent,longueur_serpent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ if(pause==0)
|
||||
|
||||
while(game_on) /* Lancement du cycle pour les Inputs et le Jeu*/
|
||||
{
|
||||
if (ToucheEnAttente() == 1)
|
||||
{
|
||||
|
||||
if (Microsecondes()>suivant2)
|
||||
switch (Touche())
|
||||
{
|
||||
secondes++;
|
||||
if(secondes == 60)
|
||||
{
|
||||
minutes++;
|
||||
secondes = 0;
|
||||
}
|
||||
suivant2=Microsecondes()+DELTA2;
|
||||
case XK_Up:
|
||||
direction = 1;
|
||||
if(direction_davant == 3 && direction == 1)
|
||||
{
|
||||
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;
|
||||
break;
|
||||
}
|
||||
else if(pause == 1)
|
||||
{
|
||||
pause=0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (Microsecondes()>suivant)
|
||||
{
|
||||
suivant=Microsecondes()+vitesse;
|
||||
AfficherTimerEtScore(&score,minutes,secondes);
|
||||
direction_davant = direction; /* Check si le serpent à le droit de changer de direction */
|
||||
if(MourrirSerpent(serpent,longueur_serpent))
|
||||
if(pause==1)
|
||||
{
|
||||
ChoisirEcran(0);
|
||||
Pause();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{ if(pause==0)
|
||||
{
|
||||
|
||||
if (Microsecondes()>suivant2)
|
||||
{
|
||||
FermerGraphique();
|
||||
free(serpent);
|
||||
free(pastilles);
|
||||
return EXIT_FAILURE;
|
||||
secondes++;
|
||||
if(secondes == 60)
|
||||
{
|
||||
minutes++;
|
||||
secondes = 0;
|
||||
}
|
||||
suivant2=Microsecondes()+DELTA2;
|
||||
}
|
||||
DeplacementSerpent(direction,serpent,longueur_serpent);
|
||||
if(MangerPastille(serpent,pastilles,&score,longueur_serpent,&vitesse) == 1)
|
||||
{
|
||||
longueur_serpent+=2;
|
||||
serpent = (PIXELS*) realloc(serpent,longueur_serpent * sizeof(PIXELS));
|
||||
|
||||
if (Microsecondes()>suivant)
|
||||
{
|
||||
suivant=Microsecondes()+vitesse;
|
||||
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();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user