C# 石头剪刀布游戏出错了

C# 石头剪刀布游戏出错了,c#,C#,控制台应用程序石头剪刀游戏我很难解释它,你只需要测试它,看看我什么时候按y,它应该清除控制台并重新开始游戏,但这只是问题的1/2,每当我键入“石头”时,它会将其翻译为“ock”,与纸和剪刀一样,它会去掉第一个字母 enum Rock_Paper_Scissor { rock, paper, scissor } class Computer { Random rand = new Random(); public Rock_Paper_Scissor

控制台应用程序石头剪刀游戏我很难解释它,你只需要测试它,看看我什么时候按y,它应该清除控制台并重新开始游戏,但这只是问题的1/2,每当我键入“石头”时,它会将其翻译为“ock”,与纸和剪刀一样,它会去掉第一个字母

  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');