Random generation of the board

This commit is contained in:
Mylloon 2022-01-02 00:25:00 +01:00
parent bd440e9f71
commit 4bb79eaca6
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -4,6 +4,7 @@
* \date November 16, 2021. * \date November 16, 2021.
*/ */
#include <assert.h> #include <assert.h>
#include <time.h>
/* Inclusion des entêtes de fonctions de gestion de primitives simples /* Inclusion des entêtes de fonctions de gestion de primitives simples
* de dessin. La lettre p signifie aussi bien primitive que * de dessin. La lettre p signifie aussi bien primitive que
@ -44,17 +45,9 @@ static int _debug = 0;
* 1 -> Mur * 1 -> Mur
* 2 (valeur reservée) -> Joueur A (défini automatiquement par le programme) * 2 (valeur reservée) -> Joueur A (défini automatiquement par le programme)
* 3 (valeur reservée) -> Joueur B (défini automatiquement par le programme) */ * 3 (valeur reservée) -> Joueur B (défini automatiquement par le programme) */
static int _grille[] = { static int * _grille = NULL;
1, 1, 1, 1, 1, 1, 1, static int _grilleW;
1, 0, 1, 0, 0, 0, 1, static int _grilleH;
1, 0, 1, 0, 0, 0, 1,
1, 0, 1, 1, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 1, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1
};
static int _grilleW = 7;
static int _grilleH = 7;
/* Définition d'un personnage */ /* Définition d'un personnage */
typedef struct perso_t { typedef struct perso_t {
@ -64,8 +57,8 @@ typedef struct perso_t {
} perso_t; } perso_t;
/* Définition de nos deux joueurs */ /* Définition de nos deux joueurs */
perso_t _herosA = { 6.f, 0.f, -6.f, -1, NULL }; // à droite perso_t _herosA = { 4.f, 0.f, -6.f, -1, NULL }; // à droite
perso_t _herosB = { -10.f, 0.f, 0.f, -1, NULL }; // à gauche perso_t _herosB = { -4.f, 0.f, -1.f, -1, NULL }; // à gauche
/* Clavier virtuel */ /* Clavier virtuel */
enum { enum {
@ -148,6 +141,51 @@ void init(void) {
/* Si _use_vsync != 0, on active la synchronisation verticale */ /* Si _use_vsync != 0, on active la synchronisation verticale */
SDL_GL_SetSwapInterval(_use_vsync); SDL_GL_SetSwapInterval(_use_vsync);
/* Génération du plateau */
srand(time(NULL));
_grilleW = 10 + (rand() % 10);
_grilleH = _grilleW;
printf("%d & %d\n", _grilleW, _grilleH);
if ((_grille = malloc((_grilleW * _grilleH) * sizeof(int))) == NULL) {
printf("Impossible d'allouer de la mémoire supplémentaire pour générer le plateau.\n");
sortie();
exit(1);
}
int _curseur = 0;
for(int i = 0; i < _grilleH; i++)
for(int j = 0; j < _grilleW; j++) {
if (i == 0) {
_grille[_curseur] = 1;
_curseur++;
continue;
}
if (i == (_grilleH - 1)) {
_grille[_curseur] = 1;
_curseur++;
continue;
}
if (j == 0) {
_grille[_curseur] = 1;
_curseur++;
continue;
}
if (j == (_grilleW - 1)) {
_grille[_curseur] = 1;
_curseur++;
continue;
}
if ((j % 2) == 0 && (i % 2) == 0) {
_grille[_curseur] = 1;
_curseur++;
continue;
}
_grille[_curseur] = 0;
_curseur++;
}
/* Mets en place la fonction à appeler en cas de sortie */ /* Mets en place la fonction à appeler en cas de sortie */
atexit(sortie); atexit(sortie);
} }
@ -284,7 +322,7 @@ void draw(void) {
/* Charger la matrice identité dans model-view */ /* Charger la matrice identité dans model-view */
MIDENTITY(model_view_matrix); MIDENTITY(model_view_matrix);
/* On place la caméra en arrière-haut, elle regarde le centre de la scène */ /* On place la caméra en arrière-haut, elle regarde le centre de la scène */
lookAt(model_view_matrix, 0, 30 /* zoom */, 30 /* inclinaison */, 0, 0, 0, 0, 0, -1); lookAt(model_view_matrix, 0, 100 /* zoom */, 30 /* inclinaison */, 0, 0, 0, 0, 0, -1);
/* Pour centrer la grille par rapport au monde */ /* Pour centrer la grille par rapport au monde */
float cX = -_cubeSize * _grilleW / 2.0f; float cX = -_cubeSize * _grilleW / 2.0f;