142 lines
2.3 KiB
C
Executable File
142 lines
2.3 KiB
C
Executable File
/* 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>
|
|
#include "plateau_init.h"
|
|
|
|
|
|
|
|
struct adresse* plateau_init(void) {
|
|
|
|
int ligne_pomme, colonne_pomme, i;
|
|
|
|
unsigned char* tete = NULL;
|
|
unsigned short* indice_queue = NULL;
|
|
unsigned short* taille_serpent = NULL;
|
|
|
|
int** corps_serpent = NULL;
|
|
|
|
int** plateau = NULL;
|
|
|
|
|
|
struct adresse* pointeur = NULL;
|
|
|
|
|
|
srand(time(NULL));
|
|
|
|
|
|
|
|
|
|
|
|
/* allocation du pointeur */
|
|
|
|
pointeur = malloc(sizeof( struct adresse));
|
|
|
|
|
|
|
|
|
|
|
|
/* allocation du tableau tete et queue */
|
|
|
|
tete = malloc(2 * sizeof(unsigned char));
|
|
|
|
indice_queue = malloc(sizeof(unsigned short));
|
|
|
|
|
|
|
|
|
|
|
|
/* allocation du plateau dans le tas */
|
|
|
|
plateau = calloc(LIGNES, sizeof(int*));
|
|
|
|
for ( i = 0; i < LIGNES; i++) {
|
|
|
|
plateau[i] = calloc(COLONNES, sizeof(int));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* allocation du corps du serpent */
|
|
|
|
corps_serpent = malloc(TAILLE_SERPENT * sizeof(int*));
|
|
|
|
for ( i = 0; i < TAILLE_SERPENT; i++) {
|
|
|
|
corps_serpent[i] = malloc( 2 * sizeof(int));
|
|
|
|
}
|
|
|
|
|
|
|
|
/* allocation de la taille du serpent */
|
|
|
|
taille_serpent = malloc(sizeof(unsigned short));
|
|
|
|
|
|
/* positionnement du serpent et marquage de la tete et la queue */
|
|
|
|
tete[0] = ((LIGNES/2)+(TAILLE_SERPENT/2)-1);
|
|
tete[1] = COLONNES/2 ;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < TAILLE_SERPENT ; i++) {
|
|
|
|
plateau[((LIGNES/2)-5)+i][COLONNES/2] = 1;
|
|
|
|
|
|
corps_serpent[i][0] = ((LIGNES/2)-5) + i;
|
|
corps_serpent[i][1] = COLONNES/2;
|
|
|
|
}
|
|
|
|
|
|
/* 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 */
|
|
|
|
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 */
|
|
|
|
plateau[ligne_pomme][colonne_pomme] = 2;
|
|
|
|
}
|
|
|
|
|
|
*taille_serpent = TAILLE_SERPENT;
|
|
|
|
*indice_queue = 0;
|
|
|
|
pointeur -> plateau = plateau;
|
|
pointeur -> tete = tete;
|
|
pointeur -> indice_queue = indice_queue;
|
|
pointeur -> corps_serpent = corps_serpent;
|
|
pointeur -> taille_serpent = taille_serpent;
|
|
|
|
|
|
|
|
return pointeur;
|
|
}
|