C# Winform學習--- 實現石頭剪刀布的遊戲

來源:互聯網
上載者:User

標籤:winform   style   blog   http   color   使用   os   io   

本文使用winform實現簡單的石頭剪刀布的遊戲,主要實現,電腦隨機出拳,玩家手動點擊出拳;實現簡易背景圖片3秒切換;簡易統計資訊。

1、

 

 

 

2.實現代碼

建立一個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++;            }        }    }}

 

實現遊戲的痛點在於要想到將石頭剪刀布用數字來替換,如果邏輯通了實現起來並不難。

本文源碼:https://github.com/amosli/CSharp/tree/stone

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.