C# Winform学习--- 实现石头剪刀布的游戏

新建一个windows窗体程序,用数字1代表石头,用数字2代表剪刀,用数字3代表布,结果取玩家和电脑出拳之差,有三种结果

 

玩家赢: -1,2

平手: 0

玩家输: 其它值 

新建3个类:

 

1)Computer.cs 电脑随机出拳

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace 石头剪刀布

{

    class Computer

    {

        public  string Fist

        {

            get;

            set;

        }

 

        public int ShowFist()

        {

            Random rnd = new Random();

            int fist = rnd.Next(1, 4);

            switch (fist)

            {

                case 1: Fist = "石头"; break;

                case 2: Fist = "剪刀"; break;

                case 3: Fist = "布"; break;

            }

            return fist;

        }

    }

}

 

2)、Judge.cs 裁判类 判断输赢

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace 石头剪刀布

{

    class Judge

    {

        public enum RESULT

        {

            玩家赢,

            电脑赢,

            平手

        }

        public static RESULT WhoWin(int playerNum, int computerNum)

        {

            int result = playerNum - computerNum;

            if (result == -1 || result == 2)

            {

                return RESULT.玩家赢;

            }

            else if (result == 0)

            {

                return RESULT.平手;

            }

            else

            {

                return RESULT.电脑赢;

            } 

        } 

    }

}

 

3)、Player.cs 玩家,出拳

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace 石头剪刀布

{

    class Player

    {

        public static int ShowFist(string fist)

        {

            switch (fist)

            {

                case "石头": return 1;

                case "剪刀": return 2;

                case "布": return 3;

                default: return 0;

            }

        }

    }

}


界面后台实现代码:

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace 石头剪刀布

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        /// <summary>

        /// 点击石头按钮

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnStone_Click(object sender, EventArgs e)

        {

            String fist = "石头";

            Game(fist);

        }

        /// <summary>

        /// 点击剪刀按钮

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnScissors_Click(object sender, EventArgs e)

        {

            String fist = "剪刀";

            Game(fist);

        }

        /// <summary>

        /// 点击布按钮

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnCloth_Click(object sender, EventArgs e)

        {

            String fist = "布";

            Game(fist);

 

        }

 

        //背景图片轮播

        String[] paths = Directory.GetFiles(@"C:\work\stone");//此目录里面必须有图片,否则会报错

        private void timer1_Tick(object sender, EventArgs e)

        {

            this.BackgroundImage = Image.FromFile(paths[new Random().Next(0, paths.Length)]);

 

        }

        static int playerWinTimes = 0;//玩家赢的次数

        static int gameTimes = 0;//总共次数

        static int tieTimes = 0;//平手次数

 

        /// <summary>

        /// 通用方法

        /// </summary>

        /// <param name="fist"></param>

        private void Game(String fist)

        {

            gameTimes++;

            lbPlayer.Text = fist;

            int playerNum = Player.ShowFist(fist);

            Computer cpu = new Computer();

            int cpuNum = cpu.ShowFist();

            lbComputer.Text = cpu.Fist;

            Judge.RESULT result = Judge.WhoWin(playerNum, cpuNum);

            lbJudge.Text = result.ToString();

            lbStatistics.Text = "统计信息:\n\n1.您赢了" + playerWinTimes + "场比赛!\n\n" + "2.平手了" + tieTimes + "次; \n\n" + "3.输掉了" + (gameTimes - playerWinTimes - tieTimes) + "场比赛; \n\n" + "4.共进行了" + gameTimes + "场比赛!\n\n";

 

            if (result == Judge.RESULT.玩家赢)

            {

                playerWinTimes++;

                MessageBox.Show("恭喜,您已经赢了" + playerWinTimes + "场比赛!" + " 共进行了" + gameTimes + "场比赛!");

            }

            else if (result == Judge.RESULT.平手)

            {

                tieTimes++;

            }

 

        }

 

    }

}


  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值