迹忆客 专注技术分享

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

在 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;
        }
      }
    }
  }
}

上一篇:在 C# 中不使用临时变量交换变量值

下一篇:没有了

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

本文地址:

相关文章

C# 中的 LINQ 分组

发布时间:2024/01/20 浏览次数:51 分类:编程语言

LINQ 中的 group by 用于按 C# 中的某个公共值对对象序列进行分组 C# 中的 LINQ 分组 LINQ 将类似 SQL 的查询功能与 C# 中的数据结构集成在一起。

使用 C# 在 LINQ 查询中按多列分组

发布时间:2024/01/20 浏览次数:167 分类:编程语言

这是一篇关于 LINQ 查询的使用以及我们如何使用 LINQ 查询按列分组的文章。本文简要介绍了使用 C# 进行的 LINQ 查询。此外,它还讨论了如何使用 LINQ 查询按多列对结果进行分组。

在 C# 中捕获多个异常

发布时间:2024/01/20 浏览次数:135 分类:编程语言

有两种主要方法可用于捕获 C# 中的多个异常,即 Exception 类和 catch 子句中的 if 语句。使用 C# 中的 Exception 类捕获多个异常 Exception 类用于表示 C# 中的一般异常。

C# 中为无效参数或参数引发的异常类型

发布时间:2024/01/20 浏览次数:71 分类:编程语言

本教程将教你如何在 C# 中为无效参数或参数抛出不同类型的异常。异常提供有关 C# 程序中的运行时错误或预期不会发生或违反系统/应用程序约束的条件的信息。在本教程中,你将学习与无效参

C# 中的异常列表

发布时间:2024/01/20 浏览次数:128 分类:编程语言

我们将查看本文中可能引发的 C# 异常。System Exception 类是 C# 编程语言中预定义的异常类,可用于编程。选择代码中可能出现的异常并将其插入到适当的 catch 块中。

C# 中的树形数据结构

发布时间:2024/01/20 浏览次数:73 分类:编程语言

C# 中的树是本文讨论的主题。一种以树的形式组织起来的层次数据称为树数据结构。C# 中的树将是本文讨论的主题。数据结构是我们需要知道的第一件事。

C# 中的 lock 语句

发布时间:2024/01/20 浏览次数:166 分类:编程语言

C# 中 lock 语句指定的代码部分不能被多个线程同时访问。C# 中的 lock 语句 lock(obj) 语句规定,在 C# 中,下面这段代码不能被多个线程同时访问。

等待线程在 C# 中完成

发布时间:2024/01/20 浏览次数:70 分类:编程语言

等待 C# 中的线程完成的主要方法有两种:Task.WaitAll()和 Thread.Join()函数。用 C# 中的 Task.WaitAll() 方法等待线程完成 C# 中的 [Task.WaitAll() 方法)用于等待 Task 类的所有对象的完成。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便