l'IA fonctionne maintenant de manière instantanée

This commit is contained in:
2024-11-24 15:33:39 +01:00
parent 25550e887f
commit 6c7dbcc13a
3 changed files with 29 additions and 27 deletions

BIN
blocus

Binary file not shown.

View File

@@ -9,10 +9,10 @@
void attendre(int secondes) { void attendre(int secondes) {
time_t start_time = time(NULL); time_t start_time = time(NULL);
while(difftime(time(NULL), start_time) >= secondes) { while(difftime(time(NULL), start_time) < secondes) {
break; break;
} }
} }
void jouerModeHumain(struct EtatJeu *etatJeu) { void jouerModeHumain(struct EtatJeu *etatJeu) {
while (1) { while (1) {

View File

@@ -4,23 +4,31 @@
#include <unistd.h> #include <unistd.h>
#include "jeu.h" #include "jeu.h"
#include "jeu_ia.h" #include "jeu_ia.h"
#include "jeu_humain.h"
/* Fonction qui permet de jouer avec l'IA */ /* Fonction qui permet de jouer avec l'IA */
void jouerModeIA(struct EtatJeu *etatJeu) { void jouerModeIA(struct EtatJeu *etatJeu) {
int gagnant; int compteurIA = 0;
/* Boucle qui permet de jouer avec l'IA */
while (1) { while (1) {
if (etatJeu->tourJoueur == 1) { if (etatJeu->tourJoueur == 1) {
compteurIA = 0;
if (SourisCliquee()) { if (SourisCliquee()) {
if (etatJeu->phase == 0) { if (etatJeu->phase == 0) {
gererPlacementInitialIA(etatJeu); gererPlacementInitialIA(etatJeu);
} else { } else {
gererTourJoueurIA(etatJeu); gererTourJoueurIA(etatJeu);
} }
if (etatJeu->phase > 0 && !peutDeplacer(*etatJeu, etatJeu->tourJoueur)) {
afficherVictoire(etatJeu->tourJoueur == 1 ? 2 : 1);
while (!SourisCliquee()) {}
break;
}
} }
} else { } else {
sleep(500000); compteurIA++;
if (compteurIA > 50) {
if (etatJeu->phase == 0) { if (etatJeu->phase == 0) {
placementIA(etatJeu); placementIA(etatJeu);
} else if (etatJeu->phase == 1) { } else if (etatJeu->phase == 1) {
@@ -28,20 +36,14 @@ void jouerModeIA(struct EtatJeu *etatJeu) {
} else { } else {
blocageIA(etatJeu); blocageIA(etatJeu);
} }
}
/* Vérifie si le joueur a gagné la partie */ if (etatJeu->phase > 0 && !peutDeplacer(*etatJeu, etatJeu->tourJoueur)) {
if (etatJeu->phase > 0) { afficherVictoire(etatJeu->tourJoueur == 1 ? 2 : 1);
gagnant = verifierVictoire(*etatJeu); while (!SourisCliquee()) {}
if (gagnant != 0) {
afficherVictoire(gagnant);
while (!SourisCliquee()) {
sleep(500000);
}
break; break;
} }
} }
sleep(500000); }
} }
} }