迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

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

作者:迹忆客 最近更新:2024/01/16 浏览次数:

本文将讨论使用 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;
        }
      }
    }
  }
}

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C# 中发出 HTTP POST Web 请求

发布时间:2024/02/04 浏览次数:131 分类:编程语言

在 C# 中,可以使用 3 种主要方法来发出 HTTP POST Web 请求:WebClient 类,HttpWebRequest 类和 HttpClient 类。本教程将讨论在 C# 中发出 HTTP POST Web 请求的方法。使用 C# 中的 WebClient 类发出 HTTP POST Web 请求

在 C# 中调整图像大小

发布时间:2024/02/04 浏览次数:203 分类:编程语言

有两种主要方法可用于在 C# 中调整图像的大小,Bitmap 类构造函数和 graphics.DrawImage()函数。在本教程中,我们将讨论在C#中调整图像大小的方法。我们将带您完成整个过程,从加载原始图像到保

在 C# 中下载图片

发布时间:2024/02/04 浏览次数:138 分类:编程语言

有 3 种主要方法可用于下载 C# 中的图片,WebClient.DownloadFile()函数,Bitmap 类和 Image.FromStream()函数。在 C# 中使用 WebClient 类下载图片 WebClient 类提供了用于向 C# 中的 URL 发送数据和从 URL 接收数据

在 C# 中使用秒表

发布时间:2024/02/04 浏览次数:139 分类:编程语言

我们可以使用 Stopwatch 类来计算 C# 中的经过时间。使用 C# 中的秒表类计算经过时间 Stopwatch 类在 C# 中准确测量经过的时间。

在 C# 中获取可执行路径

发布时间:2024/02/04 浏览次数:200 分类:编程语言

有 3 种主要方法可用于获取 C# 中程序的可执行路径,即 Assembly 类,AppDomain 类和 Path 类。本教程将介绍获取 C# 代码的可执行路径的方法。使用 C# 中的 Assembly 类获取可执行路径

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便