ano75
-
Modifié le 22 mars 2021 à 08:17
yg_be
Messages postés22726Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention26 avril 2024
-
22 mars 2021 à 16:01
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 :
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 ");
}
}
}
}
}
yg_be
Messages postés22726Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention26 avril 20241 476 22 mars 2021 à 08:45
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.
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
yg_be
Messages postés22726Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention26 avril 20241 476 22 mars 2021 à 14:32
pourquoi la seconde partie de la ligne 196 est-elle en commentaire?
Ano75
>
yg_be
Messages postés22726Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention26 avril 2024 22 mars 2021 à 15:04
Parce-que justement au début je l’avais pas mis en commentaire mais ça me faisait une autre erreur car ça m’afficher le message comme quoi j’avais déjà saisi la coordonnées à chaque tour. Je sais que mon code est assez brouillon j’en suis vraiment désolé
yg_be
Messages postés22726Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention26 avril 20241 476
>
Ano75
Modifié le 22 mars 2021 à 15:48
et ainsi?
if ((Montab[1, 1] != 'X') && (Montab[1, 1] != 'O'))
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024931 22 mars 2021 à 11:14
Bonjour
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
Et l'accolade fermante se trouve en bas de mon code, en tout cas le code se compile bien mais j'ai toujours mon bug quand je saisi une coordonnée déjà saisi...
22 mars 2021 à 14:31
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
22 mars 2021 à 14:32
22 mars 2021 à 15:04
Modifié le 22 mars 2021 à 15:48