suppression de default source, <unistd.h>, ajout de la fonction attendre a la place

This commit is contained in:
2024-11-23 14:24:29 +01:00
parent d6f4fd8f5f
commit 11626b75bd
3 changed files with 41 additions and 31 deletions

View File

@@ -1,10 +1,19 @@
#define _DEFAULT_SOURCE /* Pour utiliser _X et _Y */ #include <stdio.h>
#include <stdio.h> /* Pour utiliser printf */ #include <stdlib.h>
#include <stdlib.h> /* Pour utiliser malloc() */ #include <graph.h>
#include <graph.h> /* Pour utiliser les fonctions graphiques */ #include <time.h>
#include <unistd.h> /* Pour utiliser usleep */ #include "../include/jeu.h"
#include "../include/jeu.h" /* Pour utiliser les structures et les fonctions du jeu */ #include "../include/jeu_humain.h"
#include "../include/jeu_humain.h" /* Pour utiliser les fonctions de jeu_humain */
#define DELAI_MS 100
void attendre(int delai_ms) {
clock_t start_time = clock();
while (((clock() - start_time) * 1000) / CLOCKS_PER_SEC < delai_ms) {
}
}
void jouerModeHumain(struct EtatJeu *etatJeu) { void jouerModeHumain(struct EtatJeu *etatJeu) {
while (1) { while (1) {
@@ -18,12 +27,12 @@ void jouerModeHumain(struct EtatJeu *etatJeu) {
if (etatJeu->phase > 0 && !peutDeplacer(*etatJeu, etatJeu->tourJoueur)) { if (etatJeu->phase > 0 && !peutDeplacer(*etatJeu, etatJeu->tourJoueur)) {
afficherVictoire(etatJeu->tourJoueur == 1 ? 2 : 1); afficherVictoire(etatJeu->tourJoueur == 1 ? 2 : 1);
while (!SourisCliquee()) { while (!SourisCliquee()) {
usleep(100000); attendre(DELAI_MS);
} }
break; break;
} }
} }
usleep(100000); attendre(DELAI_MS);
} }
} }
@@ -134,3 +143,5 @@ void gererTourJoueur(struct EtatJeu *etatJeu) {
} }
} }
} }

View File

@@ -1,10 +1,10 @@
#define _DEFAULT_SOURCE
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <graph.h> #include <graph.h>
#include <unistd.h> #include <time.h>
#include "../include/jeu.h" #include "../include/jeu.h"
#include "../include/jeu_ia.h" #include "../include/jeu_ia.h"
#include "../include/jeu_humain.h" /* Pour utiliser la fonction attendre */
/* 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) {
@@ -21,7 +21,7 @@ void jouerModeIA(struct EtatJeu *etatJeu) {
} }
} }
} else { } else {
usleep(500000); attendre(1);
if (etatJeu->phase == 0) { if (etatJeu->phase == 0) {
placementIA(etatJeu); placementIA(etatJeu);
} else if (etatJeu->phase == 1) { } else if (etatJeu->phase == 1) {
@@ -37,12 +37,12 @@ void jouerModeIA(struct EtatJeu *etatJeu) {
if (gagnant != 0) { if (gagnant != 0) {
afficherVictoire(gagnant); afficherVictoire(gagnant);
while (!SourisCliquee()) { while (!SourisCliquee()) {
usleep(500000); attendre(1);
} }
break; break;
} }
} }
usleep(500000); attendre(1);
} }
} }

View File

@@ -1,8 +1,6 @@
#define _DEFAULT_SOURCE /* Pour utiliser X et Y */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <graph.h> #include <graph.h>
#include <unistd.h>
#include <time.h> #include <time.h>
#include "../include/jeu.h" #include "../include/jeu.h"
#include "../include/jeu_humain.h" #include "../include/jeu_humain.h"
@@ -16,15 +14,16 @@ void menuPrincipale() {
int besoinRedessiner = 1; int besoinRedessiner = 1;
struct EtatJeu etatJeu; struct EtatJeu etatJeu;
InitialiserGraphique(); /* Initialise la fenêtre graphique */ InitialiserGraphique();
CreerFenetre(100, 100, 800, 600); /* Crée la fenêtre graphique */ CreerFenetre(100, 100, 800, 600);
ChoisirTitreFenetre("Blokus"); /* Change le titre de la fenêtre */ ChoisirTitreFenetre("Blocus");
while (continuer) { while (continuer) {
if (besoinRedessiner) { if (besoinRedessiner) {
EffacerEcran(CouleurParNom("white")); EffacerEcran(CouleurParNom("white"));
ChoisirCouleurDessin(CouleurParNom("black")); ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(290, 50, "Jeu du Blokus", 2); EcrireTexte(290, 50, "Jeu du Blocus", 2);
EcrireTexte(250, 130, "Taille de la grille:", 1); EcrireTexte(250, 130, "Taille de la grille:", 1);
sprintf(tailleStr, "%d", tailleGrille); sprintf(tailleStr, "%d", tailleGrille);
EcrireTexte(450, 130, tailleStr, 1); EcrireTexte(450, 130, tailleStr, 1);
@@ -47,23 +46,23 @@ void menuPrincipale() {
besoinRedessiner = 0; besoinRedessiner = 0;
} }
if (SourisCliquee()) { /* Si la souris est cliquée */ if (SourisCliquee()) {
int mouseX = _X; int mouseX = _X;
int mouseY = _Y; int mouseY = _Y;
if (mouseX >= 500 && mouseX <= 530 && mouseY >= 110 && mouseY <= 140) { /* Si la souris est sur la case + */ if (mouseX >= 500 && mouseX <= 530 && mouseY >= 110 && mouseY <= 140) {
if (tailleGrille < 9) { if (tailleGrille < 9) {
tailleGrille++; tailleGrille++;
besoinRedessiner = 1; besoinRedessiner = 1;
} }
} else if (mouseX >= 540 && mouseX <= 570 && mouseY >= 110 && mouseY <= 140) { /* Si la souris est sur la case - */ } else if (mouseX >= 540 && mouseX <= 570 && mouseY >= 110 && mouseY <= 140) {
if (tailleGrille > 3) { if (tailleGrille > 3) {
tailleGrille--; tailleGrille--;
besoinRedessiner = 1; besoinRedessiner = 1;
} }
} else if (mouseX >= 250 && mouseX <= 600) { /* Si la souris est sur la case 1 Joueur (contre IA) */ } else if (mouseX >= 250 && mouseX <= 600) {
if ((mouseY >= 180 && mouseY <= 230) || (mouseY >= 250 && mouseY <= 300)) { if ((mouseY >= 180 && mouseY <= 230) || (mouseY >= 250 && mouseY <= 300)) {
/* calcule le mode de jeu en fonction de où on clique (1 pour ia, 2 pour 2 joueurs) */
int mode = (mouseY >= 180 && mouseY <= 230) ? 1 : 2; int mode = (mouseY >= 180 && mouseY <= 230) ? 1 : 2;
etatJeu = initialiserJeu(tailleGrille, mode); etatJeu = initialiserJeu(tailleGrille, mode);
EffacerEcran(CouleurParNom("white")); EffacerEcran(CouleurParNom("white"));
@@ -82,15 +81,15 @@ void menuPrincipale() {
} }
} }
} }
usleep(10000); attendre(10);
} }
FermerGraphique(); FermerGraphique();
} }
/* fonction principale qui lance le jeu */
int main() { int main(void) {
srand(time(NULL)); /* initialise le générateur de nombres aléatoires */ srand((unsigned int)time(NULL));
menuPrincipale(); menuPrincipale();
return 0; return EXIT_FAILURE;
} }