Compare commits
12 Commits
a10845eff2
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b488389d8a | ||
|
|
c928b9483d | ||
|
|
ffe4af9f93 | ||
|
|
1d513239d2 | ||
|
|
d445cda491 | ||
|
|
b991978b6d | ||
|
|
a72da69ea7 | ||
|
|
008f2a3329 | ||
|
|
00217eb38a | ||
|
|
548c4ed27e | ||
|
|
1a8a5dd8d7 | ||
|
|
82cbc90c4c |
@@ -28,7 +28,7 @@ char carre = 219, choix;
|
||||
//<2F> faire : <20>galit<69> et entrer de coordonn<6E>e
|
||||
|
||||
//Fichiers
|
||||
void ouvrirFichier(std::fstream& monFlux, std::string nomFichier) {
|
||||
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.
|
||||
{
|
||||
@@ -38,7 +38,7 @@ void ouvrirFichier(std::fstream& monFlux, std::string nomFichier) {
|
||||
}
|
||||
}
|
||||
|
||||
void fermerFichier(std::fstream& monFlux) {
|
||||
void fermerFichier(std::fstream & monFlux) {
|
||||
monFlux.close();
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ void afficherMenu(char& choix) {
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
void afficherImageMenu(std::fstream& monFlux) {
|
||||
void afficherImageMenu(std::fstream & monFlux) {
|
||||
int repet = 0;
|
||||
if (monFlux) {
|
||||
while (!monFlux.eof()) {
|
||||
@@ -183,46 +183,53 @@ void afficherImageTableau(std::string grid[][LARGTIC], std::string style) {
|
||||
SetConsoleOutputCP(codeConsole);
|
||||
}
|
||||
|
||||
bool verifFinMatch(std::string grid[][LARGTIC]) {
|
||||
bool verifFinMatch(std::string grid[][LARGTIC], int compteur) {
|
||||
bool fin = false;
|
||||
int max = LARGTIC * LARGTIC;
|
||||
int compteur = 0;
|
||||
if (compteur == max) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
compteur++;
|
||||
// Valide horizontales
|
||||
for (int i = 0; i < 2; i++) {
|
||||
// Valide horizontales 00, 01, 02 || 10, 11, 12 || 20, 21, 22
|
||||
for (int i = 0; i < LARGTIC; i++) {
|
||||
fin = true;
|
||||
for (int j = 0; j < 2; j++) {
|
||||
for (int j = 0; j < LARGTIC - 1; j++) {
|
||||
if (grid[i][j] == "") {
|
||||
fin = false;
|
||||
}
|
||||
|
||||
else {
|
||||
fin = fin && (grid[i][j] == grid[i][j + 1]);
|
||||
//cout << "comparaison de " << i << "," << j << " et " << i << "," << j+1 << endl;
|
||||
}
|
||||
}
|
||||
if (fin == true) {
|
||||
return fin;
|
||||
}
|
||||
}
|
||||
// Valide verticales
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (fin == true) {
|
||||
return fin;
|
||||
}
|
||||
|
||||
// Valide verticales 00, 10, 20 || 01, 11, 21 || 02, 12, 22
|
||||
for (int i = 0; i < LARGTIC; i++) {
|
||||
fin = true;
|
||||
for (int j = 0; j < 2; j++) {
|
||||
if (grid[i][j] == "") {
|
||||
for (int j = 0; j < LARGTIC - 1; j++) {
|
||||
if (grid[j][i] == "") {
|
||||
fin = false;
|
||||
}
|
||||
else {
|
||||
fin = fin && (grid[i][j] == grid[i + 1][j]);
|
||||
fin = fin && (grid[j][i] == grid[j + 1][i]);
|
||||
//cout << "comparaison de" << j << "," << i << " et " << j + 1 << "," << i << endl;
|
||||
}
|
||||
}
|
||||
if (fin == true) {
|
||||
return fin;
|
||||
}
|
||||
}
|
||||
if (fin == true) {
|
||||
return fin;
|
||||
}
|
||||
|
||||
// Valide diagonale de 00, 11, 22
|
||||
fin = true;
|
||||
for (int i = 0; i < 2; i++) {
|
||||
@@ -261,14 +268,37 @@ void afficherFinMatch(string grid[][LARGTIC], int gagnant, int nbJoueurs) {
|
||||
if (gagnant == 1) {
|
||||
cout << "\n\nLe joueur a gagne la partie!";
|
||||
}
|
||||
else {
|
||||
else if (gagnant == 2) {
|
||||
cout << "\n\nL'ordinateur a gagne la partie!";
|
||||
}
|
||||
else {
|
||||
cout << "\n\nPartie nulle!";
|
||||
}
|
||||
}
|
||||
|
||||
else if (nbJoueurs == 2){
|
||||
if (gagnant == 1) {
|
||||
cout << "\n\nJoueur 1 a gagne la partie!";
|
||||
}
|
||||
else if (gagnant == 2) {
|
||||
cout << "\n\nJoueur 2 a gagne la partie!";
|
||||
}
|
||||
else {
|
||||
cout << "\n\nPartie nulle!";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int partieNulle(string grid[][LARGTIC], int compteur) {
|
||||
int max = LARGTIC * LARGTIC;
|
||||
int temp = gagnant;
|
||||
if (compteur == max) {
|
||||
gagnant = 3;
|
||||
}
|
||||
else {
|
||||
cout << "\n\nLe joueur " << gagnant
|
||||
<< " a gagne la partie!";
|
||||
gagnant = temp;
|
||||
}
|
||||
return gagnant;
|
||||
}
|
||||
|
||||
// Joueur
|
||||
@@ -323,24 +353,25 @@ void tourJoueur(string grid[][LARGTIC], int joueur) {
|
||||
//1 joueur
|
||||
void jeuUnJoueur(string grid[][LARGTIC]) {
|
||||
bool fin;
|
||||
int gagnant;
|
||||
int nbJoueurs = 1;
|
||||
int compteur = 0;
|
||||
|
||||
cout << "Un joueur a ete choisi. Le joueur joue en premier.";
|
||||
|
||||
//AJOUTER UN COMPTEUR DE TOURS POUR LES EXAEQUO!!!!!!
|
||||
|
||||
do {
|
||||
tourJoueur(grid, 1);
|
||||
gagnant = 1;
|
||||
fin = verifFinMatch(grid);
|
||||
compteur++;
|
||||
fin = verifFinMatch(grid, compteur);
|
||||
if (fin != true) {
|
||||
tourOrdi(grid);
|
||||
gagnant = 2;
|
||||
system("PAUSE>nul");
|
||||
fin = verifFinMatch(grid);
|
||||
compteur++;
|
||||
fin = verifFinMatch(grid, compteur);
|
||||
}
|
||||
} while (fin != true);
|
||||
gagnant = partieNulle(grid, compteur);
|
||||
afficherFinMatch(grid, gagnant, nbJoueurs);
|
||||
}
|
||||
|
||||
@@ -361,21 +392,24 @@ void tourOrdi(string grid[][LARGTIC]) {
|
||||
//2 joueurs
|
||||
void jeuDeuxJoueurs(string grid[][LARGTIC]) {
|
||||
bool fin;
|
||||
int gagnant;
|
||||
int nbJoueurs = 2;
|
||||
int compteur = 0;
|
||||
|
||||
cout << "\nDeux joueurs a ete choisi. Les tours seront l'un a la suite de l'autre.\n\n";
|
||||
|
||||
do {
|
||||
tourJoueur(grid, 1);
|
||||
gagnant = 1;
|
||||
fin = verifFinMatch(grid);
|
||||
compteur++;
|
||||
fin = verifFinMatch(grid, compteur);
|
||||
if (fin != true) {
|
||||
tourJoueur(grid, 2);
|
||||
gagnant = 2;
|
||||
fin = verifFinMatch(grid);
|
||||
compteur++;
|
||||
fin = verifFinMatch(grid, compteur);
|
||||
}
|
||||
} while (fin != true);
|
||||
gagnant = partieNulle(grid, compteur);
|
||||
afficherFinMatch(grid, gagnant, nbJoueurs);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,8 +24,9 @@ void afficherImageMenu(std::fstream& monFlux);
|
||||
//G<>n<EFBFBD>ral
|
||||
void afficherImageTableau(std::string grid[][LARGTIC], std::string style);
|
||||
void tourJoueur(std::string grid[][LARGTIC], int joueur); //pour savoir quel icon utiliser
|
||||
bool verifFinMatch(std::string grid[][LARGTIC], int gagnant);
|
||||
bool verifFinMatch(std::string grid[][LARGTIC], int compteur);
|
||||
void afficherFinMatch(std::string grid[][LARGTIC], int gagnant, int nbJoueurs);
|
||||
int partieNulle(std::string grid[][LARGTIC], int compteur);
|
||||
|
||||
//1 joueur
|
||||
void jeuUnJoueur(std::string grid[][LARGTIC]);
|
||||
|
||||
@@ -21,23 +21,23 @@ int main() {
|
||||
afficherMenu(choix);
|
||||
|
||||
switch (choix) {
|
||||
case 'A':
|
||||
system("cls");
|
||||
jeuUnJoueur(grid);
|
||||
break;
|
||||
case 'A':
|
||||
system("cls");
|
||||
jeuUnJoueur(grid);
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
system("cls");
|
||||
jeuDeuxJoueurs(grid);
|
||||
break;
|
||||
case 'B':
|
||||
system("cls");
|
||||
jeuDeuxJoueurs(grid);
|
||||
break;
|
||||
|
||||
case 'C':
|
||||
changerLeTheme();
|
||||
break;
|
||||
case 'C':
|
||||
changerLeTheme();
|
||||
break;
|
||||
|
||||
case 'Q':
|
||||
cout << "\nAu revoir!";
|
||||
break;
|
||||
case 'Q':
|
||||
cout << "\nAu revoir!";
|
||||
break;
|
||||
|
||||
default:
|
||||
cout << endl << "Saisissez un choix valide." << endl;
|
||||
|
||||
Reference in New Issue
Block a user