在 C# 中创建石头剪刀布游戏

本文将讨论使用 C# 开发石头剪刀布游戏的过程。我们将使用 Visual Studio 创建控制台应用程序、名称和项目。

C# 中创建石头剪刀布游戏

为了制作这个游戏,我们将遵循以下步骤:

  • 接受用户的输入。
  • 随机生成输出。
  • 比较所有可能的选择。
  • 宣布获胜者。
  • 重新开始游戏。

该程序的运行将包括多种功能和方法。一旦接收到用户的输入,系统会将其与系统产生的输入进行比较。

该系统产生的输入将是随机的;因此,它可能提供三个选项中的任何一个:石头、布或剪刀。一旦接收到两个输入,它将进行条件渲染。

条件渲染将作为决定是否宣布获胜者或没有获胜者的基础,并进行抽签。

using System;
namespace Hello_World
{
    class Program
    {
        static void Main(string[] args){}
    }
}

这些行将位于代码的开头,并将在正常程序流程开始时保留。

string ui, si;
int r;
Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ");
ui = Console.ReadLine();
Random rnd = new Random();
r = rnd.Next(1, 4);

siui 是用户输入和系统输入作为字符串的两个变量,因此用户应该输入他们选择的完整拼写。r 变量是为计算机将生成的随机数用于选择的整数类型变量。

Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ") 语句写在屏幕上并要求用户输入他们的选择。ui = Console.ReadLine() 语句从用户那里获取输入并将其存储到 ui 变量中。

Random rnd = new Random() 语句为随机数创建变量 rnd 以用于随后生成随机数。r = rnd.Next(1, 4) 语句生成 1 到 3 范围内的随机数并将其存储到 r 变量中。

switch (r)
{
    case 1:
        si = "Rock";
        Console.WriteLine("Computer chose Rock");
        if (ui == "Rock"||ui == "rock")
        {
            Console.WriteLine("\nIt is a draw");
        }
        else if(ui == "Paper"||ui == "paper")
        {
            Console.WriteLine("\nYou Win!");
        }
        else
        {
            Console.WriteLine("\nYou Lose!");
        }
        break;
}

switch() 中,如果 r 变量包含 1 到 4 之间的任何数字,我们会考虑选项。在情况 1 中,我们检查随机数是否为 1,如果是,我们设置系统输入 si 变摇滚。

之后,我们使用 Console.WriteLine("Computer choose Rock") 语句在控制台上写入,该语句会在屏幕上打印计算机选择 Rock。然后我们使用 if 条件来查看用户输入的内容供他们选择。

if (ui == "Rock"||ui == "rock") 语句检查用户是否也输入了 rock,那么这是一个平局,它将通过 Console.WriteLine("\nIt is a draw")。如果不是,那么我们将通过 else if(ui == "Paper"||ui == "paper") 来检查,如果它不是石头,那么用户输入的是布?

如果 yes,则用户赢了,这将由 Console.WriteLine("\nYou Win!"); 打印。

如果用户没有输入我们检查的两个选项,很明显用户输入了剪刀,所以用户输了。所以,我们最后使用了 else,它会打印 You Lose!

最后,break 语句用于退出 switch()

case 2:
    si = "Paper";
    Console.WriteLine("Computer chose Paper");
    if (ui == "Rock"||ui == "rock")
    {
        Console.WriteLine("\nYou Lose!");
    }
    else if (ui == "Paper"||ui == "paper")
    {
        Console.WriteLine("It is a draw");
    }
    else
    {
        Console.WriteLine("You win");
    }
    break;

在情况 2 中,我们检查随机数是否为 2,然后我们将系统输入 si 变量设置为布。之后,我们使用 Console.WriteLine("Computer choose Paper") 在控制台上书写,它会在屏幕上打印计算机选择布的信息。

然后,我们使用 if 条件来查看用户输入的内容供他/她选择。if (ui == "Rock"||ui == "rock") 语句检查用户是否也输入了 rock,则用户将输,并通过 Console.WriteLine(" 打印在屏幕上\n 你松了!");

如果不是,那么我们通过 else if(ui == "Paper"||ui == "paper") 检查它是否不摇滚,那么用户输入的是布吗?如果 yes,则为平局。它将由 Console.WriteLine("It is a draw"); 打印。

如果用户没有输入我们检查过的两个选项,很明显用户输入了剪刀,因此用户赢得了游戏。所以,我们最后使用了 else,它将由 Console.WriteLine("You win"); 打印。

break 语句用于退出 switch()

case 3:
    si = "Scissors";
    Console.WriteLine("Computer chose Scissors");
    if (ui == "Rock"||ui == "rock")
    {
        Console.WriteLine("\nYou Win!");
    }
    else if (ui == "Paper"||ui == "paper")
    {
        Console.WriteLine("You Lose");
    }
    else
    {
        Console.WriteLine("It is a draw");
    }
    break;

在案例 3 中,我们检查随机数是否为 3,然后我们将系统输入 si 变量设置为剪刀。之后,我们在控制台上通过 Console.WriteLine("Computer choose Scissors") 行在屏幕上打印计算机选择了剪刀。

