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

  这个游戏,相信大家小时候都玩过吧,但又没有想过和电脑来几局呢?在这里规则我就不多说了,程序的思路如下:

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

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C#是一种面向对象的编程语言,它是由微软公司开发的一种通用型编程语言。下面是关于面向对象程序设计C#的介绍: 1. 类和对象:C#是一种基于类的编程语言,它支持创建类和对象。类是一种模板,用于定义对象的属性和行为。对象是类的实例,可以通过实例化类来创建。 2. 封装:C#支持封装,即将数据和方法封装在类中,并通过访问修饰符来控制对类成员的访问权限。这样可以保护数据的安全性,并提供统一的接口供外部使用。 3. 继承:C#支持继承,即一个类可以派生出子类,子类可以继承父类的属性和方法,并可以添加自己的特性。继承可以实现代码的重用和扩展。 4. 多态:C#支持多态,即一个对象可以以多种不同的方式工作。多态性通过虚函数和抽象类来实现。虚函数允许子类重写父类的方法,而抽象类定义了一组抽象方法,子类必须实现这些方法。 5. 接口:C#支持接口,接口定义了一组方法和属性的规范,类可以实现接口并提供具体的实现。接口可以实现多继承的效果,增加了代码的灵活性。 6. 构造函数和析构函数:C#中的构造函数用于初始化对象的状态,析构函数用于释放对象占用的资源。构造函数在创建对象时自动调用,而析构函数在对象被销毁时自动调用。 7. 异常处理:C#提供了异常处理机制,可以捕获和处理程序运行过程中的异常。通过使用try-catch语句块,可以捕获异常并采取相应的处理措施,保证程序的稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值