C# 石头剪刀布游戏出错了
控制台应用程序石头剪刀游戏我很难解释它,你只需要测试它,看看我什么时候按y,它应该清除控制台并重新开始游戏,但这只是问题的1/2,每当我键入“石头”时,它会将其翻译为“ock”,与纸和剪刀一样,它会去掉第一个字母C# 石头剪刀布游戏出错了,c#,C#,控制台应用程序石头剪刀游戏我很难解释它,你只需要测试它,看看我什么时候按y,它应该清除控制台并重新开始游戏,但这只是问题的1/2,每当我键入“石头”时,它会将其翻译为“ock”,与纸和剪刀一样,它会去掉第一个字母 enum Rock_Paper_Scissor { rock, paper, scissor } class Computer { Random rand = new Random(); public Rock_Paper_Scissor
enum Rock_Paper_Scissor
{
rock,
paper,
scissor
}
class Computer
{
Random rand = new Random();
public Rock_Paper_Scissor Choice()
{
Rock_Paper_Scissor element = (Rock_Paper_Scissor)rand.Next(3);
return element;
}
}
class Game_Logic
{
static void Main()
{
Computer Comp = new Computer();
bool PlayAgain = true;
ConsoleKeyInfo input = Console.ReadKey();
Rock_Paper_Scissor ComputerChoice = Comp.Choice();
do
{
string PlayerChoice = Console.ReadLine();
Console.Clear();
while (PlayerChoice == ComputerChoice.ToString())
{
ComputerChoice = Comp.Choice();
}
Console.WriteLine("Player: "+ PlayerChoice);
Console.WriteLine("Computer: " + ComputerChoice);
if (PlayerChoice == "rock" && ComputerChoice.ToString() == "scissor")
Console.WriteLine("You won!");
else if (PlayerChoice == "scissor" && ComputerChoice.ToString() == "rock")
Console.WriteLine("Computer won!");
else if (PlayerChoice == "paper" && ComputerChoice.ToString() == "rock")
Console.WriteLine("You won!");
else if (PlayerChoice == "rock" && ComputerChoice.ToString() == "paper")
Console.WriteLine("Computer won");
else if (PlayerChoice == "scissor" && ComputerChoice.ToString() == "paper")
Console.WriteLine("You won!");
else if (PlayerChoice == "paper" && ComputerChoice.ToString() == "scissor")
Console.WriteLine("Computer won!");
else
{
Console.WriteLine("invalid value");
}
Console.WriteLine("\n"+"Play again? <y/n>");
PlayAgain = input.KeyChar == 'y';
} while (PlayAgain);
}
}
enum Rock\u Paper\u剪刀
{
摇滚乐,
纸张
剪
}
班级电脑
{
Random rand=新的Random();
公共摇滚乐、剪纸选择()
{
Rock_Paper_剪刀元素=(Rock_Paper_剪刀)rand.Next(3);
返回元素;
}
}
类博弈逻辑
{
静态void Main()
{
计算机组件=新计算机();
bool play再次=真;
ConsoleKeyInfo输入=Console.ReadKey();
Rock_Paper_Scissor ComputerChoice=复合选择();
做
{
string PlayerChoice=Console.ReadLine();
Console.Clear();
while(PlayerChoice==ComputerChoice.ToString())
{
ComputerChoice=Comp.Choice();
}
Console.WriteLine(“玩家:+PlayerChoice”);
Console.WriteLine(“计算机:+ComputerChoice”);
如果(PlayerChoice==“rock”和&ComputerChoice.ToString()==“剪刀”)
Console.WriteLine(“你赢了!”);
else if(PlayerChoice==“剪刀”和&ComputerChoice.ToString()==“摇滚乐”)
Console.WriteLine(“计算机赢了!”);
else if(PlayerChoice==“paper”和&ComputerChoice.ToString()==“rock”)
Console.WriteLine(“你赢了!”);
else if(PlayerChoice==“rock”和&ComputerChoice.ToString()==“paper”)
Console.WriteLine(“计算机赢”);
else if(PlayerChoice==“剪刀”和&ComputerChoice.ToString()==“纸张”)
Console.WriteLine(“你赢了!”);
else if(PlayerChoice==“纸张”和&ComputerChoice.ToString()==“剪刀”)
Console.WriteLine(“计算机赢了!”);
其他的
{
Console.WriteLine(“无效值”);
}
Console.WriteLine(“\n”+“是否再次播放?”);
再次播放=input.KeyChar=='y';
}边玩边玩;
}
}
问题在于这个片段。您的第一个字母将被吃掉,并触发第一个控制台。Readkey
意味着控制台。ReadLine()
您打算传递的值也将只接收其余的值
Console.ReadKey()
行在do
循环之外对您没有任何好处。无论如何,您最好删除它并执行
///
Console.WriteLine("\n"+"Play again? <y/n>");
} while (Console.ReadKey.KeyChar == 'y');
///
Console.WriteLine(“\n”+“是否再次播放?”);
}while(Console.ReadKey.KeyChar=='y');
直接的。解决这两个问题。你能换个说法吗。因为我不明白。你不明白什么?没关系,我完全明白你现在说的话。由于我没有使用Console.ReadKey()和Console.Clear()的经验,我偶然发现了这个问题。
///
Console.WriteLine("\n"+"Play again? <y/n>");
} while (Console.ReadKey.KeyChar == 'y');