Améliration Graphique ( non fini ) + code plus facile a lire
This commit is contained in:
164
main.c
164
main.c
@@ -4,107 +4,12 @@
|
||||
#include <time.h>
|
||||
#include "evenement.h"
|
||||
#include "main.h"
|
||||
#include "GUI.h"
|
||||
#include "gui.h"
|
||||
#include "scene.h"
|
||||
|
||||
#define DELTA 100000L
|
||||
#define DELTA2 1000000L
|
||||
|
||||
int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respecter la norme des 40 lignes et 60 colonnes */
|
||||
{
|
||||
/* Calcul du reste de la division par 15 */
|
||||
int reste = nombre % 15;
|
||||
|
||||
/* Calcul de l'arrondi au multiple de 15 le plus proche */
|
||||
int arrondi = (reste <= 7) ? nombre - reste : nombre + (15 - reste);
|
||||
|
||||
return arrondi;
|
||||
}
|
||||
|
||||
PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent)
|
||||
|
||||
/* nb_pastille = int nombre de pastille voulue , p_pastilles est un pointeur d'un tableau de pixels qui sont des pastilles*/
|
||||
/*-Elles se génèrent à des endroits qui peuvent être les mêmes ou gêner le snake*/
|
||||
{
|
||||
int x_pastille,y_pastille,i;
|
||||
int ok = 0;
|
||||
PIXELS pastille;
|
||||
do{
|
||||
ok = 0;
|
||||
x_pastille= ArrondirPixel(rand()%W_GAME);
|
||||
y_pastille = ArrondirPixel(rand()%H_GAME);
|
||||
for(i=0;i<longueur_serpent;i++)
|
||||
{
|
||||
if(x_pastille == serpent[i].x && y_pastille == serpent[i].y)
|
||||
{
|
||||
ok = 1; /* Check si la pastille se genère sur une coordonné du serpent */
|
||||
}
|
||||
if(x_pastille == pastilles[i].x && y_pastille == pastilles[i].y)
|
||||
{
|
||||
ok = 1;
|
||||
}
|
||||
|
||||
}
|
||||
}while(ok);
|
||||
|
||||
if(x_pastille < DECALEMENT)
|
||||
{
|
||||
x_pastille =+ DECALEMENT;
|
||||
}
|
||||
|
||||
if(y_pastille < DECALEMENT)
|
||||
{
|
||||
y_pastille =+ DECALEMENT;
|
||||
}
|
||||
|
||||
|
||||
pastille.x = x_pastille ;
|
||||
pastille.y = y_pastille ;
|
||||
|
||||
return pastille;
|
||||
}
|
||||
|
||||
void InitialisationDuSerpent(PIXELS *p_serpent) /* L'initialisation du serpent */
|
||||
{
|
||||
int x_millieu = 0, y_millieu = 0 , compteur = 0;
|
||||
x_millieu = T_PIXEL*30; /* 30 = 60 colonnes divisé par 2*/
|
||||
y_millieu = T_PIXEL*20; /* 20 = 40 colonnes divisé par 2*/
|
||||
ChoisirEcran(2);
|
||||
ChargerImage("./images/SnakePart.png",x_millieu,y_millieu,0,0,T_PIXEL,T_PIXEL);
|
||||
|
||||
p_serpent[0].x = x_millieu;
|
||||
p_serpent[0].y = y_millieu;
|
||||
for(compteur=0;compteur<9;compteur++) /*Commence par 1 car p_serpent index 0 initialisées pour la tête et 2 + 2x9 = 10 couples de coordonnées 2D */
|
||||
{
|
||||
p_serpent[compteur+1].x = p_serpent[compteur].x+T_PIXEL;
|
||||
p_serpent[compteur+1].y = p_serpent[compteur].y;
|
||||
|
||||
ChargerImage("./images/SnakePart.png",p_serpent[compteur+1].x,p_serpent[compteur+1].y,0,0,T_PIXEL,T_PIXEL);
|
||||
}
|
||||
}
|
||||
|
||||
void DessinerScene(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) /* Dessine la scène */
|
||||
{
|
||||
couleur bg;
|
||||
couleur border;
|
||||
ChoisirEcran(2);
|
||||
border=CouleurParComposante(78, 93, 47);
|
||||
bg=CouleurParComposante(171, 204, 104);
|
||||
|
||||
ChoisirCouleurDessin(border);
|
||||
RemplirRectangle(0,0,930,630);
|
||||
|
||||
ChoisirCouleurDessin(bg);
|
||||
RemplirRectangle(0,630,930,650);
|
||||
|
||||
ChoisirCouleurDessin(border);
|
||||
RemplirRectangle(0,650,930,15);
|
||||
|
||||
ChoisirCouleurDessin(bg);
|
||||
RemplirRectangle(T_PIXEL,T_PIXEL,W_GAME,H_GAME);
|
||||
InitialiserPastilles(pastilles,serpent,longueur_serpent);
|
||||
InitialisationDuSerpent(serpent);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
unsigned char pause = 0;
|
||||
@@ -117,6 +22,7 @@ int main()
|
||||
int minutes = 0;
|
||||
unsigned long int vitesse = DELTA;
|
||||
int valeur_retourne = 0;
|
||||
unsigned char perdu = 0;
|
||||
|
||||
size_t longueur_serpent = 10;
|
||||
size_t longueur_pastilles = PASTILLES;
|
||||
@@ -141,16 +47,43 @@ int main()
|
||||
DessinerScene(pastilles,serpent,longueur_serpent);
|
||||
while(window_on)
|
||||
{
|
||||
ChoisirEcran(0);
|
||||
Menu();
|
||||
if (ToucheEnAttente() == 1)
|
||||
if(perdu == 1)
|
||||
{
|
||||
switch (Touche())
|
||||
PerduGUI();
|
||||
if (ToucheEnAttente() == 1)
|
||||
{
|
||||
case XK_space:
|
||||
game_on=1;
|
||||
DessinerScene(pastilles,serpent,longueur_serpent);
|
||||
break;
|
||||
switch (Touche())
|
||||
{
|
||||
case XK_Return:
|
||||
perdu = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Menu();
|
||||
if (ToucheEnAttente() == 1)
|
||||
{
|
||||
switch (Touche())
|
||||
{
|
||||
case XK_Return :
|
||||
game_on=1;
|
||||
secondes = 0;
|
||||
minutes = 0;
|
||||
score = 0;
|
||||
vitesse = DELTA;
|
||||
longueur_serpent = 10;
|
||||
direction = 0;
|
||||
direction_davant = 0;
|
||||
DessinerScene(pastilles,serpent,longueur_serpent);
|
||||
break;
|
||||
case XK_Escape:
|
||||
free(serpent);
|
||||
free(pastilles);
|
||||
FermerGraphique();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,16 +128,23 @@ int main()
|
||||
pause=1;
|
||||
break;
|
||||
}
|
||||
else if(pause == 1)
|
||||
{
|
||||
pause=0;
|
||||
break;
|
||||
|
||||
case XK_Escape:
|
||||
if(pause == 1)
|
||||
{
|
||||
free(serpent);
|
||||
free(pastilles);
|
||||
FermerGraphique();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if(pause==1)
|
||||
{
|
||||
ChoisirEcran(0);
|
||||
Pause();
|
||||
}
|
||||
|
||||
@@ -226,6 +166,7 @@ int main()
|
||||
|
||||
if (Microsecondes()>suivant)
|
||||
{
|
||||
serpent = (PIXELS*) realloc(serpent,longueur_serpent * sizeof(PIXELS));
|
||||
suivant=Microsecondes()+vitesse;
|
||||
AfficherTimerEtScore(&score,minutes,secondes);
|
||||
direction_davant = direction; /* Check si le serpent à le droit de changer de direction */
|
||||
@@ -233,10 +174,10 @@ int main()
|
||||
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)
|
||||
{
|
||||
perdu=1;
|
||||
game_on=0;
|
||||
}
|
||||
}
|
||||
@@ -244,7 +185,8 @@ int main()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
free(serpent);
|
||||
free(pastilles);
|
||||
FermerGraphique();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user