这个游戏,相信大家小时候都玩过吧,但又没有想过和电脑来几局呢?在这里规则我就不多说了,程序的思路如下:
首先定义一个类Game,存储与本游戏相关的信息,包括:玩家和电脑的答案,玩家和电脑的得分,并能够判断每一局输赢状况和总的输赢。在主函数中实例化对象后,首先由电脑先出,这里是通过一个Random()函数,生成1—3之间的随机数。其中,1代表石头,2代表剪刀,3代表布。然后,玩家依上述规则给出答案,最后由电脑判断输赢。
本游戏使用C#编写,并在Microsoft Visual C# Express 2010和Microsoft .Net Framework 4.0环境下编译通过,当然,本程序可能仍含有错误,欢迎指正。
程序运行效果如下:
以下是我的程序:
//程序清单如下:
///
///作者:钩鸿踏月,2011年6月27日
///程序版本号:1.0.2011.0627
///
using System;
namespace game
{
public class Game//定义游戏类,存储与本游戏相关的信息
{
private int computerAnswer;//声明私有变量,用于存储电脑答案
private int playerAnswer;//声明私有变量,用于存储玩家答案
private int computerResult = 0;//声明私有变量,用于存储电脑得分
private int playerResult = 0;//声明私有变量,用于存储玩家得分
public int ComputerAnswer//定义属性,存取私有变量computerAnswer的值
{
get { return computerAnswer; }
set { computerAnswer = Convert.ToChar(value); }
}
public int PlayerAnswer//定义属性,存取私有变量playerAnswer的值
{
get { return playerAnswer; }
set { playerAnswer = Convert.ToChar(value); }
}
public void Result()//定义函数,记录每一局的得分
{
if (playerAnswer == computerAnswer)
Console.WriteLine("这一局您和电脑达成平局!");
else
{
switch (playerAnswer)
{
case 1://玩家:石头
{
if (computerAnswer == 2)//电脑:剪刀
playerResult++;
else//电脑:布
computerResult++;
Console.WriteLine(computerAnswer == 2 ?
"这一局你赢了!" : "这一局你输了!"); break;
}
case 2://玩家:剪刀
{
if (computerAnswer == 3)//电脑:布
playerResult++;
else//电脑:石头
computerResult++;
Console.WriteLine(computerAnswer == 3 ?
"这一局你赢了!" : "这一局你输了!"); break;
}
case 3://玩家:布
{
if (computerAnswer == 1)//电脑:石头
playerResult++;
else//电脑:剪刀
computerResult++;
Console.WriteLine(computerAnswer == 1 ?
"这一局你赢了!" : "这一局你输了!"); break;
}
default://其余输入
Console.WriteLine("您的输入有误,本回合无效!"); break;
}
}
}
public void TheEnd()//定义函数,判断最终结果
{
if (playerAnswer > computerAnswer)//玩家赢
Console.WriteLine("恭喜,你赢了!");
else
{
if (playerAnswer < computerAnswer)//玩家输
Console.WriteLine("你输给了电脑!");
else//平局
Console.WriteLine("你和电脑达成平局。");
}
}
}
class Program
{
static void Main(string[] args)
{
int Count = 0;//定义变量,记录游戏次数
int ReadKey;//定义变量,记录数据
bool Flag;//定义变量,1表示继续游戏,0表示退出游戏
Game Game1 = new Game();//实例化Game类
Console.WriteLine("程序版本号:1.0,作者:钩鸿踏月,2011年6月27日");
Console.WriteLine("欢迎进入“剪刀石头布”游戏,请输入1继续,
输入其余则退出游戏。");
L1: try//当输入为数字时,执行
{
ReadKey = int.Parse(Console.ReadLine());
}
catch//输入为其它时,跳转至L1处,重新输入
{
Console.WriteLine("您的输入不合法,请重新输入。");
goto L1;
}
if (ReadKey == 1)//继续游戏
{
Flag = true;
L2: Console.WriteLine("请输入您想玩的次数:");//输入次数
try//当输入为数字时,执行
{
Count = int.Parse(Console.ReadLine());
}
catch//输入为其它时,跳转至L2处,重新输入
{
Console.WriteLine("您的输入不合法,请重新输入。");
goto L2;
}
}
else//游戏退出
{
Flag = false;
Console.WriteLine("游戏退出。");
}
while (Flag)//游戏开始
{
while (Count > 0)
{
Console.WriteLine("请等待电脑出题。。。");
Game1.ComputerAnswer = new Random().Next(1, 3);
//电脑随机生成1—3之间的随机数º
Console.WriteLine("你想出什么?\n1——石头,2——剪刀,3——布。");
Game1.PlayerAnswer = int.Parse(Console.ReadLine());//输入答案
Console.WriteLine("玩家:{0},电脑:{1}", Game1.PlayerAnswer,
Game1.ComputerAnswer);
Game1.Result();//判断每一局结果
Count--;
}
Game1.TheEnd();//游戏最终结果
Flag = false;//退出游戏
}
}
}
}
2011年6月27日星期一