Random generation of the board
This commit is contained in:
parent
bd440e9f71
commit
4bb79eaca6
1 changed files with 52 additions and 14 deletions
66
window.c
66
window.c
|
@ -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;
|
||||||
|
|
Reference in a new issue