diff --git a/TicTacToe/TicTacToe.vcxproj b/TicTacToe/TicTacToe.vcxproj index c70ca2c..5cd7403 100644 --- a/TicTacToe/TicTacToe.vcxproj +++ b/TicTacToe/TicTacToe.vcxproj @@ -130,6 +130,9 @@ + + + diff --git a/TicTacToe/TicTacToe.vcxproj.filters b/TicTacToe/TicTacToe.vcxproj.filters index 34c81d4..6da88d3 100644 --- a/TicTacToe/TicTacToe.vcxproj.filters +++ b/TicTacToe/TicTacToe.vcxproj.filters @@ -30,4 +30,9 @@ Source Files + + + Header Files + + \ No newline at end of file diff --git a/TicTacToe/fonctions.cpp b/TicTacToe/fonctions.cpp index b5754e2..2d27b70 100644 --- a/TicTacToe/fonctions.cpp +++ b/TicTacToe/fonctions.cpp @@ -1 +1,204 @@ -ok \ No newline at end of file +/*==================================== +AUTEURS : Léa Dezothez et Solène Baillargeon +PROJET : Final +NOM DU FICHIER : fonctions.cpp +DATE : 2025-11-14 +BUT : Fichier de fonctions Tic Tac Toe +====================================*/ + +#include "fonctions.h" +#include +#include +#include +#include +#include +using namespace std; + +extern const int LARGTIC; + +fstream monFlux; +HANDLE hconsole = GetStdHandle(STD_OUTPUT_HANDLE); +char carre = 219, choix; + +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. + { + cout << "ERREUR: Impossible d'ouvrir le fichier!" << endl; + system("PAUSE>0"); + exit(1); //On quitte immédiatement le programme + } +} + +void fermerFichier(std::fstream& monFlux) { + monFlux.close(); +} + +void afficherImageMenu(std::fstream& monFlux) { + int repet = 0; + if (monFlux) { + while (!monFlux.eof()) { + monFlux >> repet; + if (repet == 99) { + cout << endl; + } + else if (repet == 0) { + cout << " "; + } + else { + SetConsoleTextAttribute(hconsole, 15); + cout << carre << carre; + } + } + monFlux.close(); + cout << endl; + } + else { + cout << "ERREUR : Impossible d’ouvrir le fichier! " << endl; + exit(1); + } +} + +void afficherImageTableau(std::string grid[][LARGTIC]) { + SetConsoleOutputCP(CP_UTF8); + string emoteUp, + emoteLine, + emoteDown; + ouvrirFichier(monFlux, "themes/themeSea.txt"); + if (monFlux) { + while (!monFlux.eof()) { + monFlux >> emoteUp >> emoteLine >> emoteDown; + } + monFlux.close(); + cout << endl; + } + else { + cout << "ERREUR : Impossible d’ouvrir le fichier! " << endl; + exit(1); + } + fermerFichier(monFlux); + + cout << " "; + for (int i = 0; i < LARGTIC; i++) { + cout << " " << i + 1 << " "; + } + cout << " " << endl << " "; + for (int k = 0; k < LARGTIC; k++) { + + for (int i = 0; i < LARGTIC; i++) { + for (int j = 0; j < 2; j++) { + cout << emoteUp << " "; + } + } + cout << endl << " "; + + for (int i = 0; i < LARGTIC; i++) { + cout << emoteLine; + for (int j = 0; j < 3; j++) { + cout << " "; + } + } + cout << emoteLine << endl << " " << k + 1 << " "; + + + for (int i = 0; i < LARGTIC; i++) { + cout << emoteLine << " " << grid[k][i] << " "; + + } + cout << emoteLine << endl << " "; + + for (int i = 0; i < LARGTIC; i++) { + cout << emoteLine; + for (int j = 0; j < 3; j++) { + cout << " "; + } + } + cout << emoteLine << endl << " "; + + } + + for (int i = 0; i < LARGTIC; i++) { + for (int j = 0; j < 2; j++) { + cout << emoteDown << " "; + } + } + cout << endl; + +} + +bool verifFinMatch(std::string grid[][LARGTIC]) { + bool fin = true; + // Valide horizontales + for (int i = 0; i < 2; i++) { + fin = true; + for (int j = 0; j < 2; j++) { + fin = fin && grid[i][j] == grid[i][j + 1]; + } + if (fin == true) { + return fin; + } + } + // Valide verticales + for (int i = 0; i < 2; i++) { + fin = true; + for (int j = 0; j < 2; j++) { + fin = fin && grid[i][j] == grid[i + 1][j]; + } + if (fin == true) { + return fin; + } + } + // Valide diagonale de 00, 11, 22 + fin = true; + for (int i = 0; i < 2; i++) { + fin = fin && grid[i][i] == grid[i + 1][i + 1]; + if (fin == true) { + return fin; + } + } + + // Valide diagonale 02, 11, 20 + for (int i = 2; i > 0; i--) { + fin = fin && grid[i][i] == grid[i - 1][i - 1]; + if (fin == true) { + return fin; + } + } +} + +//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 initialiserGrid(string grid[][LARGTIC]) { + +} + +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"); + fin = verifFinMatch(grid); + // la condition doit être une série de 3 chiffres + } while (fin = true); +} \ No newline at end of file diff --git a/TicTacToe/fonctions.h b/TicTacToe/fonctions.h new file mode 100644 index 0000000..3c229ed --- /dev/null +++ b/TicTacToe/fonctions.h @@ -0,0 +1,26 @@ +/*==================================== +AUTEURS : Léa Dezothez et Solène Baillargeon +PROJET : Final +NOM DU FICHIER : fonctions.h +DATE : 2025-11-14 +BUT : Déclaration fonctions pour le jeu Tic Tac Toe +====================================*/ + +#include +#include +#pragma once +const int LARGTIC = 3; + +void afficherMenu(char& choix); +void afficherImageMenu(std::fstream& monFlux); + +void ouvrirFichier(std::fstream& monFlux, std::string nomFichier); +void fermerFichier(std::fstream& monFlux); + +void initialiserGrid(std::string grid[][LARGTIC]); + +void afficherImageTableau(std::string grid[][LARGTIC]); + +void jeuDeuxJoueurs(std::string grid[][LARGTIC]); + +bool verifFinMatch(std::string grid[][LARGTIC]); diff --git a/TicTacToe/main.cpp b/TicTacToe/main.cpp index e69de29..4ecc1d0 100644 --- a/TicTacToe/main.cpp +++ b/TicTacToe/main.cpp @@ -0,0 +1,51 @@ +/*==================================== +AUTEURS : Léa Dezothez et Solène Baillargeon +PROJET : Final +NOM DU FICHIER : main.cpp +DATE : 2025-11-14 +BUT : Main pour le jeu Tic Tac Toe +====================================*/ + +#include +#include "fonctions.h" +using namespace std; + +extern const int LARGTIC; + +int main() { + char choix; + string grid[LARGTIC][LARGTIC] = { "x", "o","x", "x", "o","x" , "x", "o","x" }; + + do { + afficherMenu(choix); + + switch (choix) { + case 'A': + + break; + + case 'B': + system("cls"); + jeuDeuxJoueurs(grid); + break; + + case 'C': + + break; + + case 'D': + + break; + + case 'Q': + cout << "Au 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/menuTitre.txt new file mode 100644 index 0000000..9d061a1 --- /dev/null +++ b/menuTitre.txt @@ -0,0 +1,8 @@ +2 2 2 2 2 0 2 2 2 2 2 0 2 2 2 2 0 0 2 2 2 2 2 0 0 2 2 2 0 0 2 2 2 2 0 0 2 2 2 2 2 0 0 2 2 2 0 0 2 2 2 2 99 +0 0 2 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 0 0 0 99 +0 0 2 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 0 0 0 99 +0 0 2 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 2 2 2 99 +0 0 2 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 2 2 2 2 2 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 0 0 0 99 +0 0 2 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 0 0 0 99 +0 0 2 0 0 0 2 2 2 2 2 0 2 2 2 2 0 0 0 0 2 0 0 0 2 0 0 0 2 0 2 2 2 2 0 0 0 0 2 0 0 0 0 2 2 2 0 0 2 2 2 2 99 + diff --git a/themes/themeSea.txt b/themes/themeSea.txt new file mode 100644 index 0000000..cc332be --- /dev/null +++ b/themes/themeSea.txt @@ -0,0 +1,3 @@ +🌊 +🔹 +🪸 \ No newline at end of file