程序设计之七:“石头剪刀布”游戏(C#)

来源:互联网 发布:数组和集合的区别 编辑:程序博客网 时间:2024/05/29 08:54
          这个游戏,相信大家小时候都玩过吧,但又没有想过和电脑来几局呢?在这里规则我就不多说了,程序的思路如下:

         首先定义一个类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日星期一

原创粉丝点击