在 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);
si
和 ui
是用户输入和系统输入作为字符串的两个变量,因此用户应该输入他们选择的完整拼写。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
做出的。
如果你希望用户输入 yes
或 no
再次玩游戏,那么你应该使用如下代码。
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,循环将停止,程序将终止。
如果用户输入了除 yes
或 no
之外的任何其他内容,则 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# 中的 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 浏览次数: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 类的所有对象的完成。