Ajout de fonctionnalité : Impossible de faire spawn une pomme sur la queue du serpent

This commit is contained in:
stiti 2023-12-13 20:06:15 +01:00
parent c2dc5118fd
commit 6950f93605
4 changed files with 21 additions and 21 deletions

View File

@ -6,7 +6,7 @@ SRCDIR = ./src
HDIR = ./include HDIR = ./include
ODIR = ./out ODIR = ./out
OFILES = $(subst src/,out/,$(subst .c,.o,$(shell find $(SRCDIR)/ -type f))) OFILES = $(subst src/,out/,$(subst .c,.o,$(shell find $(SRCDIR)/ -type f)))
EXE = game EXE = snake
### BUT PAR DEFAUT ### ### BUT PAR DEFAUT ###
@ -30,7 +30,7 @@ clean :
-rm -rf $(ODIR) -rm -rf $(ODIR)
mrproper : mrproper :
clean but rm -rf snake
### BUTS FACTICES ### ### BUTS FACTICES ###

View File

@ -9,8 +9,7 @@ typedef struct {
int y; int y;
} Pomme; } Pomme;
Pomme creerPomme(); Pomme creerPomme(Serpent serpent, int longueur);
void dessinerPomme(Pomme pomme,int id_pomme); void dessinerPomme(Pomme pomme,int id_pomme);
int verifierCollisionPommeSerpent(Pomme pomme, Segment serpent[], int longueur);
#endif /*POMME_H*/ #endif /*POMME_H*/

View File

@ -46,7 +46,7 @@ void jouer(int nbPommes, unsigned long int vitesse,int acceleration) {
id_pomme = ChargerSprite("img/pomme1.png"); id_pomme = ChargerSprite("img/pomme1.png");
for (i = 0; i < nbPommes; i++) { for (i = 0; i < nbPommes; i++) {
pommes[i] = creerPomme(); pommes[i] = creerPomme(serpent,longueur);
dessinerPomme(pommes[i], id_pomme); dessinerPomme(pommes[i], id_pomme);
} }
@ -64,7 +64,7 @@ void jouer(int nbPommes, unsigned long int vitesse,int acceleration) {
if (vitesse >= 15000) { if (vitesse >= 15000) {
vitesse -= 40; vitesse -= 40;
} }
pommes[i] = creerPomme(); pommes[i] = creerPomme(serpent,longueur);
dessinerPomme(pommes[i], id_pomme); dessinerPomme(pommes[i], id_pomme);
} }
} }

View File

@ -4,26 +4,27 @@
#include "../include/serpent.h" #include "../include/serpent.h"
#include "../include/pomme.h" #include "../include/pomme.h"
int estSurSerpent(Pomme pomme, Serpent serpent, int longueur) {
int i;
for (i = 0; i < longueur; ++i) {
if (pomme.x == serpent[i].x && pomme.y == serpent[i].y) {
return 1; /*La pomme est sur le serpent*/
}
}
return 0; /*La pomme n'est pas sur le serpent*/
}
Pomme creerPomme() { Pomme creerPomme(Serpent serpent, int longueur) {
Pomme pomme; Pomme pomme;
pomme.x = rand() % 60; do {
pomme.y = rand() % 40; pomme.x = rand() % LARGEUR_GRILLE;
pomme.y = rand() % HAUTEUR_GRILLE;
} while (estSurSerpent(pomme, serpent, longueur));
return pomme; return pomme;
} }
void dessinerPomme(Pomme pomme, int id_pomme) { void dessinerPomme(Pomme pomme, int id_pomme) {
/* Affichez une pomme */ /* Affichez une pomme */
AfficherSprite(id_pomme, pomme.x * TAILLE_CASE, pomme.y * TAILLE_CASE); AfficherSprite(id_pomme, pomme.x * TAILLE_CASE, pomme.y * TAILLE_CASE);
} }
int verifierCollisionPommeSerpent(Pomme pomme, Segment serpent[], int longueur) {
int i;
/* Vérifie si la pomme est sur une case occupée par le serpent */
for (i = 0; i < longueur; ++i) {
if (pomme.x == serpent[i].x && pomme.y == serpent[i].y) {
return 1; /* Collision */
}
}
return 0; /* Pas de collision */
}