用C# Winform写个猜拳小游戏

简介

猜拳游戏,也叫划拳游戏. 顾名思义就是: 2个人在一起划拳,比谁赢,比谁输. 这里的猜拳游戏是人和电脑之间的较量.

原理

原理很简单, 给人3个值(字符串): 剪刀 石头 布. 电脑的出拳用的随机的Random函数得到整型值,然后将其转换成相应的字符串 用于显示在窗体界面上.同时再写一个方法将字符串(剪刀 石头 布)转成成相应的整型值. 写一个裁判的方法 将两者的整型值进行比较,得出输,赢,平局的结果.

 

界面设计(如图)

 

代码:

        public FingerGuessingGame()
        {
            InitializeComponent();
            //注册各个按钮的鼠标单击事件
            this.btnJiandao.Click += (s, e) => { Jiandao(); };
            this.btnShitou.Click += (s, e) => { Shitou(); };
            this.btnBu.Click += (s, e) => { Bu(); };
        }

        /// <summary>
        /// 玩家出剪刀
        /// </summary>
        public void Jiandao()
        {
            //将玩家单击按钮的内容显示在玩家出了的label框中
            lblPlayer.Text = btnJiandao.Text;
            //获取label框中的内容并转换成整数
            int vPlayer = ChangeStrToInt(lblPlayer.Text);
            //调用裁判的方法  将玩家和电脑的数据进行对比 并显示在结果框中
            lblResult.Text =  Judge(vPlayer, PC());
        }

        /// <summary>
        /// 玩家出石头
        /// </summary>
        public void Shitou()
        {
            lblPlayer.Text = btnShitou.Text;
            int vPlayer = ChangeStrToInt(btnShitou.Text);
            lblResult.Text = Judge(vPlayer, PC());
        }

        /// <summary>
        /// 玩家出布
        /// </summary>
        public void Bu()
        {
            lblPlayer.Text = btnBu.Text;
            int vPlayer = ChangeStrToInt(btnBu.Text);
            lblResult.Text = Judge(vPlayer, PC());
        }

        /// <summary>
        /// 写一个将鼠标点击事件 将字符串转换成相应数值的方法
        /// </summary>
        /// <param name="str">玩家点击的按钮内容</param>
        /// <returns>按钮相对应的整数值</returns>
        public int ChangeStrToInt(string str)
        {
            int n = 0;
            //对传入的字符串进行判断
            switch (str)
            {
                case "剪刀":
                    n = 1;
                    break;
                case "石头":
                    n = 2;
                    break;
                case "布":
                    n = 3;
                    break;
                default:
                    throw new Exception("未知出法");
            }
            return n;
        }

        /// <summary>
        /// 写一个电脑随机出拳的方法
        /// </summary>
        /// <returns>电脑的出拳值</returns>
        public int PC()
        {
            Random ran = new Random();
            //random.Next方法 取最小值,但不取最大值, 所以在1-3内随机取值
            int vPC = ran.Next(1, 4);
            string strPC = string.Empty;
            //进行简单判定 获取的随机值 同时转换成相应的字符串
            switch (vPC)
            {
                case 1:
                    strPC = "剪刀";
                    break;
                case 2:
                    strPC = "石头";
                    break;
                case 3:
                    strPC = "布";
                    break;
                default:
                    throw new Exception("未知错误:无法判断玩家出的拳!");
            }
            lblPC.Text = strPC;//显示电脑出的拳
            return vPC;
        }

        /// <summary>
        /// 比较玩家和电脑的值 判断谁赢谁输
        /// </summary>
        /// <param name="Player">玩家的出拳值</param>
        /// <param name="PC">电脑的出拳值</param>
        public string Judge(int Player, int PC)
        {
            //剪刀1  石头2  布3
            //赢的情况有2种 1种是 玩家比电脑值大1  一种是小2
            int tmp =  Player - PC;
            string judgedResult = string.Empty;
            if (tmp == 1 || tmp == -2)
                judgedResult = "你赢了";
            //平的情况只有1种 即为出拳相同
            else if (tmp == 0)
                judgedResult = "平局";
            //除此之外 只有输的情况了
            else
                judgedResult = "你输了";
            return judgedResult;
        }

 

效果测试:

 

 

这样一个猜拳小游戏就做好了!~~~:)

 

posted @ 2011-10-17 04:59  SilverSky(Jason)  阅读(14536)  评论(5编辑  收藏  举报