#define _DEFAULT_SOURCE #include #include #include #include #include #include "jeu.h" #include "jeu_humain.h" #include "jeu_ia.h" /* fonction qui gère tout le menu du jeu avec les boutons et tout */ void menuPrincipale() { int tailleGrille = 3; int continuer = 1; char tailleStr[4]; int besoinRedessiner = 1; struct EtatJeu etatJeu; InitialiserGraphique(); /* Initialise la fenêtre graphique */ CreerFenetre(100, 100, 800, 600); /* Crée la fenêtre graphique */ ChoisirTitreFenetre("Blokus"); /* Change le titre de la fenêtre */ while (continuer) { if (besoinRedessiner) { EffacerEcran(CouleurParNom("white")); ChoisirCouleurDessin(CouleurParNom("black")); EcrireTexte(290, 50, "Jeu du Blokus", 2); EcrireTexte(250, 130, "Taille de la grille:", 1); sprintf(tailleStr, "%d", tailleGrille); EcrireTexte(450, 130, tailleStr, 1); RemplirRectangle(500, 110, 30, 30); RemplirRectangle(540, 110, 30, 30); ChoisirCouleurDessin(CouleurParNom("white")); EcrireTexte(510, 125, "+", 1); EcrireTexte(550, 125, "-", 1); ChoisirCouleurDessin(CouleurParNom("black")); RemplirRectangle(250, 190, 300, 50); RemplirRectangle(250, 260, 300, 50); ChoisirCouleurDessin(CouleurParNom("white")); EcrireTexte(280, 215, "1 Joueur (contre IA)", 1); EcrireTexte(280, 285, "2 Joueurs", 1); ChoisirCouleurDessin(CouleurParNom("black")); RemplirRectangle(250, 330, 300, 50); ChoisirCouleurDessin(CouleurParNom("white")); EcrireTexte(280, 355, "Quitter", 1); besoinRedessiner = 0; } if (SourisCliquee()) { /* Si la souris est cliquée */ int mouseX = _X; int mouseY = _Y; if (mouseX >= 500 && mouseX <= 530 && mouseY >= 110 && mouseY <= 140) { /* Si la souris est sur la case + */ if (tailleGrille < 9) { tailleGrille++; besoinRedessiner = 1; } } else if (mouseX >= 540 && mouseX <= 570 && mouseY >= 110 && mouseY <= 140) { /* Si la souris est sur la case - */ if (tailleGrille > 3) { tailleGrille--; besoinRedessiner = 1; } } else if (mouseX >= 250 && mouseX <= 600) { /* Si la souris est sur la case 1 Joueur (contre IA) */ 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; etatJeu = initialiserJeu(tailleGrille, mode); EffacerEcran(CouleurParNom("white")); dessinerGrille(etatJeu); if (mode == 1) { jouerModeIA(&etatJeu); } else { jouerModeHumain(&etatJeu); } besoinRedessiner = 1; } else if (mouseY >= 320 && mouseY <= 370) { continuer = 0; } } } usleep(10000); } FermerGraphique(); } /* fonction principale qui lance le jeu */ int main() { srand(time(NULL)); /* initialise le générateur de nombres aléatoires */ menuPrincipale(); return 0; }