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++;

            }

 

        }

 

    }

}


發佈了21 篇原創文章 · 獲贊 20 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章