📚 博客亮点:
-
从零到一,构建猜拳游戏 —— 无需复杂的编程基础,我将带你一步步实现一个简单的猜拳游戏。从创建数组到编写判断逻辑,每一步都详细解析,让你轻松上手。
-
智能对手,随机应变 —— 使用
Random
类生成电脑的随机选择,让你的对手永远保持“新鲜感”。无论是“剪刀”、“石头”还是“布”,每一次对战都充满未知。 -
胜负判定,逻辑清晰 —— 通过简单的数学逻辑判断胜负,让你在编码的过程中锻炼逻辑思维能力。同时,理解并应用这些逻辑,也能帮助你更好地编写其他类型的游戏。
-
优化体验,细节决定成败 —— 我们在代码中加入了输入验证和错误处理,确保用户体验流畅。无论用户输入什么,程序都能优雅地应对,不会出现崩溃或无限循环的情况。
-
实战演练,提升编程技能 —— 实战是最好的老师。通过编写这个游戏,你将掌握字符串处理、条件判断、循环控制等编程基础知识,并为将来的编程之路打下坚实的基础。
🚀 开始你的编程之旅吧!
在这个博客中,我将分享完整的代码实现过程,并附上详细的注释和解释。无论你是编程初学者还是有一定经验的开发者,都能从中获得启发和收获。
//此方法用来判断输入选项是否为数字
static bool num(string str) {
for (int i = 0; i < str.Length; i++) {
if (str[i] < '0' || str[i] > '9') {
//如果遍历后所有字符中有不是数字字符的则输出为假
return false;
}
}
//如果遍历后所有字符中有不是数字字符的则输出为真
return true;
}
//此方法用来根据所输入的手势来判断是否在数组中并且返回其索引值
static int count(string[] strings,string str) {
for (int i = 0; i < strings.Length; i++) {
//利用Equals方法来对比,如果直接相比比较的数元素的地址值而非
if (str.Equals(strings[i])) {
return i;
}
}
//如果数组中不存在这样的元素这返回一个数字(这个数字要避开与数组中索引值相加减时出现干扰)
return -10;
}
static void Main(string[] args)
{
//定义数组
string[] strings = { "剪刀", "石头", "布" };
Console.WriteLine("欢迎来到猜拳游戏");
while (true) {
//通过循环每次将输赢比分和对局数量初始化
int win = 0;
int los = 0;
int hi = 0;
//菜单选择
Console.WriteLine("1.开始/或者继续游戏\n2.退出游戏");
//定义为字符串,接收输入的数字
string choise=Console.ReadLine();
//判断是否为纯数字,如果是纯数字就继续下一步操作
if (num(choise))
{
//将输入的数字字符串转换为整型
int choose = Convert.ToInt32(choise);
//数字为1开始,为2退出,后续可以添加其他操作,超出这两个数字则显示暂时没有该选项
if (choose == 1)
{
Console.WriteLine("猜拳开始,三局两胜");
}
else if (choose == 2)
{
Console.WriteLine("退出游戏");
break;
}
else {
Console.WriteLine("暂无该选项");
continue;
}
}
//如果输入不是纯数字,定义为乱码,报错
else {
Console.WriteLine("请正确选择");
continue;
}
while (true)
{
//对局开始
Console.WriteLine($"第{hi+1}局开始");
Console.WriteLine("你:");
string str = Console.ReadLine();
Random random = new Random();
int index = random.Next(strings.Length);
//根据索引值判断胜负
int i = index - count(strings, str);
Console.WriteLine("电脑:" + strings[index]);
switch (i)
{
//下面的代码是根据索引值的值来判断是否获胜
//获胜则win变量自增
//输了则los变量自增
//平局和输赢hi变量都自增
case -2: Console.WriteLine("输了"); los++; hi++; break;
case -1: Console.WriteLine("你赢了"); win++; hi++; break;
case 0: Console.WriteLine("平局"); hi++; break;
case 1: Console.WriteLine("输了"); los++; hi++; break;
case 2: Console.WriteLine("你赢了"); win++; hi++; break;
default: Console.WriteLine("请不要作弊"); break;
}
//下面判断如果经过三局决出胜负则比los和win的值相等则平局
if (hi >= 3)
{
if (los > win)
{
Console.WriteLine($"最终你还是输了,比分 你{win}:电脑{los}");
break;
}
else if(los<win)
{
Console.WriteLine($"恭喜你最终获胜!!!,比分 你{win}:电脑{los}");
break;
}
else if(los==win){
Console.WriteLine($"恭喜你最终获胜!!!,比分 你{win}:电脑{los}");
break;
}
}
//判断如果已经赢了两局或者输了两局则结束.
if (win >= 2)
{
Console.WriteLine("你已经赢了两局");
break;
}
else if (los >= 2)
{
Console.WriteLine("你已经输了两局");
break;
}
}
}