Projet tic tac toe / Morpion
ano75
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je débute la programmation, j'ai un soucis dans mon programme cela fait plusieurs jours que j'essaie de régler mon problème mais je désèpere je n'arrive toujours pas à trouver la solution :/. Mon problème c'est lorsque je demande la saisie d'une coordonnée si celle-ci a déja était saisi normalement elle devrait pas s'afficher or elle s'affiche et passe au joueur numéro 2. Si quelqu'un peut m'aider ca serait super sympa
le code :
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
Je débute la programmation, j'ai un soucis dans mon programme cela fait plusieurs jours que j'essaie de régler mon problème mais je désèpere je n'arrive toujours pas à trouver la solution :/. Mon problème c'est lorsque je demande la saisie d'une coordonnée si celle-ci a déja était saisi normalement elle devrait pas s'afficher or elle s'affiche et passe au joueur numéro 2. Si quelqu'un peut m'aider ca serait super sympa
le code :
using System; namespace Morpion2 { class Program { static void Main(string[] args) { int reponserst = 0; Console.WriteLine(" \n................Bonjour est bienvenue sur le morpion.................\n "); string NomJoueur1, NomJoueur2; Console.WriteLine("\nVeuilez choisir le Nom du joueur N°1\n"); NomJoueur1 = Console.ReadLine(); Console.WriteLine("\nVeuilez choisir le Nom du joueur N°2\n"); NomJoueur2 = Console.ReadLine(); string lettre; Nomjoueur(NomJoueur1, NomJoueur2); Console.WriteLine("Apuyer sur une touche pour commencer !"); Console.ReadKey(); char[,] Montab = new char[4, 4]; Remplitab(ref Montab); Affichetab(Montab); lettre = Console.ReadLine(); CoordJoueur1(ref Montab, lettre); CoordJoueur2(ref Montab, lettre); VerificationVictoireJ1(Montab); VerificationVictoireJ2(Montab); tourdeJeu(NomJoueur1, NomJoueur2, Montab, lettre); do { Console.WriteLine("Voulez vous recommencé ? 1 pour recommencer, peu importe pour quitter"); reponserst = int.Parse(Console.ReadLine()); Console.Clear(); Remplitab(ref Montab); Affichetab(Montab); tourdeJeu(NomJoueur1, NomJoueur2, Montab, lettre); } while (reponserst == 1); static void Nomjoueur(string NomJ1, string NomJ2) // Pour différencier les 2 joueurs et expliquer la règle { Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("\nIMPORTANT : " + NomJ1 + " jouera avec le O et " + NomJ2 + " jouera avec le X\n "); Console.ForegroundColor = ConsoleColor.White; Console.BackgroundColor = ConsoleColor.Black; } static void Remplitab(ref char[,] Montab) { Montab[0, 0] = ' '; Montab[0, 1] = 'A'; Montab[0, 2] = 'B'; Montab[0, 3] = 'C'; Montab[1, 0] = '1'; Montab[1, 1] = '■'; Montab[1, 2] = '■'; Montab[1, 3] = '■'; Montab[2, 0] = '2'; Montab[2, 1] = '■'; Montab[2, 2] = '■'; Montab[2, 3] = '■'; Montab[3, 0] = '3'; Montab[3, 1] = '■'; Montab[3, 2] = '■'; Montab[3, 3] = '■'; } static void Affichetab(char[,] Montab) { Console.Write("\nVotre Tableau : \n\n"); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { Console.Write(Montab[i, j]); Console.Write(" "); } Console.WriteLine(""); } } static void CoordJoueur1(ref char[,] Montab, string lettre) { if (lettre == "A1") Montab[1, 1] = 'O'; if (lettre == "A2") Montab[2, 1] = 'O'; if (lettre == "A3") Montab[3, 1] = 'O'; if (lettre == "B1") Montab[1, 2] = 'O'; if (lettre == "B2") Montab[2, 2] = 'O'; if (lettre == "B3") Montab[3, 2] = 'O'; if (lettre == "C1") Montab[1, 3] = 'O'; if (lettre == "C2") Montab[2, 3] = 'O'; if (lettre == "C3") Montab[3, 3] = 'O'; } static void CoordJoueur2(ref char[,] Montab, string lettre) { if (lettre == "A1") Montab[1, 1] = 'X'; if (lettre == "A2") Montab[2, 1] = 'X'; if (lettre == "A3") Montab[3, 1] = 'X'; if (lettre == "B1") Montab[1, 2] = 'X'; if (lettre == "B2") Montab[2, 2] = 'X'; if (lettre == "B3") Montab[3, 2] = 'X'; if (lettre == "C1") Montab[1, 3] = 'X'; if (lettre == "C2") Montab[2, 3] = 'X'; if (lettre == "C3") Montab[3, 3] = 'X'; } static bool VerificationVictoireJ1(char[,] Montab) { if (Montab[1, 1] == 'O' & Montab[1, 1] == Montab[2, 1] & Montab[2, 1] == Montab[3, 1]) // ligne | de gauche return true; else if (Montab[1, 2] == 'O' & Montab[1, 2] == Montab[2, 2] & Montab[2, 2] == Montab[3, 2]) // ligne | du millieu return true; else if (Montab[1, 3] == 'O' & Montab[1, 3] == Montab[2, 3] & Montab[2, 3] == Montab[3, 3])// ligne | de droite return true; else if (Montab[1, 1] == 'O' & Montab[1, 1] == Montab[1, 2] & Montab[1, 2] == Montab[1, 3])// ligne du haut horizontale --- return true; else if (Montab[2, 1] == 'O' & Montab[2, 1] == Montab[2, 2] & Montab[2, 2] == Montab[2, 3]) // ligne du millieu horizontale --- return true; else if (Montab[3, 1] == 'O' & Montab[3, 1] == Montab[3, 2] & Montab[3, 2] == Montab[3, 3])// ligne du bas horizontale --- return true; else if (Montab[1, 1] == 'O' & Montab[1, 1] == Montab[2, 2] & Montab[2, 2] == Montab[3, 3]) // ligne en diagonale \ return true; else if (Montab[1, 3] == 'O' & Montab[1, 3] == Montab[2, 2] & Montab[2, 2] == Montab[3, 1])// ligne en diagonale / return true; //Continue a jouer else return false; } static bool VerificationVictoireJ2(char[,] Montab) { if (Montab[1, 1] == 'X' & Montab[1, 1] == Montab[2, 1] & Montab[2, 1] == Montab[3, 1]) return true; else if (Montab[1, 2] == 'X' & Montab[1, 2] == Montab[2, 2] & Montab[2, 2] == Montab[3, 2]) return true; else if (Montab[1, 3] == 'X' & Montab[1, 3] == Montab[2, 3] & Montab[2, 3] == Montab[3, 3]) return true; else if (Montab[1, 1] == 'X' & Montab[1, 1] == Montab[1, 2] & Montab[1, 2] == Montab[1, 3]) return true; else if (Montab[2, 1] == 'X' & Montab[2, 1] == Montab[2, 2] & Montab[2, 2] == Montab[2, 3]) return true; else if (Montab[3, 1] == 'X' & Montab[3, 1] == Montab[3, 2] & Montab[3, 2] == Montab[3, 3]) return true; else if (Montab[1, 1] == 'X' & Montab[1, 1] == Montab[2, 2] & Montab[2, 2] == Montab[3, 3]) return true; else if (Montab[1, 3] == 'X' & Montab[1, 3] == Montab[2, 2] & Montab[2, 2] == Montab[3, 1]) return true; //Continue a jouer else return false; } static void tourdeJeu(string NomJ1, string NomJ2, char[,] Montab, string lettre)// lancemement du jeu avec vitoire, pas de victoire ou null { int tour = 1; int victoire = 0; int erreurpossible = 0; string positionj1; string positionj2; while (tour != 10 & victoire == 0) { Console.WriteLine("\nTour numéro " + tour); // Pour savoir le numéro du tour if (tour % 2 == 1) // pour le joueur1 { Console.WriteLine(NomJ1 + " Saisissez une coordonnée: "); lettre = Console.ReadLine(); CoordJoueur1(ref Montab, lettre); if (VerificationVictoireJ1(Montab) == true) victoire = 1; positionj1 = lettre; switch (positionj1) { case "A1": if (Montab[1, 1] != 'X') //& Montab[1, 1] != 'O') Montab[1, 1] = 'O'; else erreurpossible = 1; break; case "A2": if (Montab[2, 1] != 'X')// & Montab[2, 1] != 'O') Montab[2, 1] = 'O'; else erreurpossible = 1; break; case "A3": if (Montab[3, 1] != 'X')// & Montab[3, 1] != 'O') Montab[3, 1] = 'O'; else erreurpossible = 1; break; case "B1": if (Montab[1, 2] != 'X')// & Montab[1, 2] != 'O') Montab[1, 2] = 'O'; else erreurpossible = 1; break; case "B2": if (Montab[2, 2] != 'X')// & Montab[2, 2] != 'O') Montab[2, 2] = 'O'; else erreurpossible = 1; break; case "B3": if (Montab[3, 2] != 'X')// & Montab[3, 2] != 'O') Montab[3, 2] = 'O'; else erreurpossible = 1; break; case "C1": if (Montab[1, 3] != 'X')// & Montab[1, 3] != 'O') Montab[1, 3] = 'O'; else erreurpossible = 1; break; case "C2": if (Montab[2, 3] != 'X')// & Montab[2, 3] != 'O') Montab[2, 3] = 'O'; else erreurpossible = 1; break; case "C3": if (Montab[3, 3] != 'X')// & Montab[3, 3] != 'O') Montab[3, 3] = 'O'; else erreurpossible = 1; break; default: erreurpossible = 1; break; } while (erreurpossible == 1) { Console.WriteLine("case déja prise, veuillez choisir un autre emplacement"); lettre = Console.ReadLine(); Console.ForegroundColor = ConsoleColor.White; CoordJoueur1(ref Montab, lettre); CoordJoueur2(ref Montab, lettre); erreurpossible = 0; } VerificationVictoireJ1(Montab); } else { Console.WriteLine(NomJ2 + " Saisissez une coordonnée: "); lettre = Console.ReadLine(); CoordJoueur2(ref Montab, lettre); if (VerificationVictoireJ2(Montab) == true) victoire = 1; positionj2 = lettre; switch (positionj2) { case "A1": if (Montab[1, 1] != 'O')// & Montab[1, 1] != 'X') Montab[1, 1] = 'X'; else erreurpossible = 1; break; case "A2": if (Montab[2, 1] != 'O')// & Montab[2, 1] != 'X') Montab[2, 1] = 'X'; else erreurpossible = 1; break; case "A3": if (Montab[3, 1] != 'O')// & Montab[3, 1] != 'X') Montab[3, 1] = 'X'; else erreurpossible = 1; break; case "B1": if (Montab[1, 2] != 'O')// & Montab[1, 2] != 'X') Montab[1, 2] = 'X'; else erreurpossible = 1; break; case "B2": if (Montab[2, 2] != 'O')// & Montab[2, 2] != 'X') Montab[2, 2] = 'X'; else erreurpossible = 1; break; case "B3": if (Montab[3, 2] != 'O')// & Montab[3, 2] != 'X') Montab[3, 2] = 'X'; else erreurpossible = 1; break; case "C1": if (Montab[1, 3] != 'O')// & Montab[1, 3] != 'X') Montab[1, 3] = 'X'; else erreurpossible = 1; break; case "C2": if (Montab[2, 3] != 'O')// & Montab[2, 3] != 'O') Montab[2, 3] = 'X'; else erreurpossible = 1; break; case "C3": if (Montab[3, 3] != 'O')// & Montab[3, 3] != 'O') Montab[3, 3] = 'X'; else erreurpossible = 1; break; default: erreurpossible = 1; break; } while (erreurpossible == 1) { Console.WriteLine("case déja prise, veuillez choisir un autre emplacement"); lettre = Console.ReadLine(); Console.ForegroundColor = ConsoleColor.White; CoordJoueur1(ref Montab, lettre); CoordJoueur2(ref Montab, lettre); erreurpossible = 0; } VerificationVictoireJ2(Montab); } while (lettre != "A1" && lettre != "A2" && lettre != "A3" && lettre != "B1" && lettre != "B2" && lettre != "B3" && lettre != "C1" && lettre != "C2" && lettre != "C3") { Console.WriteLine("Saisissez une coordonnée valide: "); lettre = Console.ReadLine(); CoordJoueur1(ref Montab, lettre); CoordJoueur2(ref Montab, lettre); } Console.Clear(); tour++; Affichetab(Montab); } if (tour > 2 & VerificationVictoireJ1(Montab)) { Console.WriteLine(NomJ1 + " a gagné "); } if (tour > 2 & VerificationVictoireJ2(Montab)) { Console.WriteLine(NomJ2 + " a gagné "); } else if (tour == 10 & VerificationVictoireJ1(Montab) == VerificationVictoireJ2(Montab)) { Console.WriteLine("\n match nul\n "); } } } } }
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
A voir également:
- Projet tic tac toe / Morpion
- Tac-tic leroy merlin application android - Télécharger - Comptabilité & Facturation
- Filigrane projet - Guide
- Gant projet - Télécharger - Gestion de projets
- Musique projet x - Forum Musique / Radio / Clip
- Musique debut project x - Forum Audio
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
quand tu as cette anomalie, la case était-elle saisie par le même joueur, ou par l'autre joueur?
donne peut-être un exemple de partie qui provoque cette anomalie.
quand tu as cette anomalie, la case était-elle saisie par le même joueur, ou par l'autre joueur?
donne peut-être un exemple de partie qui provoque cette anomalie.
Bonjour
Maintenant que baladur a rendu ton code lisible, on peut commencer à essayer de t’aider.
Pour la suite,
Pour ton problème, on voit (maintenant) que la méthode main n’est pas fermée (pas d’accolade fermante) quand tu écris la méthode suivante.
Je serais très surpris que ça compile ainsi, ce qui me donne à penser qu’il pourrait manquer du code
Maintenant que baladur a rendu ton code lisible, on peut commencer à essayer de t’aider.
Pour la suite,
- va lire les instructions et le lien qu’il a ajouté à la fin de ta question
- pense à le remercier de son intervention.
Pour ton problème, on voit (maintenant) que la méthode main n’est pas fermée (pas d’accolade fermante) quand tu écris la méthode suivante.
Je serais très surpris que ça compile ainsi, ce qui me donne à penser qu’il pourrait manquer du code
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
à quoi sert la ligne 187?
le problème se pose pour les 2 joueurs, je voudrais que quand une coordonnées a déjà était saisi qu'il affiche un message d'erreur sur le joueur en question qui essaierai de saisir une coordonnée qui aurait déjà était saisi dans la partie. J'espere que mon exemple est assez compréhensible