rework bomb explosion

This commit is contained in:
Mylloon 2022-01-02 19:25:24 +01:00
parent dc30a7a16e
commit 9e807e6506
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

126
window.c
View file

@ -348,44 +348,49 @@ void idle(void) {
int trouveB = 0; int trouveB = 0;
for(int i = 0; i <= 2; i++) { // on supprime les caisses aux alentours for(int i = 0; i <= 2; i++) { // on supprime les caisses aux alentours
/* Vérification mort d'un joueur */ /* Vérification mort d'un joueur */
int mort = 0; /* Si position joueur = position bombe */
if(_joueurA.bombePos == posJoueurA) trouveA = 1; if(_joueurA.bombePos == posJoueurA) trouveA = 1;
if(_joueurB.bombePos == posJoueurB) trouveB = 1; if(_joueurA.bombePos == posJoueurB) trouveB = 1;
if(_plateau[_joueurA.bombePos - _plateauW - i] == 2) trouveA = 1; /* En haut à gauche*/
if(_plateau[_joueurA.bombePos - _plateauW - i] == 3) trouveB = 1; if(_joueurA.bombePos - _plateauW - i == posJoueurA) trouveA = 1;
if(_joueurA.bombePos - _plateauW - i == posJoueurB) trouveB = 1;
if(_plateau[_joueurA.bombePos - _plateauW + i] == 2) trouveA = 1; /* En haut à droite */
if(_plateau[_joueurA.bombePos - _plateauW + i] == 3) trouveB = 1; if(_joueurA.bombePos - _plateauW + i == posJoueurA) trouveA = 1;
if(_joueurA.bombePos - _plateauW + i == posJoueurB) trouveB = 1;
if(_plateau[_joueurA.bombePos - i] == 2) trouveA = 1; /* A gauche */
if(_plateau[_joueurA.bombePos - i] == 3) trouveB = 1; if(_joueurA.bombePos - i == posJoueurA) trouveA = 1;
if(_joueurA.bombePos - i == posJoueurB) trouveB = 1;
if(_plateau[_joueurA.bombePos + i] == 2) trouveA = 1; /* A droite */
if(_plateau[_joueurA.bombePos + i] == 3) trouveB = 1; if(_joueurA.bombePos + i == posJoueurA) trouveA = 1;
if(_joueurA.bombePos + i == posJoueurB) trouveB = 1;
if(_plateau[_joueurA.bombePos + _plateauW - i] == 2) trouveA = 1; /* En bas à gauche */
if(_plateau[_joueurA.bombePos + _plateauW - i] == 3) trouveB = 1; if(_joueurA.bombePos + _plateauW - i == posJoueurA) trouveA = 1;
if(_joueurA.bombePos + _plateauW - i == posJoueurB) trouveB = 1;
if(_plateau[_joueurA.bombePos + _plateauW + i] == 2) trouveA = 1; /* En bas à droite */
if(_plateau[_joueurA.bombePos + _plateauW + i] == 3) trouveB = 1; if(_joueurA.bombePos + _plateauW + i == posJoueurA) trouveA = 1;
if(_joueurA.bombePos + _plateauW + i == posJoueurB) trouveB = 1;
if(trouveA || trouveB) printf("cc\n"); /* On fait le compta des morts seulement lors de la dernière boucle */
if(i == 2) {
int mort = 0;
if(trouveA) mort = 1;
if(trouveB) mort = 2;
if(trouveA && trouveB) mort = 3;
/* On vérifie que les 2 joueurs sont bien dans la map, if(mort != 0) {
* s'il en manque un c'est qu'il est probablement char joueur = 'A';
* à la position de la bombe */ if(mort) joueur = 'B';
if(trouveA) mort = 1; if(mort == 3) printf("TERMINÉ ! TOUT LE MONDE À PERDU !\n");
if(trouveB) mort = 2; else printf("TERMINÉ ! JOUEUR %c À GAGNÉ !\n", joueur);
if(trouveA && trouveB) mort = 3; sortie();
exit(0);
if(mort != 0 && i == 2) { // on fait le compta des morts seulement lors de la dernière boucle }
char joueur = 'A';
if(mort) joueur = 'B';
if(mort == 3) printf("TERMINÉ ! TOUT LE MONDE À PERDU !\n");
else printf("TERMINÉ ! JOUEUR %c À GAGNÉ !\n", joueur);
sortie();
exit(0);
} }
/* Suppression des blocs touchés */ /* Suppression des blocs touchés */
@ -410,7 +415,7 @@ void idle(void) {
} }
/* Anti-collision entre joueurs */ /* Anti-collision entre joueurs */
if(_joueurA.position != posJoueurA && _plateau[posJoueurA] != 6 && _plateau[_joueurA.position] != 6 && _plateau[posJoueurA] != 7 && _plateau[_joueurA.position] != 7) { // si position différente et pas une bombe if(_joueurA.position != posJoueurA && _joueurA.position != _joueurA.bombePos && _joueurA.position != _joueurB.bombePos) { // si position différente et pas une bombe
_plateau[_joueurA.position] = 0; // on met l'ancienne position a un bloc vide _plateau[_joueurA.position] = 0; // on met l'ancienne position a un bloc vide
_plateau[posJoueurA] = 2; // on met a jour le plateau _plateau[posJoueurA] = 2; // on met a jour le plateau
} }
@ -459,42 +464,49 @@ void idle(void) {
int trouveB = 0; int trouveB = 0;
for(int i = 0; i <= 2; i++) { // on supprime les caisses aux alentours for(int i = 0; i <= 2; i++) { // on supprime les caisses aux alentours
/* Vérification mort d'un joueur */ /* Vérification mort d'un joueur */
int mort = 0; /* Si position joueur = position bombe */
if(_joueurB.bombePos == posJoueurA) trouveA = 1; if(_joueurB.bombePos == posJoueurA) trouveA = 1;
if(_joueurB.bombePos == posJoueurB) trouveB = 1; if(_joueurB.bombePos == posJoueurB) trouveB = 1;
if(_plateau[_joueurB.bombePos - _plateauW - i] == 2) trouveA = 1; /* En haut à gauche*/
if(_plateau[_joueurB.bombePos - _plateauW - i] == 3) trouveB = 1; if(_joueurB.bombePos - _plateauW - i == posJoueurA) trouveA = 1;
if(_joueurB.bombePos - _plateauW - i == posJoueurB) trouveB = 1;
if(_plateau[_joueurB.bombePos - _plateauW + i] == 2) trouveA = 1; /* En haut à droite */
if(_plateau[_joueurB.bombePos - _plateauW + i] == 3) trouveB = 1; if(_joueurB.bombePos - _plateauW + i == posJoueurA) trouveA = 1;
if(_joueurB.bombePos - _plateauW + i == posJoueurB) trouveB = 1;
if(_plateau[_joueurB.bombePos - i] == 2) trouveA = 1; /* A gauche */
if(_plateau[_joueurB.bombePos - i] == 3) trouveB = 1; if(_joueurB.bombePos - i == posJoueurA) trouveA = 1;
if(_joueurB.bombePos - i == posJoueurB) trouveB = 1;
if(_plateau[_joueurB.bombePos + i] == 2) trouveA = 1; /* A droite */
if(_plateau[_joueurB.bombePos + i] == 3) trouveB = 1; if(_joueurB.bombePos + i == posJoueurA) trouveA = 1;
if(_joueurB.bombePos + i == posJoueurB) trouveB = 1;
if(_plateau[_joueurB.bombePos + _plateauW - i] == 2) trouveA = 1; /* En bas à gauche */
if(_plateau[_joueurB.bombePos + _plateauW - i] == 3) trouveB = 1; if(_joueurB.bombePos + _plateauW - i == posJoueurA) trouveA = 1;
if(_joueurB.bombePos + _plateauW - i == posJoueurB) trouveB = 1;
if(_plateau[_joueurB.bombePos + _plateauW + i] == 2) trouveA = 1; /* En bas à droite */
if(_plateau[_joueurB.bombePos + _plateauW + i] == 3) trouveB = 1; if(_joueurB.bombePos + _plateauW + i == posJoueurA) trouveA = 1;
if(_joueurB.bombePos + _plateauW + i == posJoueurB) trouveB = 1;
/* On vérifie que les 2 joueurs sont bien dans la map, /* On fait le compta des morts seulement lors de la dernière boucle */
* s'il en manque un c'est qu'il est probablement if(i == 2) {
* à la position de la bombe */ int mort = 0;
if(trouveA) mort = 1; if(trouveA) mort = 1;
if(trouveB) mort = 2; if(trouveB) mort = 2;
if(trouveA && trouveB) mort = 3; if(trouveA && trouveB) mort = 3;
if(mort != 0 && i == 2) { // on fait le compta des morts seulement lors de la dernière boucle if(mort != 0) {
char joueur = 'A'; char joueur = 'A';
if(mort) joueur = 'B'; if(mort) joueur = 'B';
if(mort == 3) printf("TERMINÉ ! TOUT LE MONDE À PERDU !\n"); if(mort == 3) printf("TERMINÉ ! TOUT LE MONDE À PERDU !\n");
else printf("TERMINÉ ! JOUEUR %c À GAGNÉ !\n", joueur); else printf("TERMINÉ ! JOUEUR %c À GAGNÉ !\n", joueur);
sortie(); sortie();
exit(0); exit(0);
}
} }
/* Suppression des blocs touchés */ /* Suppression des blocs touchés */
@ -520,7 +532,7 @@ void idle(void) {
} }
/* Anti-collision entre joueurs */ /* Anti-collision entre joueurs */
if(_joueurB.position != posJoueurB && _plateau[posJoueurB] != 6 && _plateau[_joueurB.position] != 6 && _plateau[posJoueurB] != 7 && _plateau[_joueurB.position] != 7) { // si position différente et pas une bombe if(_joueurB.position != posJoueurB && _joueurB.position != _joueurA.bombePos && _joueurB.position != _joueurB.bombePos) { // si position différente et pas une bombe
_plateau[_joueurB.position] = 0; // on met l'ancienne position a un bloc vide _plateau[_joueurB.position] = 0; // on met l'ancienne position a un bloc vide
_plateau[posJoueurB] = 3; // on met a jour le plateau _plateau[posJoueurB] = 3; // on met a jour le plateau
} }