From a15249f393b8fea26f2b3b04c11d53f9a0a16106 Mon Sep 17 00:00:00 2001 From: Lea Date: Fri, 21 Nov 2025 14:38:06 -0500 Subject: [PATCH] =?UTF-8?q?modifs=20du=20code=20avec=20les=20ajouts=20de?= =?UTF-8?q?=20Sol=C3=A8ne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TicTacToe/0 | 1 + TicTacToe/fonctions.cpp | 85 +++++++++++++++++------ TicTacToe/fonctions.h | 21 ++++-- TicTacToe/main.cpp | 55 ++++++++------- menuTitre.txt => TicTacToe/menuTitre.txt | 0 {themes => TicTacToe/themes}/themeSea.txt | 0 6 files changed, 108 insertions(+), 54 deletions(-) create mode 100644 TicTacToe/0 rename menuTitre.txt => TicTacToe/menuTitre.txt (100%) rename {themes => TicTacToe/themes}/themeSea.txt (100%) diff --git a/TicTacToe/0 b/TicTacToe/0 new file mode 100644 index 0000000..d7619da --- /dev/null +++ b/TicTacToe/0 @@ -0,0 +1 @@ +Appuyez sur une touche pour continuer... \ No newline at end of file diff --git a/TicTacToe/fonctions.cpp b/TicTacToe/fonctions.cpp index 2d27b70..7ef2ec4 100644 --- a/TicTacToe/fonctions.cpp +++ b/TicTacToe/fonctions.cpp @@ -15,11 +15,14 @@ BUT : Fichier de fonctions Tic Tac Toe using namespace std; extern const int LARGTIC; +const string ICONJ1 = { "X" }; +const string ICONJ2 = { "O" }; fstream monFlux; HANDLE hconsole = GetStdHandle(STD_OUTPUT_HANDLE); char carre = 219, choix; +//Fichiers void ouvrirFichier(std::fstream& monFlux, std::string nomFichier) { monFlux.open(nomFichier, ios::in); if (!monFlux) //On vérifie si le flux est "faux"/non fonctionnel. @@ -34,6 +37,26 @@ void fermerFichier(std::fstream& monFlux) { monFlux.close(); } +//Menu +void afficherMenu(char& choix) { + system("cls"); + //T I C T A C T O E + ouvrirFichier(monFlux, "menuTitre.txt"); + afficherImageMenu(monFlux); + fermerFichier(monFlux); + + // Menu + cout << endl << "MENU" << endl << "----------------------------------" << endl + << "A) 1 joueur" << endl + << "B) 2 joueurs" << endl + << "C) Montrer l'historique des scores" << endl + << "D) Changer le style du jeu" << endl + << "Q) Quitter" << endl << endl + << "Quel est votre choix? "; + choix = toupper(_getche()); + cout << endl; +} + void afficherImageMenu(std::fstream& monFlux) { int repet = 0; if (monFlux) { @@ -59,6 +82,7 @@ void afficherImageMenu(std::fstream& monFlux) { } } +//Général (plusieurs options) void afficherImageTableau(std::string grid[][LARGTIC]) { SetConsoleOutputCP(CP_UTF8); string emoteUp, @@ -126,6 +150,26 @@ void afficherImageTableau(std::string grid[][LARGTIC]) { } +void tourJoueur(string grid[][LARGTIC], int joueur) { + int verticale, + horizontale; + + cout << "\n\nTour du joueur " << joueur << endl; + afficherImageTableau(grid); + + cout << "\n\nEntrez une coordonnee verticale : "; + cin >> verticale; + cout << "\nEntrez une coordonnee horizontale : "; + cin >> horizontale; + + if (joueur == 1) { + grid[verticale - 1][horizontale - 1] = ICONJ1; + } + else { + grid[verticale - 1][horizontale - 1] = ICONJ2; + } +} + bool verifFinMatch(std::string grid[][LARGTIC]) { bool fin = true; // Valide horizontales @@ -166,38 +210,37 @@ bool verifFinMatch(std::string grid[][LARGTIC]) { } } -//Menu -void afficherMenu(char& choix) { - system("cls"); - //T I C T A C T O E - ouvrirFichier(monFlux, "menuTitre.txt"); - afficherImageMenu(monFlux); - fermerFichier(monFlux); +//1 joueur +void jeuUnJoueur(string grid[][LARGTIC]) { + bool fin; + cout << "\nUn joueur a ete choisi. Le joueur joue en premier.\n\n"; - // Menu - cout << endl << "MENU" << endl << "----------------------------------" << endl - << "A) 1 joueur" << endl - << "B) 2 joueurs" << endl - << "C) Montrer l'historique des scores" << endl - << "D) Changer le style du jeu" << endl - << "Q) Quitter" << endl << endl - << "Quel est votre choix? "; - choix = toupper(_getche()); - cout << endl; + do { + tourJoueur(grid, 1); + tourOrdi(grid); + system("PAUSE>0"); + fin = verifFinMatch(grid); + } while (fin = true); } -void initialiserGrid(string grid[][LARGTIC]) { +void tourOrdi(string grid[][LARGTIC]) { + int vertical = rand() % (3); + int horizontal = rand() % (3); + cout << "\n\nTour de l'ordinateur" << endl; + afficherImageTableau(grid); + + grid[vertical][horizontal] = ICONJ2; } +//2 joueurs void jeuDeuxJoueurs(string grid[][LARGTIC]) { bool fin; cout << endl << "Deux joueurs a ete choisi. Les tours seront l'un a la suite de l'autre." << endl << endl; do { - cout << "Tour du joueur" << endl; - afficherImageTableau(grid); - system("PAUSE"); + tourJoueur(grid, 1); + tourJoueur(grid, 2); fin = verifFinMatch(grid); // la condition doit être une série de 3 chiffres } while (fin = true); diff --git a/TicTacToe/fonctions.h b/TicTacToe/fonctions.h index 3c229ed..1f03117 100644 --- a/TicTacToe/fonctions.h +++ b/TicTacToe/fonctions.h @@ -9,18 +9,25 @@ BUT : D #include #include #pragma once + const int LARGTIC = 3; -void afficherMenu(char& choix); -void afficherImageMenu(std::fstream& monFlux); - +//Fichiers void ouvrirFichier(std::fstream& monFlux, std::string nomFichier); void fermerFichier(std::fstream& monFlux); -void initialiserGrid(std::string grid[][LARGTIC]); +//Menu +void afficherMenu(char& choix); +void afficherImageMenu(std::fstream& monFlux); +//Général void afficherImageTableau(std::string grid[][LARGTIC]); - -void jeuDeuxJoueurs(std::string grid[][LARGTIC]); - +void tourJoueur(std::string grid[][LARGTIC], int joueur); //pour savoir quel icon utiliser bool verifFinMatch(std::string grid[][LARGTIC]); + +//1 joueur +void jeuUnJoueur(std::string grid[][LARGTIC]); +void tourOrdi(std::string grid[][LARGTIC]); + +//2 joueurs +void jeuDeuxJoueurs(std::string grid[][LARGTIC]); \ No newline at end of file diff --git a/TicTacToe/main.cpp b/TicTacToe/main.cpp index 4ecc1d0..bf77ba4 100644 --- a/TicTacToe/main.cpp +++ b/TicTacToe/main.cpp @@ -10,42 +10,45 @@ BUT : Main pour le jeu Tic Tac Toe #include "fonctions.h" using namespace std; -extern const int LARGTIC; +const string ICONJ1 = { "X" }; +const string ICONJ2 = { "O" }; int main() { - char choix; - string grid[LARGTIC][LARGTIC] = { "x", "o","x", "x", "o","x" , "x", "o","x" }; + srand(time(NULL)); - do { - afficherMenu(choix); + char choix; + string grid[LARGTIC][LARGTIC] = { " ", " ", " "," ", " ", " ", " ", " ", " "}; - switch (choix) { - case 'A': + do { + afficherMenu(choix); - break; + switch (choix) { + case 'A': + system("cls"); + jeuUnJoueur(grid); + break; - case 'B': - system("cls"); - jeuDeuxJoueurs(grid); - break; + case 'B': + system("cls"); + jeuDeuxJoueurs(grid); + break; - case 'C': + case 'C': - break; + break; - case 'D': + case 'D': - break; + break; - case 'Q': - cout << "Au revoir!"; - break; - - default: - cout << endl << "Saisissez un choix valide." << endl; - break; - } - system("PAUSE>0"); - } while (choix != 'Q'); + case 'Q': + cout << "\nAu revoir!"; + break; + default: + cout << endl << "Saisissez un choix valide." << endl; + break; + } + system("PAUSE>0"); + } while (choix != 'Q'); } \ No newline at end of file diff --git a/menuTitre.txt b/TicTacToe/menuTitre.txt similarity index 100% rename from menuTitre.txt rename to TicTacToe/menuTitre.txt diff --git a/themes/themeSea.txt b/TicTacToe/themes/themeSea.txt similarity index 100% rename from themes/themeSea.txt rename to TicTacToe/themes/themeSea.txt