Merge branch 'master' of dwarves.iut-fbleau.fr:keraudre/SAE11_2023

This commit is contained in:
Titouan LERICHE 2023-12-19 11:47:54 +01:00
commit ebedbfe522
9 changed files with 196 additions and 101 deletions

@ -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

@ -0,0 +1,85 @@
/* 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[i] = malloc( 2 * sizeof(int));
}
printf("%hu\n", *taille_serpent);
/* 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][0]= corps_serpent[i][0] ;
corps_serpent2[i][1]= corps_serpent[i][1] ;
}
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][0] = corps_serpent[i][0];
corps_serpent2[i+1][1] = corps_serpent[i][1];
}
*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);
}

@ -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 */

Binary file not shown.

Before

(image error) Size: 48 KiB

@ -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 ) {
*retard = *retard + 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]);
/* problème de mise en place de la tête du serpent au bonne endroit dans le corps */
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");*/
printf("[%hhu]\n", *retard);
/* 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;
}
plateau[ligne_pomme][colonne_pomme] = 2;
red = CouleurParComposante(255,0,0);
ChoisirCouleurDessin(red);
RemplirRectangle(20*(colonne_pomme + 1),20*(ligne_pomme + 1),20,20);
/* 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);
}
if (*retard >0 ) {
augmentation_serpent(pointeur);
*retard = *retard - 1;
printf("[%hhu]\n", *retard);
}
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 */