Files
SAE11_2023/snake/plateau_init.c

106 lines
1.8 KiB
C
Raw Normal View History

/* Création du plateau de jeu avec les pastilles et le serpent
written by Yann KERAUDREN and Titouan LERICHE*/
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define LIGNES 40
#define COLONNES 60
#define NBR_POMME 5
#define TAILLE_SERPENT 10
2023-12-07 16:16:15 +01:00
2023-12-11 23:32:22 +01:00
int* plateau_init(void) {
2023-12-11 23:32:22 +01:00
int ligne_pomme, colonne_pomme, i, j;
2023-12-11 23:32:22 +01:00
int* plateau_tete_queue = NULL;
int* tete = NULL;
int* queue = NULL;
int** plateau = NULL;
srand(time(NULL));
2023-12-11 23:32:22 +01:00
/* allocation du tableau qui renvoie les addresses du plateau, de la tete et de la queue */
plateau_tete_queue = malloc(3 * sizeof(long double));
tete = malloc(2*sizeof(short int));
queue = malloc(2*sizeof(short int));
/* allocation du tableau dans le tas */
2023-12-11 23:32:22 +01:00
plateau = calloc(LIGNES, sizeof(double));
for ( i = 0; i < LIGNES; i++) {
2023-12-11 23:32:22 +01:00
plateau[i] = calloc(COLONNES, sizeof(int));
}
/* positionnement du serpent et marquage de la tete et la queue */
2023-12-11 23:32:22 +01:00
tete[0] = (LIGNES/2)-5 ;
tete[1] = COLONNES/2 ;
2023-12-11 23:32:22 +01:00
queue[0] = ((LIGNES/2)-5)+TAILLE_SERPENT-1;
queue[1] = COLONNES/2;
2023-12-11 23:32:22 +01:00
for (i = 0; i < TAILLE_SERPENT ; i++) {
2023-12-11 23:32:22 +01:00
plateau[((LIGNES/2)-5)+i][COLONNES/2] = 1;
}
/* positionnement alétoire des pommes */
for ( i = 0; i < NBR_POMME; i++) {
ligne_pomme = rand() % 40;
colonne_pomme = rand() % 60;
/* teste pour faire apparaitre exactement 5 pommes */
2023-12-11 23:32:22 +01:00
while (plateau[ligne_pomme][colonne_pomme] == 2 || plateau[ligne_pomme][colonne_pomme] == 1) {
ligne_pomme = rand() % 40;
colonne_pomme = rand() % 60;
}
/* le chiffre "2" definit une pomme */
2023-12-11 23:32:22 +01:00
plateau[ligne_pomme][colonne_pomme] = 2;
}
2023-12-11 23:32:22 +01:00
plateau_tete_queue[0] = **plateau;
plateau_tete_queue[1] = *tete;
plateau_tete_queue[2] = *queue;
2023-12-11 23:32:22 +01:00
return plateau_tete_queue;
}