Ajout de tableaux dynamiques et améliorations DeplacementSerpent()

This commit is contained in:
Vincent TEISSIER 2023-11-24 11:12:49 +01:00
parent 99c2c072d8
commit a8ffbad3da

78
main.c

@ -13,8 +13,30 @@
#define DECALEMENT 30
#define delta 10000L
#define delta 1000000L
void DeplacementSerpent(int direction ,int *serpent, int longueur)
{
int i = 0;
if(direction == 0) /* Direction vers la gauche */
{
printf("Gauche %d\n",direction);
}
else if(direction == 1) /* Direction vers le haut */
{
printf("Haut %d\n",direction);
}
else if(direction == 2) /* Direction vers la droite */
{
printf("Droite %d\n",direction);
}
else if(direction == 3) /* Direction vers le bas */
{
printf("Bas %d\n",direction);
}
}
int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respecter la norme des 40 lignes et 60 colonnes */
{
@ -31,7 +53,7 @@ void gen_pastille(int nb_pastille, int *p_pastilles) /* Ajout des pointeurs pour
/* nb_pastille = int nombre de pastille voulue , p_pastilles est un pointeur d'un tableau de pixels qui sont des pastilles*/
/*Générer une pastille dans la grid*/
/*Seulement le code n'est pas complet*/
/*Code n'est pas complet*/
/*-Elles se génèrent à des endroits qui peuvent être les mêmes ou gêner le snake*/
{
@ -88,9 +110,11 @@ void DessinerScene(int* pastilles) /* Dessine la scène */
void InitialisationDuSerpent(int *p_serpent) /* L'initialisation du serpent */
{
int x_millieu = 0, y_millieu = 0 , compteur = 0;
couleur o;
couleur j;
o=CouleurParNom("Gold");
j=CouleurParNom("yellow");
ChoisirCouleurDessin(j);
ChoisirCouleurDessin(o);
x_millieu = T_PIXEL*30; /* 30 = 60 colonnes divisé par 2*/
y_millieu = T_PIXEL*20; /* 20 = 40 colonnes divisé par 2*/
RemplirRectangle(x_millieu,y_millieu,T_PIXEL,T_PIXEL);
@ -101,6 +125,7 @@ void InitialisationDuSerpent(int *p_serpent) /* L'initialisation du serpent */
p_serpent[1] = y_millieu;
for(compteur=0;compteur<=18;compteur+=2) /* Commence par 1 car p_serpent index 0 initialisées pour la tête et 2 + 2x9 = 10 couples de coordonnées 2D */
{
ChoisirCouleurDessin(j);
p_serpent[compteur+2] = p_serpent[compteur]+T_PIXEL;
p_serpent[compteur+3] = p_serpent[compteur+1];
@ -117,14 +142,28 @@ int main()
int go_on=1;
int n;
int x_pastille,y_pastille;
int p_serpent[100]; /* A faire en tableau dynamique*/
int pastilles[5]; /* A faire en tableau dynamique */
size_t longueur_serpent = 20;
size_t longueur_pastilles = 10;
int *serpent = (int *)malloc(longueur_serpent * sizeof(int));
int *pastilles = (int *)malloc(longueur_pastilles * sizeof(int));
int direction = 0;
if(serpent == NULL) {
fprintf(stderr, "Erreur d'allocation de mémoire.\n");
return EXIT_FAILURE;
}
if(pastilles == NULL) {
fprintf(stderr, "Erreur d'allocation de mémoire.\n");
return EXIT_FAILURE;
}
InitialiserGraphique();
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);
InitialisationDuSerpent(p_serpent);
InitialisationDuSerpent(serpent);
while(go_on) /* Lancement du cycle pour les Inputs et le Jeu*/
{
@ -133,17 +172,21 @@ int main()
switch (Touche())
{
case XK_Up:
printf("Touche haut\n");
break;
case XK_Down:
printf("Touche bas\n");
break;
case XK_Left:
printf("Touche gauche\n");
break;
case XK_Right:
printf("Touche droite\n");
break;
direction = 1;
DeplacementSerpent(direction ,serpent, longueur_serpent);
break;
case XK_Down:
direction = 3;
DeplacementSerpent(direction ,serpent, longueur_serpent);
break;
case XK_Left:
direction = 0;
DeplacementSerpent(direction ,serpent, longueur_serpent);
break;
case XK_Right:
direction = 2;
DeplacementSerpent(direction ,serpent, longueur_serpent);
break;
default:
printf("Autre touche\n");
@ -156,6 +199,7 @@ int main()
{
n++;
suivant=Microsecondes()+delta;
DeplacementSerpent(direction,serpent,longueur_serpent);
}
}
}