用C# Winform写个猜拳小游戏

简介

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

原理

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

 

界面设计(如图)

用C# Winform写个猜拳小游戏

 

代码:

        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;

        }

 

效果测试:

用C# Winform写个猜拳小游戏

 

用C# Winform写个猜拳小游戏

 

用C# Winform写个猜拳小游戏

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

 

你可能感兴趣的:(WinForm)