Je construis un jeu de combat de monstres basé sur console simple à des fins d'entraînement.C# if else problème de gestion des entrées utilisateur
J'ai créé une boucle while qui est presque là où j'en ai besoin, mais lorsque l'utilisateur entre un choix incorrect, le message final de type "entrée incorrecte" boucle simplement à l'infini sur l'écran.
Quelqu'un pourrait-il suggérer une solution s'il vous plaît?
Ou, si j'utilise un essai, attraper le gestionnaire d'exception à la place (je ne suis pas très bon à ceux-ci pour le moment).
Merci,
Code suit:
P.S La variable acceptInput booléenne est initialisé en haut de la classe qui ne sont pas inclus dans ce segment de code.
while (!acceptInput)
{
if (playerChoice == "a" || playerChoice == "h")
{
if (playerChoice == "a")
{
player.PlayerAttack();
if (random.NextDouble() > .9)
{
Console.WriteLine("You missed!");
Console.WriteLine("Press ENTER to continue");
Console.ReadLine();
}
else
{
Console.WriteLine("It's a hit!");
monster.MonsterDecreaseHealth(player.AttackPower);
Console.WriteLine("Press ENTER to continue");
Console.ReadLine();
}
acceptInput = true;
}
else if (playerChoice == "h")
{
player.PlayerHeal();
acceptInput = true;
}
}
else
{
Console.WriteLine("That is not a valid choice, please enter either A or H");
}
}
vous devez inclure comment vous obtenez la valeur de 'playerChoice'. –
Vous ne modifiez pas la condition de boucle sur une entrée non valide, alors pourquoi tout changement? vous devez obtenir 'playerChoice' du joueur * dans la boucle, sinon il ne changera jamais. – itsme86
Pourquoi votre 'while (! AcceptInput)' est-il inversé? Pourquoi pas alors que while (acceptInput) 'semble confus. en anglais, cela se lirait comme si ** tandis que ** ** n'acceptant pas l'entrée, faites tout ici de façon répétée. » – Seabizkit