然后我们使用 if 条件来查看用户输入的内容供他们选择。if (ui == "Rock"||ui == "rock") 行检查用户是否也输入了 rock,然后用户将获胜,并由 Console.WriteLine("\nYou Win!"); 一行打印到屏幕上。

如果不是,那么我们通过 else if(ui == "Paper"||ui == "paper") 行检查,如果它不是石头,那么用户输入的是布吗?如果 yes,则用户将输掉游戏。它将由 Console.WriteLine("You Lose"); 打印出来。

如果用户没有输入我们检查的两个选项,很明显用户输入了剪刀,所以游戏是平局。所以我们最后使用了 else,它会被 Console.WriteLine("It is a draw"); 打印出来。

default:
    Console.WriteLine("invalid entry!");
    break;

switch 作用域的末尾,我们还使用了 default:,这是一种在没有匹配大小写时运行的默认情况。如果 r 变量的值不是 1 到 3,这是一种安全预防措施。

然后我们将用 Console.WriteLine("invalid entry!"); 在屏幕上打印 invalid entry!

如果你愿意,你可能不会在代码中创建和使用 si 变量,因为决策是使用随机数变量 r 做出的。

如果你希望用户输入 yesno 再次玩游戏,那么你应该使用如下代码。

using System;
namespace Hello_World
{
    class Program
    {
        static void Main(string[] args)
        {
            bool play=true;
            string q;
            while(play){
                // all the above code of the game goes here
                Console.WriteLine("\nDo you want to play again?  ");
                q= Console.ReadLine();
                if(q=="yes"||q=="Yes"){
                    continue;
                }
                else if(q=="no"||q=="No"){
                    play=false;
                }
                else{
                    Console.WriteLine("invalid entry!\nQuiting...!");
                    play=false;
                }
            }
        }
    }
}

我们创建了一个布尔类型的 play 变量,用于 while 循环。最初,它设置为 true,因此循环将无限运行,直到 play 变量设置为 false。

你可以将所有游戏代码放在 while 循环中,然后,你可以使用 Console.WriteLine("\nDo you want to play again? "); 要求用户再次玩或不玩。无论用户输入什么,都将使用 q= Console.ReadLine(); 行存储在 q 变量中。

之后,我们将再次使用 if 条件来查看用户输入的内容。

if(q=="yes"||q=="Yes") 语句检查用户的输入,如果它等于是或否。如果用户输入了 yes,则 continue 语句用于跳过其余的循环语句并从头开始循环。

如果用户没有输入 yes 而是输入 no,则条件 else if(q=="no"||q=="No") 为真,play 变量为由 play=false; 行设置为 false,循环将停止,程序将终止。

如果用户输入了除 yesno 之外的任何其他内容,则 invalid entry 将通过 Console.WriteLine("invalid entry!\nQuiting...!"); 打印在屏幕上。而 play 将再次为假,程序将终止。

完整源代码:

using System;
namespace Hello_World
{
    class Program
    {
        static void Main(string[] args)
        {
            bool play=true;
            string q;
            while(play){
                string ui, si;
                int r;
                Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ");
                ui = Console.ReadLine();
                Random rnd = new Random();
                r = rnd.Next(1, 4);
                switch (r)
                {
                    case 1:
                    si = "Rock";
                    Console.WriteLine("Computer chose Rock");
                    if (ui == "Rock"||ui == "rock")
                    {
                        Console.WriteLine("\nIt is a draw");
                    }
                    else if(ui == "Paper"||ui == "paper")
                    {
                        Console.WriteLine("\nYou Win!");
                    }
                    else
                    {
                        Console.WriteLine("\nYou Lose!");
                    }
                    break;
                case 2:
                    si = "Paper";
                    Console.WriteLine("Computer chose Paper");
                    if (ui == "Rock"||ui == "rock")
                    {
                        Console.WriteLine("\nYou Lose!");
                    }
                    else if (ui == "Paper"||ui == "paper")
                    {
                        Console.WriteLine("It is a draw");
                    }
                    else
                    {
                        Console.WriteLine("You win");
                    }
                    break;
                case 3:
                    si = "Scissors";
                    Console.WriteLine("Computer chose Scissors");
                    if (ui == "Rock"||ui == "rock")
                    {
                        Console.WriteLine("\nYou Win!");
                    }
                    else if (ui == "Paper"||ui == "paper")
                    {
                        Console.WriteLine("You Lose");
                    }
                    else
                    {
                        Console.WriteLine("It is a draw");
                    }
                    break;
                default:
                    Console.WriteLine("invalid entry!");
                break;
            }
            Console.WriteLine("\nDo you want to play again?  ");
            q= Console.ReadLine();
            if(q=="yes"||q=="Yes"){
                continue;
            }
            else if(q=="no"||q=="No"){
                play=false;
            }
            else{
                Console.WriteLine("invalid entry!\nQuiting...!");
                play=false;
            }
            }
        }
    }
}