既然你诚心诚意的问了,软糖就大发慈悲的告诉你。
花了点时间做出来了,效果图:
代码:
class Program {
static void Main(string[] args) {
int 局数 = 0;
int 电脑得分 = 0; int 玩家得分 = 0;
int 电脑数字 = 0; int 玩家数字 = 0;
int 差;
Random rnd = new Random();
//循环出拳阶段
while (局数 < 10) {
玩家数字 = 0;
Console.WriteLine("(第{0}局) 1剪刀 2石头 3布 ,请输入:", 局数 + 1);
var k = Console.ReadKey();
电脑数字 = rnd.Next(1, 3);
if (k.KeyChar == '1') { 玩家数字 = 1; }
if (k.KeyChar == '2') { 玩家数字 = 2; }
if (k.KeyChar == '3') { 玩家数字 = 3; }
差 = (电脑数字 - 玩家数字);
局数 += 1;
if (玩家数字 == 电脑数字)
{ Console.WriteLine(" 平手。"); }
else if (玩家数字 == 0 || 差 == 1 || 差== -2 )
{ Console.WriteLine(" 输了.."); 电脑得分 += 1; }
else
{ Console.WriteLine(" 赢了!"); 玩家得分 += 1; }
}
//评分统计阶段
Console.WriteLine();
Console.WriteLine("总计局数 {0}", 局数);
Console.WriteLine("电脑得分 {0}", 电脑得分);
Console.WriteLine("用户得分 {0}", 玩家得分);
if (玩家得分 > 电脑得分) { Console.WriteLine("亲,给你好评喔!"); }
else { Console.WriteLine("没脸见人啦..."); }
//退出阶段
Console.WriteLine();
Console.WriteLine("< 按任意键退出... >");
Console.ReadKey();
Environment.Exit(0);
}
}
如满意,记得给好评,谢谢!
我是一个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数字,返回“剪刀、石头、布”字符
///
/// 数字 换算 拳
///
/// 剪刀、石头、布的常量值
///返回“剪刀、石头、布”字符
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;
}
//方法:判定胜负
///
/// 判定胜负:比较电脑和玩家分别的骰子数值
///
/// 电脑的骰子数值
/// 玩家的骰子数值
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++;
}
}
//方法:游戏结束
///
/// 游戏结束的判定
///
public static void GameOver()
{
if(scoreAI==scorePlayer)
Console.WriteLine("电脑:{0}分\n玩家:{1}分\n本次游戏结果:平局",scoreAI,scorePlayer);
else if(scoreAIConsole.WriteLine("电脑:{0}分\n玩家:{1}分\n本次游戏结果:玩家胜利", scoreAI, scorePlayer);
else
Console.WriteLine("电脑:{0}分\n玩家:{1}分\n本次游戏结果:电脑胜利", scoreAI, scorePlayer);
}
}
}