mise à jour de l'évenement manger une pomme
This commit is contained in:
parent
11b6a7d7dd
commit
191e031597
@ -8,6 +8,7 @@ but : run
|
||||
|
||||
OFILES = plateau_init.o \
|
||||
fenetre.o \
|
||||
augmentation_serpent.o \
|
||||
deplacement.o \
|
||||
ajout_score.o \
|
||||
score_init.o \
|
||||
@ -25,9 +26,11 @@ plateau_init.o : plateau_init.h
|
||||
|
||||
fenetre.o : fenetre.h plateau_init.h
|
||||
|
||||
deplacement.o : deplacement.h
|
||||
augmentation_serpent.o : augmentation_serpent.h
|
||||
|
||||
supp_queue.o : supp_queue.h
|
||||
deplacement.o : deplacement.h supp_queue.h
|
||||
|
||||
supp_queue.o : supp_queue.h augmentation_serpent.h
|
||||
|
||||
ajout_score.o : ajout_score.h
|
||||
|
||||
|
77
snake/augmentation_serpent.c
Normal file
77
snake/augmentation_serpent.c
Normal file
@ -0,0 +1,77 @@
|
||||
/* Fonction qui sert à aggrandir la taille du serpent lorsque celui-ci mange une pomme
|
||||
|
||||
Written by Yann KERAUDREN and Titouan LERICHE */
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "augmentation_serpent.h"
|
||||
|
||||
|
||||
|
||||
void augmentation_serpent (struct adresse* pointeur) {
|
||||
|
||||
|
||||
int** corps_serpent = pointeur -> corps_serpent;
|
||||
|
||||
unsigned short* indice_queue = pointeur -> indice_queue;
|
||||
|
||||
unsigned char* tete = pointeur -> tete;
|
||||
|
||||
unsigned short* taille_serpent = pointeur -> taille_serpent;
|
||||
|
||||
int** corps_serpent2 = NULL;
|
||||
|
||||
int i;
|
||||
|
||||
|
||||
|
||||
/* augmentation de la taille du serpent */
|
||||
|
||||
*taille_serpent = *taille_serpent + 1;
|
||||
|
||||
|
||||
|
||||
/* création d'un nouveau tableau */
|
||||
|
||||
corps_serpent2 = malloc( *taille_serpent * sizeof(int*));
|
||||
|
||||
for ( i = 0; i < *taille_serpent; i++) {
|
||||
|
||||
corps_serpent2 = malloc( 2 * sizeof(int));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* attributions des anciennes cases du corps dans le nouveau tableau et ajout de la nouvelle tête au bonne endroit*/
|
||||
|
||||
for ( i = 0 ; i < *indice_queue; i++) {
|
||||
|
||||
corps_serpent2[i] = corps_serpent[i] ;
|
||||
|
||||
}
|
||||
|
||||
corps_serpent2[*indice_queue][0] = tete[0];
|
||||
corps_serpent2[*indice_queue][1] = tete[1];
|
||||
|
||||
for ( i = *indice_queue; i < *taille_serpent - 1; i++) {
|
||||
|
||||
corps_serpent2[i+1] = corps_serpent[i];
|
||||
|
||||
}
|
||||
|
||||
*indice_queue = *indice_queue + 1;
|
||||
|
||||
pointeur -> corps_serpent = corps_serpent2;
|
||||
|
||||
|
||||
for ( i = 0; i < *taille_serpent - 1; i++) {
|
||||
|
||||
free( corps_serpent[i]);
|
||||
}
|
||||
|
||||
free(corps_serpent);
|
||||
|
||||
|
||||
}
|
14
snake/augmentation_serpent.h
Normal file
14
snake/augmentation_serpent.h
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
|
||||
#ifndef AUGMENTATION_SERPENT_H
|
||||
|
||||
#define AUGMENTATION_SERPENT_H
|
||||
#include "plateau_init.h"
|
||||
|
||||
void augmentation_serpent(struct adresse* pointeur);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* AUGMENTATION_SERPENT_H */
|
@ -14,7 +14,7 @@
|
||||
|
||||
|
||||
|
||||
unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
unsigned char deplacement (struct adresse* pointeur, unsigned char* sens, unsigned char* retard) {
|
||||
|
||||
|
||||
int** plateau = pointeur -> plateau;
|
||||
@ -60,7 +60,6 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
else{
|
||||
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
tete[1] = tete[1] - 1;
|
||||
|
||||
@ -74,6 +73,10 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
}else{
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
|
||||
ChoisirCouleurDessin(yellow);
|
||||
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
|
||||
@ -81,7 +84,7 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
*sens = GAUCHE;
|
||||
|
||||
supp_queue(pointeur);
|
||||
supp_queue(pointeur, retard);
|
||||
|
||||
plateau[tete[0]][tete[1]] = 1;
|
||||
|
||||
@ -113,13 +116,9 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
else{
|
||||
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
tete[1] = tete[1] + 1;
|
||||
|
||||
|
||||
@ -132,6 +131,9 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
}else{
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
ChoisirCouleurDessin(yellow);
|
||||
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
|
||||
@ -139,7 +141,7 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
*sens = DROITE;
|
||||
|
||||
supp_queue(pointeur);
|
||||
supp_queue(pointeur, retard);
|
||||
|
||||
plateau[tete[0]][tete[1]] = 1;
|
||||
|
||||
@ -164,15 +166,9 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
else{
|
||||
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
tete[0] = tete[0] - 1;
|
||||
|
||||
|
||||
@ -183,7 +179,11 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
|
||||
}else{
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
ChoisirCouleurDessin(yellow);
|
||||
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
|
||||
@ -191,7 +191,7 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
*sens = HAUT;
|
||||
|
||||
supp_queue(pointeur);
|
||||
supp_queue(pointeur, retard);
|
||||
|
||||
plateau[tete[0]][tete[1]] = 1;
|
||||
|
||||
@ -216,13 +216,10 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
else{
|
||||
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
tete[0] = tete[0] + 1;
|
||||
|
||||
|
||||
@ -237,6 +234,9 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
}else{
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
ChoisirCouleurDessin(yellow);
|
||||
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
|
||||
@ -244,7 +244,7 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
*sens = BAS;
|
||||
|
||||
supp_queue(pointeur);
|
||||
supp_queue(pointeur, retard);
|
||||
|
||||
plateau[tete[0]][tete[1]] = 1;
|
||||
|
||||
@ -276,12 +276,10 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
}
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
else {
|
||||
|
||||
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
tete[0] = tete[0] + 1;
|
||||
|
||||
@ -289,16 +287,20 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
if (plateau[tete[0]][tete[1]] == 1) {
|
||||
|
||||
return 0;
|
||||
|
||||
|
||||
|
||||
}else{
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
ChoisirCouleurDessin(yellow);
|
||||
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
|
||||
|
||||
|
||||
supp_queue(pointeur);
|
||||
supp_queue(pointeur, retard);
|
||||
|
||||
plateau[tete[0]][tete[1]] = 1;
|
||||
|
||||
return 1;
|
||||
@ -319,11 +321,9 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
}
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
else{
|
||||
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
tete[0] = tete[0] - 1;
|
||||
|
||||
@ -334,12 +334,17 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
}else{
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
|
||||
ChoisirCouleurDessin(yellow);
|
||||
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
|
||||
|
||||
|
||||
supp_queue(pointeur);
|
||||
supp_queue(pointeur, retard);
|
||||
|
||||
plateau[tete[0]][tete[1]] = 1;
|
||||
|
||||
return 1;
|
||||
@ -361,13 +366,9 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
else{
|
||||
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
tete[1] = tete[1] + 1;
|
||||
|
||||
@ -379,12 +380,16 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
}else{
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
ChoisirCouleurDessin(yellow);
|
||||
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
|
||||
|
||||
|
||||
supp_queue(pointeur);
|
||||
supp_queue(pointeur, retard);
|
||||
|
||||
plateau[tete[0]][tete[1]] = 1;
|
||||
|
||||
return 1;
|
||||
@ -404,14 +409,10 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
else {
|
||||
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
|
||||
tete[1] = tete[1] - 1;
|
||||
|
||||
@ -423,12 +424,16 @@ unsigned char deplacement (struct adresse* pointeur, unsigned char* sens) {
|
||||
|
||||
}else{
|
||||
|
||||
|
||||
/* modificaton du plateau de jeu et affichage de la tête */
|
||||
|
||||
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
|
||||
|
||||
ChoisirCouleurDessin(yellow);
|
||||
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
|
||||
|
||||
|
||||
supp_queue(pointeur);
|
||||
supp_queue(pointeur, retard);
|
||||
|
||||
plateau[tete[0]][tete[1]] = 1;
|
||||
|
||||
return 1;
|
||||
|
@ -9,6 +9,6 @@
|
||||
#define GAUCHE 3
|
||||
#include "plateau_init.h"
|
||||
|
||||
unsigned char deplacement (struct adresse* pointeur, unsigned char* sens);
|
||||
unsigned char deplacement (struct adresse* pointeur, unsigned char* sens, unsigned char* retard);
|
||||
|
||||
#endif /* DEPLACEMENT_H */
|
||||
|
@ -27,6 +27,7 @@ int main(void) {
|
||||
|
||||
|
||||
unsigned char* sens = NULL;
|
||||
unsigned char* retard = NULL;
|
||||
|
||||
unsigned char* tete = pointeur -> tete;
|
||||
|
||||
@ -40,6 +41,10 @@ int main(void) {
|
||||
|
||||
*sens = 2;
|
||||
|
||||
retard = malloc(sizeof(unsigned char));
|
||||
|
||||
*retard = 0;
|
||||
|
||||
|
||||
suivant = Microsecondes() + CYCLE;
|
||||
|
||||
@ -71,7 +76,7 @@ int main(void) {
|
||||
|
||||
|
||||
|
||||
jeu = deplacement(pointeur, sens);
|
||||
jeu = deplacement(pointeur, sens, retard);
|
||||
|
||||
suivant = Microsecondes() + CYCLE;
|
||||
|
||||
@ -117,6 +122,8 @@ int main(void) {
|
||||
|
||||
free(compteur);
|
||||
|
||||
free(retard);
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -8,11 +8,12 @@
|
||||
#include <graph.h>
|
||||
#include <time.h>
|
||||
#include "supp_queue.h"
|
||||
#include "augmentation_serpent.h"
|
||||
|
||||
|
||||
|
||||
|
||||
void supp_queue( struct adresse* pointeur ) {
|
||||
void supp_queue( struct adresse* pointeur, unsigned char* retard ) {
|
||||
|
||||
|
||||
int** corps_serpent = pointeur -> corps_serpent;
|
||||
@ -41,67 +42,47 @@ void supp_queue( struct adresse* pointeur ) {
|
||||
|
||||
if (plateau[tete[0]][tete[1]] == 2 ) {
|
||||
|
||||
|
||||
/* augmentation de la taille du serpent */
|
||||
|
||||
*taille_serpent = *taille_serpent + 1;
|
||||
|
||||
corps_serpent = realloc( corps_serpent, *taille_serpent * sizeof(int*));
|
||||
pointeur -> corps_serpent = corps_serpent;
|
||||
|
||||
corps_serpent[*taille_serpent - 1] = malloc( 2 * sizeof(int));
|
||||
|
||||
/* printf("%d %d \n", tete[0], tete[1]);
|
||||
*retard = *retard + 2;
|
||||
|
||||
|
||||
/* problème de mise en place de la tête du serpent au bonne endroit dans le corps */
|
||||
if (*retard >0 ) {
|
||||
|
||||
corps_serpent[*taille_serpent - 1][0] = tete[0];
|
||||
corps_serpent[*taille_serpent - 1][1] = tete[1];
|
||||
|
||||
/*for (i = 0; i < *taille_serpent; i++) {
|
||||
|
||||
|
||||
|
||||
printf("[%d %d] ", corps_serpent[i][0], corps_serpent[i][1]);
|
||||
|
||||
}
|
||||
|
||||
printf("\n");*/
|
||||
augmentation_serpent(pointeur);
|
||||
|
||||
*retard = *retard - 1;
|
||||
|
||||
|
||||
|
||||
}else{
|
||||
|
||||
|
||||
|
||||
/* apparition de la nouvelle pomme */
|
||||
/* apparition de la nouvelle pomme */
|
||||
|
||||
|
||||
ligne_pomme = rand() % 40;
|
||||
colonne_pomme = rand() % 60;
|
||||
|
||||
/* teste pour ne pas faire apparaître la pomme sur une case déjà occupée */
|
||||
|
||||
while (plateau[ligne_pomme][colonne_pomme] == 2 || plateau[ligne_pomme][colonne_pomme] == 1) {
|
||||
|
||||
ligne_pomme = rand() % 40;
|
||||
colonne_pomme = rand() % 60;
|
||||
|
||||
/* teste pour ne pas faire apparaître la pomme sur une case déjà occupée */
|
||||
|
||||
while (plateau[ligne_pomme][colonne_pomme] == 2 || plateau[ligne_pomme][colonne_pomme] == 1) {
|
||||
|
||||
ligne_pomme = rand() % 40;
|
||||
colonne_pomme = rand() % 60;
|
||||
}
|
||||
|
||||
plateau[ligne_pomme][colonne_pomme] = 2;
|
||||
|
||||
red = CouleurParComposante(255,0,0);
|
||||
ChoisirCouleurDessin(red);
|
||||
RemplirRectangle(20*(colonne_pomme + 1),20*(ligne_pomme + 1),20,20);
|
||||
|
||||
|
||||
}
|
||||
|
||||
plateau[ligne_pomme][colonne_pomme] = 2;
|
||||
|
||||
red = CouleurParComposante(255,0,0);
|
||||
ChoisirCouleurDessin(red);
|
||||
RemplirRectangle(20*(colonne_pomme + 1),20*(ligne_pomme + 1),20,20);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
else {
|
||||
|
||||
green = CouleurParComposante(50,205,50);
|
||||
@ -130,6 +111,6 @@ void supp_queue( struct adresse* pointeur ) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
#include "plateau_init.h"
|
||||
|
||||
void supp_queue(struct adresse* pointeur) ;
|
||||
void supp_queue(struct adresse* pointeur, unsigned char* retard) ;
|
||||
|
||||
#endif /* SUPP_QUEUE_H */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user