我是一个C#新人菜鸡,偶然看见你的问题,决定自己试着写一下,代码如下(已运行跑通):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _02_石头剪刀布
{
class Program
{
public const int jiandao = 1; //剪刀的数值
public const int shitou = 2; //石头的数值
public const int bu = 3; ////布的数值
public static int scoreAI = 0; //电脑的分数
public static int scorePlayer = 0; //玩家的分数
public static int number=3; //每次游戏的局数
static void Main(string[] args)
{
//游戏规则:
//由电脑随机出一个数(1、2、3中任意一个,1代表剪刀,2为石头,3为布)
//你从控制台输入1个数(1、2、3中任意一个,1代表剪刀,2为石头,3为布)
//每局输出谁胜利了,
//每次开启游戏,一共是10局
//一次游戏结束后,可以提示用户是否再来一次,用户可以选择继续或退出...
//几个局部变量
//(如果放在for循环里,会多次创建变量,不太好。而这些变量,只需要在for时,不停的赋值就行,不需要多次创建。)
Random r = new Random(); //创建1个随机类的对象,用来随机用
int valueAI; //电脑出拳的数字
string input; //接收用户输入
int valuePlayer; //玩家出拳的数字
//每次游戏的循环过程
for (int i = 0; i < number; i++)
{
#region 单局游戏的过程
valueAI = r.Next(1, 4); //电脑出拳
Console.WriteLine("第{0}局游戏,请出拳(1:剪刀 2:石头 3:布)",i+1); //玩家出拳:1、提示
input = Console.ReadLine(); //玩家出拳:2、接收玩家输入的字符串
valuePlayer = Convert.ToInt32(input); //玩家出拳:3、字符串转换成数字
Console.WriteLine("电脑:{0}", Quan(valueAI)); //数字 → 拳的转换:电脑
Console.WriteLine("玩家:{0}", Quan(valuePlayer)); //数字 → 拳的转换:玩家
CheckWin(valueAI, valuePlayer); //判定该局胜负
Console.WriteLine();
#endregion
#region 本次游戏结束的处理
if (i == number - 1)
{
GameOver();//游戏结束
//是否重玩
Console.WriteLine("\n是否继续游戏? 1:再来一局 2:退出");
string inputOver = Console.ReadLine();
int valueOver = Convert.ToInt32(inputOver);
if (valueOver == 1) //选择1:要重置一些变量的值,还有循环的值,重新开始
{
i = -1; //i要重置为0,重新循环
scoreAI = 0; //scoreAI要重置为0
scorePlayer = 0; //scorePlayer要重置为0
}
else //选择2:退出main方法
return;
}
#endregion
}
}
//方法:根据常量jiandao、shitou、bu数字,返回“剪刀、石头、布”字符
/// <summary>
/// 数字 换算 拳
/// </summary>
/// <param name="value">剪刀、石头、布的常量值</param>
/// <returns>返回“剪刀、石头、布”字符</returns>
public static string Quan(int value)
{
string quan = "";
switch (value)
{
case 1:
quan = "剪刀";
break;
case 2:
quan = "石头";
break;
case 3:
quan = "布";
break;
default :
quan = "";
break;
}
return quan;
}
//方法:判定胜负
/// <summary>
/// 判定胜负:比较电脑和玩家分别的骰子数值
/// </summary>
/// <param name="valueAI">电脑的骰子数值</param>
/// <param name="valuePlayer">玩家的骰子数值</param>
public static void CheckWin(int valueAI,int valuePlayer)
{
int valueSub = valueAI - valuePlayer;
if(valueSub==0)
Console.WriteLine("本局结果:平局");
else if (valueSub == -2 || valueSub == 1)
{
Console.WriteLine("本局结果:电脑胜利");
scoreAI++;
}
else
{
Console.WriteLine("本局结果:玩家胜利");
scorePlayer++;
}
}
//方法:游戏结束
/// <summary>
/// 游戏结束的判定
/// </summary>
public static void GameOver()
{
if(scoreAI==scorePlayer)
Console.WriteLine("电脑:{0}分\n玩家:{1}分\n本次游戏结果:平局",scoreAI,scorePlayer);
else if(scoreAI<scorePlayer)
Console.WriteLine("电脑:{0}分\n玩家:{1}分\n本次游戏结果:玩家胜利", scoreAI, scorePlayer);
else
Console.WriteLine("电脑:{0}分\n玩家:{1}分\n本次游戏结果:电脑胜利", scoreAI, scorePlayer);
}
}
}