Changes
- fix typo - Add test to see where is the player in the grid - Add bomb
This commit is contained in:
parent
9cf47bb696
commit
27e8808349
1 changed files with 84 additions and 46 deletions
126
window.c
126
window.c
|
@ -46,7 +46,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)
|
||||||
* 4 -> Bloc destructible */
|
* 4 -> Bloc destructible
|
||||||
|
* 5 -> Mur extérieur
|
||||||
|
* 6 (valeur reservée) -> Bombe (défini automatiquement par le programme) */
|
||||||
static int * _plateau = NULL;
|
static int * _plateau = NULL;
|
||||||
|
|
||||||
/*!\brief Largeur/Nombre de lignes de la grille */
|
/*!\brief Largeur/Nombre de lignes de la grille */
|
||||||
|
@ -184,19 +186,19 @@ void init(void) {
|
||||||
for(int j = 0; j < _grilleW; j++) {
|
for(int j = 0; j < _grilleW; j++) {
|
||||||
int _case = i * _grilleH + j;
|
int _case = i * _grilleH + j;
|
||||||
if(i == 0) { // mur en haut
|
if(i == 0) { // mur en haut
|
||||||
_plateau[_case] = 1;
|
_plateau[_case] = 5;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(i == (_grilleH - 1)) { // mur en bas
|
if(i == (_grilleH - 1)) { // mur en bas
|
||||||
_plateau[_case] = 1;
|
_plateau[_case] = 5;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(j == 0) { // mur a gauche
|
if(j == 0) { // mur a gauche
|
||||||
_plateau[_case] = 1;
|
_plateau[_case] = 5;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(j == (_grilleW - 1)) { // mur a droite
|
if(j == (_grilleW - 1)) { // mur a droite
|
||||||
_plateau[_case] = 1;
|
_plateau[_case] = 5;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if((j % 2) == 0 && (i % 2) == 0) { // mur à l'intérieur
|
if((j % 2) == 0 && (i % 2) == 0) { // mur à l'intérieur
|
||||||
|
@ -276,11 +278,11 @@ void idle(void) {
|
||||||
float xA = (_joueurA.x + _cubeSize * _grilleW / 2) / _cubeSize; // colonne - longueur
|
float xA = (_joueurA.x + _cubeSize * _grilleW / 2) / _cubeSize; // colonne - longueur
|
||||||
|
|
||||||
/* Coordonnées joueur A */
|
/* Coordonnées joueur A */
|
||||||
int coorJoueurA = round(zA) * _grilleH + round(xA);
|
int posJoueurA = round(zA) * _grilleH + round(xA);
|
||||||
int coorDroiteA = round(zA) * _grilleH + ceil(xA);
|
int posDroiteA = round(zA) * _grilleH + ceil(xA);
|
||||||
int coorHautA = floor(zA) * _grilleH + round(xA);
|
int posHautA = floor(zA) * _grilleH + round(xA);
|
||||||
int coorGaucheA = round(zA) * _grilleH + floor(xA);
|
int posGaucheA = round(zA) * _grilleH + floor(xA);
|
||||||
int coorBasA = ceil(zA) * _grilleH + round(xA);
|
int posBasA = ceil(zA) * _grilleH + round(xA);
|
||||||
|
|
||||||
/* Décalage pour éviter bug de collisions */
|
/* Décalage pour éviter bug de collisions */
|
||||||
/* float decalageLargeurA = zA - floor(zA);
|
/* float decalageLargeurA = zA - floor(zA);
|
||||||
|
@ -293,30 +295,31 @@ void idle(void) {
|
||||||
* D x E
|
* D x E
|
||||||
* F G H
|
* F G H
|
||||||
* Pour aller à droite on regarde si C et H ne sont pas des murs
|
* Pour aller à droite on regarde si C et H ne sont pas des murs
|
||||||
* On part de la coordonnées de droite car coorDroite = E. */
|
* On part de la posdonnées de droite car posDroite = E. */
|
||||||
if(_vkeyboard[VK_RIGHT])
|
if(_vkeyboard[VK_RIGHT])
|
||||||
/* Collision à droite du joueur */
|
/* Collision à droite du joueur */
|
||||||
if(_plateau[coorDroiteA] == 0 || _plateau[coorDroiteA] == 2) // si case vide ou joueur
|
if(_plateau[posDroiteA] == 0 || _plateau[posDroiteA] == 2 || _plateau[posDroiteA] == 6) // si case vide ou joueur ou bombe
|
||||||
/* if(decalageLargeurA < decalageGB || decalageLargeurA > decalageDH) */ _joueurA.x += vitesse * dt; // on s'assure d'être aligné
|
/* if(decalageLargeurA < decalageGB || decalageLargeurA > decalageDH) */ _joueurA.x += vitesse * dt; // on s'assure d'être aligné
|
||||||
|
|
||||||
if(_vkeyboard[VK_UP])
|
if(_vkeyboard[VK_UP])
|
||||||
/* Collision en haut du joueur */
|
/* Collision en haut du joueur */
|
||||||
if(_plateau[coorHautA] == 0 || _plateau[coorHautA] == 2) // si case vide ou joueur
|
if(_plateau[posHautA] == 0 || _plateau[posHautA] == 2 || _plateau[posHautA] == 6) // si case vide ou joueur ou bombe
|
||||||
/* if(decalageLongueurA < decalageGB || decalageLongueurA > decalageDH) */ _joueurA.z -= vitesse * dt; // on s'assure d'être aligné
|
/* if(decalageLongueurA < decalageGB || decalageLongueurA > decalageDH) */ _joueurA.z -= vitesse * dt; // on s'assure d'être aligné
|
||||||
|
|
||||||
if(_vkeyboard[VK_LEFT])
|
if(_vkeyboard[VK_LEFT])
|
||||||
/* Collision à gauche du joueur */
|
/* Collision à gauche du joueur */
|
||||||
if(_plateau[coorGaucheA] == 0 || _plateau[coorGaucheA] == 2) // si case vide ou joueur
|
if(_plateau[posGaucheA] == 0 || _plateau[posGaucheA] == 2 || _plateau[posGaucheA] == 6) // si case vide ou joueur ou bombe
|
||||||
/* if(decalageLargeurA < decalageGB || decalageLargeurA > decalageDH) */ _joueurA.x -= vitesse * dt; // on s'assure d'être aligné
|
/* if(decalageLargeurA < decalageGB || decalageLargeurA > decalageDH) */ _joueurA.x -= vitesse * dt; // on s'assure d'être aligné
|
||||||
|
|
||||||
if(_vkeyboard[VK_DOWN])
|
if(_vkeyboard[VK_DOWN])
|
||||||
/* Collision en bas du joueur */
|
/* Collision en bas du joueur */
|
||||||
if(_plateau[coorBasA] == 0 || _plateau[coorBasA] == 2) // si case vide ou joueur
|
if(_plateau[posBasA] == 0 || _plateau[posBasA] == 2 || _plateau[posBasA] == 6) // si case vide ou joueur ou bombe
|
||||||
/* if(decalageLongueurA < decalageGB || decalageLongueurA > decalageDH) */ _joueurA.z += vitesse * dt; // on s'assure d'être aligné
|
/* if(decalageLongueurA < decalageGB || decalageLongueurA > decalageDH) */ _joueurA.z += vitesse * dt; // on s'assure d'être aligné
|
||||||
|
|
||||||
if(_vkeyboard[VK_RETURN]) {
|
if(_vkeyboard[VK_RETURN]) {
|
||||||
_vkeyboard[VK_RETURN] = 0; // on évite de spam la pose de bombe
|
_vkeyboard[VK_RETURN] = 0; // on évite de spam la pose de bombe
|
||||||
printf("Joueur A pose une bombe!\n"); // temp
|
printf("Joueur A pose une bombe!\n"); // temp
|
||||||
|
_plateau[posJoueurA] = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Affichage Debug */
|
/* Affichage Debug */
|
||||||
|
@ -324,15 +327,15 @@ void idle(void) {
|
||||||
printf("\n========== Joueur A ==========\n");
|
printf("\n========== Joueur A ==========\n");
|
||||||
printf(" li = %d, col = %d, idx = %d\n", (int)(zA + .5f), (int)(xA + .5f), _joueurA.position);
|
printf(" li = %d, col = %d, idx = %d\n", (int)(zA + .5f), (int)(xA + .5f), _joueurA.position);
|
||||||
printf(" zA=%f xA=%f\n", zA, xA);
|
printf(" zA=%f xA=%f\n", zA, xA);
|
||||||
printf(" d=%d h=%d g=%d b=%d\n", coorDroiteA, coorHautA, coorGaucheA, coorBasA);
|
printf(" d=%d h=%d g=%d b=%d\n", posDroiteA, posHautA, posGaucheA, posBasA);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Anti-collision entre joueurs */
|
/* Anti-collision entre joueurs */
|
||||||
if(_joueurA.position != coorJoueurA) {
|
if(_joueurA.position != posJoueurA && _plateau[posJoueurA] != 6 && _plateau[_joueurA.position] != 6) {
|
||||||
if(_joueurA.position != -1)
|
if(_joueurA.position != -1)
|
||||||
_plateau[_joueurA.position] = 0;
|
_plateau[_joueurA.position] = 0;
|
||||||
_joueurA.position = coorJoueurA;
|
_joueurA.position = posJoueurA;
|
||||||
_plateau[coorJoueurA] = 2;
|
_plateau[posJoueurA] = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -342,11 +345,11 @@ void idle(void) {
|
||||||
float xB = (float)((_joueurB.x + _cubeSize * _grilleW / 2) / _cubeSize); // colonne - longueur
|
float xB = (float)((_joueurB.x + _cubeSize * _grilleW / 2) / _cubeSize); // colonne - longueur
|
||||||
|
|
||||||
/* Coordonnées joueur A */
|
/* Coordonnées joueur A */
|
||||||
int coorJoueurB = round(zB) * _grilleH + round(xB);
|
int posJoueurB = round(zB) * _grilleH + round(xB);
|
||||||
int coorDroiteB = round(zB) * _grilleH + ceil(xB);
|
int posDroiteB = round(zB) * _grilleH + ceil(xB);
|
||||||
int coorHautB = floor(zB) * _grilleH + round(xB);
|
int posHautB = floor(zB) * _grilleH + round(xB);
|
||||||
int coorGaucheB = round(zB) * _grilleH + floor(xB);
|
int posGaucheB = round(zB) * _grilleH + floor(xB);
|
||||||
int coorBasB = ceil(zB) * _grilleH + round(xB);
|
int posBasB = ceil(zB) * _grilleH + round(xB);
|
||||||
|
|
||||||
/* Décalage pour éviter bug de collisions */
|
/* Décalage pour éviter bug de collisions */
|
||||||
/* float decalageLargeurB = zB - floor(zB);
|
/* float decalageLargeurB = zB - floor(zB);
|
||||||
|
@ -355,27 +358,28 @@ void idle(void) {
|
||||||
/* Déplacement */
|
/* Déplacement */
|
||||||
if(_vkeyboard[VK_d])
|
if(_vkeyboard[VK_d])
|
||||||
/* Collision à droite du joueur */
|
/* Collision à droite du joueur */
|
||||||
if(_plateau[coorDroiteB] == 0 || _plateau[coorDroiteB] == 3) // si case vide ou joueur
|
if(_plateau[posDroiteB] == 0 || _plateau[posDroiteB] == 3 || _plateau[posDroiteB] == 6) // si case vide ou joueur ou bombe
|
||||||
/* if(decalageLargeurB < decalageGB || decalageLargeurB > decalageDH) */ _joueurB.x += vitesse * dt; // on s'assure d'être aligné
|
/* if(decalageLargeurB < decalageGB || decalageLargeurB > decalageDH) */ _joueurB.x += vitesse * dt; // on s'assure d'être aligné
|
||||||
|
|
||||||
if(_vkeyboard[VK_z])
|
if(_vkeyboard[VK_z])
|
||||||
/* Collision en haut du joueur */
|
/* Collision en haut du joueur */
|
||||||
if(_plateau[coorHautB] == 0 || _plateau[coorHautB] == 3) // si case vide ou joueur
|
if(_plateau[posHautB] == 0 || _plateau[posHautB] == 3 || _plateau[posHautB] == 6) // si case vide ou joueur ou bombe
|
||||||
/* if(decalageLongueurB < decalageGB || decalageLongueurB > decalageDH) */ _joueurB.z -= vitesse * dt; // on s'assure d'être aligné
|
/* if(decalageLongueurB < decalageGB || decalageLongueurB > decalageDH) */ _joueurB.z -= vitesse * dt; // on s'assure d'être aligné
|
||||||
|
|
||||||
if(_vkeyboard[VK_q])
|
if(_vkeyboard[VK_q])
|
||||||
/* Collision à gauche du joueur */
|
/* Collision à gauche du joueur */
|
||||||
if(_plateau[coorGaucheB] == 0 || _plateau[coorGaucheB] == 3) // si case vide ou joueur
|
if(_plateau[posGaucheB] == 0 || _plateau[posGaucheB] == 3 || _plateau[posGaucheB] == 6) // si case vide ou joueur ou bombe
|
||||||
/* if(decalageLargeurB < decalageGB || decalageLargeurB > decalageDH) */ _joueurB.x -= vitesse * dt; // on s'assure d'être aligné
|
/* if(decalageLargeurB < decalageGB || decalageLargeurB > decalageDH) */ _joueurB.x -= vitesse * dt; // on s'assure d'être aligné
|
||||||
|
|
||||||
if(_vkeyboard[VK_s])
|
if(_vkeyboard[VK_s])
|
||||||
/* Collision en bas du joueur */
|
/* Collision en bas du joueur */
|
||||||
if(_plateau[coorBasB] == 0 || _plateau[coorBasB] == 3) // si case vide ou joueur
|
if(_plateau[posBasB] == 0 || _plateau[posBasB] == 3 || _plateau[posBasB] == 6) // si case vide ou joueur ou bombe
|
||||||
/* if(decalageLongueurB < decalageGB || decalageLongueurB > decalageDH) */ _joueurB.z += vitesse * dt; // on s'assure d'être aligné
|
/* if(decalageLongueurB < decalageGB || decalageLongueurB > decalageDH) */ _joueurB.z += vitesse * dt; // on s'assure d'être aligné
|
||||||
|
|
||||||
if(_vkeyboard[VK_SPACE]) {
|
if(_vkeyboard[VK_SPACE]) {
|
||||||
_vkeyboard[VK_SPACE] = 0; // on évite de spam la pose de bombe
|
_vkeyboard[VK_SPACE] = 0; // on évite de spam la pose de bombe
|
||||||
printf("Joueur B pose une bombe!\n"); // temp
|
printf("Joueur B pose une bombe!\n"); // temp
|
||||||
|
_plateau[posJoueurB] = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Affichage Debug */
|
/* Affichage Debug */
|
||||||
|
@ -383,25 +387,27 @@ void idle(void) {
|
||||||
printf("========== Joueur B ==========\n");
|
printf("========== Joueur B ==========\n");
|
||||||
printf(" li = %d, col = %d, idx = %d\n", (int)(zB + .5f), (int)(xB + .5f), _joueurB.position);
|
printf(" li = %d, col = %d, idx = %d\n", (int)(zB + .5f), (int)(xB + .5f), _joueurB.position);
|
||||||
printf(" zB=%f xB=%f\n", zB, xB);
|
printf(" zB=%f xB=%f\n", zB, xB);
|
||||||
printf(" d=%d h=%d g=%d b=%d\n", coorDroiteB, coorHautB, coorGaucheB, coorBasB);
|
printf(" d=%d h=%d g=%d b=%d\n", posDroiteB, posHautB, posGaucheB, posBasB);
|
||||||
printf("===============================\n");
|
printf("===============================\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Anti-collision entre joueurs */
|
/* Anti-collision entre joueurs */
|
||||||
if(_joueurB.position != coorJoueurB) {
|
if(_joueurB.position != posJoueurB && _plateau[posJoueurB] != 6 && _plateau[_joueurB.position] != 6) {
|
||||||
if(_joueurB.position != -1)
|
if(_joueurB.position != -1)
|
||||||
_plateau[_joueurB.position] = 0;
|
_plateau[_joueurB.position] = 0;
|
||||||
_joueurB.position = coorJoueurB;
|
_joueurB.position = posJoueurB;
|
||||||
_plateau[coorJoueurB] = 3;
|
_plateau[posJoueurB] = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!\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 couleurMur = {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, 1}; /* Marron */
|
couleurMurExterieur = {0.1, 0.1, 0.1, 1}, /* Gris foncé */
|
||||||
|
couleurBois = {0.6, 0.3, 0, 1}, /* Marron */
|
||||||
|
couleurBombe = {1., 0, 0, 1}; /* Rouge */
|
||||||
|
|
||||||
float model_view_matrix[16], projection_matrix[16], nmv[16];
|
float model_view_matrix[16], projection_matrix[16], nmv[16];
|
||||||
|
|
||||||
|
@ -430,13 +436,24 @@ void draw(void) {
|
||||||
for(int j = 0; j < _grilleH; ++j) {
|
for(int j = 0; j < _grilleH; ++j) {
|
||||||
/* Bloc simple */
|
/* Bloc simple */
|
||||||
if(_plateau[i * _grilleW + j] == 1) {
|
if(_plateau[i * _grilleW + j] == 1) {
|
||||||
_cube->dcolor = couleurPlateau;
|
_cube->dcolor = couleurMur;
|
||||||
/* copie model_view_matrix dans nmv */
|
/* copie model_view_matrix dans nmv */
|
||||||
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
||||||
|
|
||||||
/* pour convertir les coordonnées i, j de la grille en x, z du monde */
|
/* pour convertir les posdonné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.f, _cubeSize * i + cZ);
|
||||||
scale(nmv, _cubeSize / 2.0f, _cubeSize / 2.0f, _cubeSize / 2.0f);
|
scale(nmv, _cubeSize / 2.f, _cubeSize / 2.f, _cubeSize / 2.f);
|
||||||
|
transform_n_rasterize(_cube, nmv, projection_matrix);
|
||||||
|
}
|
||||||
|
/* Mur exterieur */
|
||||||
|
if(_plateau[i * _grilleW + j] == 5) {
|
||||||
|
_cube->dcolor = couleurMurExterieur;
|
||||||
|
/* copie model_view_matrix dans nmv */
|
||||||
|
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
||||||
|
|
||||||
|
/* pour convertir les posdonnées i, j de la grille en x, z du monde */
|
||||||
|
translate(nmv, _cubeSize * j + cX, 0.f, _cubeSize * i + cZ);
|
||||||
|
scale(nmv, _cubeSize / 2.f, _cubeSize / 2.f, _cubeSize / 2.f);
|
||||||
transform_n_rasterize(_cube, nmv, projection_matrix);
|
transform_n_rasterize(_cube, nmv, projection_matrix);
|
||||||
}
|
}
|
||||||
/* Bloc destructible */
|
/* Bloc destructible */
|
||||||
|
@ -445,11 +462,32 @@ void draw(void) {
|
||||||
/* copie model_view_matrix dans nmv */
|
/* copie model_view_matrix dans nmv */
|
||||||
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
||||||
|
|
||||||
/* pour convertir les coordonnées i, j de la grille en x, z du monde */
|
/* pour convertir les posdonné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.f, _cubeSize * i + cZ);
|
||||||
scale(nmv, _cubeSize / 2.6f, _cubeSize / 2.6f, _cubeSize / 2.6f);
|
scale(nmv, _cubeSize / 2.6f, _cubeSize / 2.6f, _cubeSize / 2.6f);
|
||||||
transform_n_rasterize(_cubeBois, nmv, projection_matrix);
|
transform_n_rasterize(_cubeBois, nmv, projection_matrix);
|
||||||
}
|
}
|
||||||
|
/* Bombe */
|
||||||
|
if(_plateau[i * _grilleW + j] == 6) {
|
||||||
|
_sphere->dcolor = couleurBombe;
|
||||||
|
/* copie model_view_matrix dans nmv */
|
||||||
|
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
||||||
|
|
||||||
|
/* pour convertir les posdonnées i, j de la grille en x, z du monde */
|
||||||
|
translate(nmv, _cubeSize * j + cX, 0.f, _cubeSize * i + cZ);
|
||||||
|
scale(nmv, _cubeSize / 3.f, _cubeSize / 3.f, _cubeSize / 3.f);
|
||||||
|
transform_n_rasterize(_sphere, nmv, projection_matrix);
|
||||||
|
}
|
||||||
|
/* Test voir la position des joueurs dans la grille */
|
||||||
|
/* if(_plateau[i * _grilleW + j] == 2 || _plateau[i * _grilleW + j] == 3) {
|
||||||
|
vec4 blanc = {1, 1, 1, 1};
|
||||||
|
_sphere->dcolor = blanc;
|
||||||
|
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
||||||
|
|
||||||
|
translate(nmv, _cubeSize * j + cX, 0.f, _cubeSize * i + cZ);
|
||||||
|
scale(nmv, _cubeSize / 3.f, _cubeSize / 3.f, _cubeSize / 3.f);
|
||||||
|
transform_n_rasterize(_sphere, nmv, projection_matrix);
|
||||||
|
} */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dessine le Joueur A */
|
/* Dessine le Joueur A */
|
||||||
|
@ -458,10 +496,10 @@ void draw(void) {
|
||||||
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
||||||
/* Corps */
|
/* Corps */
|
||||||
translate(nmv, _joueurA.x, _joueurA.y, _joueurA.z);
|
translate(nmv, _joueurA.x, _joueurA.y, _joueurA.z);
|
||||||
scale(nmv, _cubeSize / 3.0f, _cubeSize / 3.0f, _cubeSize / 3.0f);
|
scale(nmv, _cubeSize / 3.f, _cubeSize / 3.f, _cubeSize / 3.f);
|
||||||
transform_n_rasterize(_cube, nmv, projection_matrix);
|
transform_n_rasterize(_cube, nmv, projection_matrix);
|
||||||
/* Tête */
|
/* Tête */
|
||||||
translate(nmv, 0.0f, 2.0f, 0.0f);
|
translate(nmv, 0.f, 2.f, 0.f);
|
||||||
transform_n_rasterize(_sphere, nmv, projection_matrix);
|
transform_n_rasterize(_sphere, nmv, projection_matrix);
|
||||||
|
|
||||||
/* Dessine le Joueur B */
|
/* Dessine le Joueur B */
|
||||||
|
@ -470,10 +508,10 @@ void draw(void) {
|
||||||
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
memcpy(nmv, model_view_matrix, sizeof(nmv));
|
||||||
/* Corps */
|
/* Corps */
|
||||||
translate(nmv, _joueurB.x, _joueurB.y, _joueurB.z);
|
translate(nmv, _joueurB.x, _joueurB.y, _joueurB.z);
|
||||||
scale(nmv, _cubeSize / 3.0f, _cubeSize / 3.0f, _cubeSize / 3.0f);
|
scale(nmv, _cubeSize / 3.f, _cubeSize / 3.f, _cubeSize / 3.f);
|
||||||
transform_n_rasterize(_cube, nmv, projection_matrix);
|
transform_n_rasterize(_cube, nmv, projection_matrix);
|
||||||
/* Tête */
|
/* Tête */
|
||||||
translate(nmv, 0.0f, 2.0f, 0.0f);
|
translate(nmv, 0.f, 2.f, 0.f);
|
||||||
transform_n_rasterize(_sphere, nmv, projection_matrix);
|
transform_n_rasterize(_sphere, nmv, projection_matrix);
|
||||||
|
|
||||||
/* Déclare que l'on a changé des pixels de l'écran (bas niveau) */
|
/* Déclare que l'on a changé des pixels de l'écran (bas niveau) */
|
||||||
|
|
Reference in a new issue