Place all destructible blocs

This commit is contained in:
Mylloon 2022-01-02 02:48:42 +01:00
parent 82bd71cce3
commit a093045fdd
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -157,7 +157,7 @@ void init(void) {
/* Placement des joueurs */ /* Placement des joueurs */
// TODO... les faires relativement éloignes l'un de l'autre // TODO... les faires relativement éloignes l'un de l'autre
int coefEloignement = _grilleW * 1.1; int coefEloignement = _grilleW * 1.05;
/* Joueur A */ /* Joueur A */
_joueurA.x += coefEloignement; _joueurA.x += coefEloignement;
@ -174,61 +174,65 @@ void init(void) {
} }
/* Génération du plateau */ /* Génération du plateau */
int _curseur = 0;
for(int i = 0; i < _grilleH; i++) for(int i = 0; i < _grilleH; i++)
for(int j = 0; j < _grilleW; j++) { for(int j = 0; j < _grilleW; j++) {
int _case = i * _grilleH + j;
if (i == 0) { // mur en haut if (i == 0) { // mur en haut
_plateau[_curseur] = 1; _plateau[_case] = 1;
_curseur++;
continue; continue;
} }
if (i == (_grilleH - 1)) { // mur en bas if (i == (_grilleH - 1)) { // mur en bas
_plateau[_curseur] = 1; _plateau[_case] = 1;
_curseur++;
continue; continue;
} }
if (j == 0) { // mur a gauche if (j == 0) { // mur a gauche
_plateau[_curseur] = 1; _plateau[_case] = 1;
_curseur++;
continue; continue;
} }
if (j == (_grilleW - 1)) { // mur a droite if (j == (_grilleW - 1)) { // mur a droite
_plateau[_curseur] = 1; _plateau[_case] = 1;
_curseur++;
continue; continue;
} }
if ((j % 2) == 0 && (i % 2) == 0) { // mur à l'intérieur if ((j % 2) == 0 && (i % 2) == 0) { // mur à l'intérieur
_plateau[_curseur] = 1; _plateau[_case] = 1;
_curseur++;
continue; continue;
} }
_plateau[_curseur] = 0; _plateau[_case] = 0;
_curseur++;
} }
/* On ajoute les blocs qui sont déstructibles par les joueurs */
for(int i = 0; i < _grilleH; i++)
for(int j = 0; j < _grilleW; j++) {
int _case = i * _grilleH + j;
if(_plateau[_case] == 0)
if(rand() % 2)
_plateau[_case] = 4;
}
/* On s'assure que au moins une cases autours du joueurs sont libre /* On s'assure que au moins une cases autours du joueurs sont libre
* ça donne ça : * ça donne ça :
* 0 0 0 * A B C
* 0 x 0 * D x E
* 0 0 0 */ * F G H
* avec A B C D E F G H des positions
* et x le joueur */
int caseJoueurA = round((_joueurA.z + _cubeSize * _grilleH / 2) / _cubeSize) * _grilleH + round((_joueurA.x + _cubeSize * _grilleW / 2) / _cubeSize); int caseJoueurA = round((_joueurA.z + _cubeSize * _grilleH / 2) / _cubeSize) * _grilleH + round((_joueurA.x + _cubeSize * _grilleW / 2) / _cubeSize);
int caseJoueurB = round((_joueurB.z + _cubeSize * _grilleH / 2) / _cubeSize) * _grilleH + round((_joueurB.x + _cubeSize * _grilleW / 2) / _cubeSize); int caseJoueurB = round((_joueurB.z + _cubeSize * _grilleH / 2) / _cubeSize) * _grilleH + round((_joueurB.x + _cubeSize * _grilleW / 2) / _cubeSize);
for(int i = 1; i <= 2; i++) { /* Attention au bordures ! for(int i = 0; i <= 2; i++) { /* Attention au bordures !
* On les fait spawn loin des bordures * On les fait spawn loin des bordures
* pour éviter tout problèmes. */ * pour éviter tout problèmes. */
/* Joueur A */ /* Joueur A */
_plateau[caseJoueurA - i] = 0; // gauche _plateau[caseJoueurA - i] = 0; // D
_plateau[caseJoueurA + i] = 0; // droite _plateau[caseJoueurA + i] = 0; // E
_plateau[caseJoueurA - _grilleW - i] = 0; // haut _plateau[caseJoueurA - _grilleW - i] = 0; // B
_plateau[caseJoueurA + _grilleW + i] = 0; // bas _plateau[caseJoueurA + _grilleW + i] = 0; // G
/* Joueur B */ /* Joueur B */
_plateau[caseJoueurB - i] = 0; // gauche _plateau[caseJoueurB - i] = 0; // D
_plateau[caseJoueurB + i] = 0; // droite _plateau[caseJoueurB + i] = 0; // E
_plateau[caseJoueurB - _grilleW - i] = 0; // haut _plateau[caseJoueurB - _grilleW - i] = 0; // B
_plateau[caseJoueurB + _grilleW + i] = 0; // bas _plateau[caseJoueurB + _grilleW + i] = 0; // G
} }
/* Mets en place la fonction à appeler en cas de sortie */ /* Mets en place la fonction à appeler en cas de sortie */
@ -349,10 +353,10 @@ void idle(void) {
/*!\brief Fonction appelée à chaque display. */ /*!\brief Fonction appelée à chaque display. */
void draw(void) { void draw(void) {
vec4 couleurPlateau = {0.2, 0.2, 0.2, 1} /* Gris */, vec4 couleurPlateau = {0.2, 0.2, 0.2, 1}, /* Gris */
couleurJoueurA = {0.15, 0.5, 0.15, 1} /* Vert */, couleurJoueurA = {0.15, 0.5, 0.15, 1}, /* Vert */
couleurJoueurB = {0.2, 0.2, 0.7, 1} /* Bleu */, couleurJoueurB = {0.2, 0.2, 0.7, 1}, /* Bleu */
couleurBois = {0.6, 0.3, 0, 0} /* Marron */; couleurBois = {0.6, 0.3, 0, 0}; /* Marron */
float model_view_matrix[16], projection_matrix[16], nmv[16]; float model_view_matrix[16], projection_matrix[16], nmv[16];
@ -398,7 +402,7 @@ void draw(void) {
/* pour convertir les coordonnées i, j de la grille en x, z du monde */ /* pour convertir les coordonnées i, j de la grille en x, z du monde */
translate(nmv, _cubeSize * j + cX, 0.0f, _cubeSize * i + cZ); translate(nmv, _cubeSize * j + cX, 0.0f, _cubeSize * i + cZ);
scale(nmv, _cubeSize / 2.0f, _cubeSize / 2.0f, _cubeSize / 2.0f); scale(nmv, _cubeSize / 2.6f, _cubeSize / 2.6f, _cubeSize / 2.6f);
transform_n_rasterize(_cube, nmv, projection_matrix); transform_n_rasterize(_cube, nmv, projection_matrix);
} }
} }