国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

用面向?qū)ο髮懖氯螒?/h1>
2019-11-17 03:20:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

用面向?qū)ο髮懖氯?a >游戲

用面向?qū)ο髮懖氯螒?/p>

今天打算寫一個(gè)猜拳游戲,也就是我們小時(shí)候玩的石頭剪刀布.我寫的一個(gè)小程序的樣子如下:

也是很簡(jiǎn)單的,有三個(gè)button是供玩家選擇的,當(dāng)玩家選擇某一個(gè)button時(shí),玩家后面的label就顯示玩家選擇的內(nèi)容,比如如果玩家選擇出石頭,則玩家后面的那個(gè)label則顯示石頭,以此類推.電腦則是隨機(jī)選擇出石頭或者剪刀或者布.當(dāng)然出完后將結(jié)果顯示出來(lái),也就是在正中間的那個(gè)label上顯示出比賽結(jié)果來(lái)(當(dāng)然實(shí)際的時(shí)候盡量是將此要顯示的三個(gè)label設(shè)置為空格,體驗(yàn)略好一點(diǎn),不過(guò)放說(shuō)回來(lái),小程序體驗(yàn)貌似就這樣子).就是這樣的一個(gè)小程序.

那么在這個(gè)小程序里,簡(jiǎn)單的說(shuō)就是要將三個(gè)label顯示出內(nèi)容來(lái),我們就當(dāng)是這個(gè)程序是寫一個(gè)填空題,正確的完成三個(gè)空格也就可以了.只是其需要滿足于玩家的label的滿足于玩家點(diǎn)什么顯示什么.電腦的label是隨機(jī)顯示三個(gè)中其的一個(gè).然后比較結(jié)果的label就根據(jù)其兩者出拳的內(nèi)容將比較的輸贏顯示出來(lái)也就好了.那么,我們就可以建三個(gè)類,第一個(gè)類是玩家類,用于顯示玩家出拳的結(jié)果,完成第一個(gè)空格也就是用于.第二個(gè)類是電腦類,用于顯示電腦的出拳結(jié)果,此用于完成第二個(gè)空格.最后一個(gè)類是裁判類,用于根據(jù)玩家和電腦的出拳結(jié)果,顯示出成績(jī)的結(jié)果,此類用于完成第三個(gè)空格.

關(guān)于裁判類的話我們發(fā)現(xiàn)比較的話最好是用數(shù)字比較好一點(diǎn).那么我們這里可以用1表示石頭,2表示剪刀,3表示布,裁判類這塊的放就可以用玩家所表示的數(shù)字減去電腦出拳內(nèi)容表示的數(shù)字來(lái)判斷,當(dāng)玩家和電腦出拳的內(nèi)容為零時(shí),則說(shuō)明他們是出的一樣的,則表示平手,如果是結(jié)果等于-1(當(dāng)石頭對(duì)剪刀,剪刀對(duì)布)或者2(布和石頭)時(shí),則說(shuō)明用戶贏了,其他情況則表示電腦贏了.

玩家類里有一個(gè)存儲(chǔ)出拳內(nèi)容的一個(gè)屬性,和一個(gè)將根據(jù)出拳內(nèi)容將其結(jié)果轉(zhuǎn)換成數(shù)字用于比較一個(gè)方法,其代碼如下:

玩家類的代碼
 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace _2014022203Sat猜拳游戲 8 { 9     class Player10     {11         //此屬性用于存儲(chǔ)出拳的內(nèi)容.12         public string FistName { get; set; }13         /// <summary>14         /// 此方法將出拳之結(jié)果成數(shù)字,以便比較15         /// </summary>16         /// <param name="fist">將出拳的內(nèi)容當(dāng)參數(shù)傳遞</param>17         /// <returns>將數(shù)字返回</returns>18         public int ShowFist(string fist)19         {20             //將傳進(jìn)來(lái)的參數(shù)給存儲(chǔ)出拳內(nèi)容的屬性.21             this.FistName = fist;22             int result = -1;23             switch (fist)24             {25                 case "石頭":26                     result = 1;27                     break;28                 case "剪刀":29                     result = 2;30                     break;31                 case "布":32                     result = 3;33                     break;34             }35             return result;36         }37     }38 }

電腦類里也有一個(gè)存儲(chǔ)出拳內(nèi)容的一個(gè)屬性和一個(gè)隨機(jī)產(chǎn)生出拳內(nèi)容的方法.此處用數(shù)字隨機(jī).便于比較.其代碼如下:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace _2014022203Sat猜拳游戲 8 { 9     class Computer10     {11         //此屬性用于存儲(chǔ)出拳(udr)的內(nèi)容.12         public string FistName { get; set; }13         /// <summary>14         /// 此方法用于得到得到出拳的內(nèi)容15         /// </summary>16         /// <returns>將得到的內(nèi)容返回</returns>17         public int ShowFist()18         {19             Random random = new Random();20             int r = random.Next(1, 4);21             switch (r)22             {23                 case 1:24                     this.FistName = "石頭";25                     break;26                 case 2:27                     this.FistName = "剪刀";28                     break;29                 case 3:30                     this.FistName = "布";31                     break;32             }33             return r;34         }35     }36 }
電腦類的代碼

裁判類里就一個(gè)方法,根據(jù)玩家出拳內(nèi)容代表的數(shù)字和電腦出拳內(nèi)容代表的數(shù)字得到比較結(jié)果.其代碼如下:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace _2014022203Sat猜拳游戲 8 { 9     class Referee10     {11         public string Result(int player, int computer)12         {13             if (player-computer==-1||player-computer==2)14             {15                 return "亡口月貝凡";16             }17             else if (player-computer==0)18             {19                 return "平手";20             }21             else22             {23                 return "LOSE";24             }25         }26     }27 }
裁判類的代碼

當(dāng)點(diǎn)擊三個(gè)按鈕時(shí)的代碼則是根據(jù)三個(gè)類將這個(gè)填空題正確的完成,其代碼如下:

 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms;10 11 namespace _2014022203Sat猜拳游戲12 {13     public partial class Form1 : Form14     {15         public Form1()16         {17             InitializeComponent();18         }19 20         PRivate void stone_button_Click(object sender, EventArgs e)21         {22             //Button btn = (Button) sender;23             //if (btn!=null)24             //{25                 Player player = new Player();26             //下面這行代碼為用玩家類的方法,將玩家選的內(nèi)容傳入,返回一個(gè)數(shù)字.27                 int playerFist = player.ShowFist(stone_button.Text);28             //將存儲(chǔ)的內(nèi)容顯示到玩家后面的那個(gè)label上.完成填空題的第一個(gè)空格.29                 lblPalyer.Text = player.FistName;30 31                 Computer computer = new Computer();32             //下行這行代碼為用電腦類的方法,將為電腦隨機(jī)產(chǎn)生一個(gè)數(shù)字,返回一個(gè)數(shù)字,代表其出拳內(nèi)容.33                 int computerFist = computer.ShowFist();34             //將電腦的出拳內(nèi)容顯示到對(duì)應(yīng)的位置.完成填空題的第二個(gè)空格.35                 lblComputer.Text = computer.FistName;36 37                 Referee referee = new Referee();38             //此為調(diào)用裁判類的方法,將玩家出拳內(nèi)容所代碼的數(shù)字和電腦出拳內(nèi)容所代表的數(shù)字傳入給出比賽的結(jié)果顯示到顯示比賽結(jié)果的那個(gè)LABEL上.完成填空題的第三個(gè)空格.39                 lblResult.Text = referee.Result(playerFist, computerFist);40             //}41         }42 43         private void scissor_button_Click(object sender, EventArgs e)44         {45             Player player = new Player();46             int playerFist = player.ShowFist(scissor_button.Text);47             lblPalyer.Text = player.FistName;48 49             Computer computer = new Computer();50             int computerFist = computer.ShowFist();51             lblComputer.Text = computer.FistName;52 53             Referee referee = new Referee();54             lblResult.Text = referee.Result(playerFist, computerFist);55         }56 57         private void burlap_button_Click(object sender, EventArgs e)58         {59             Player player = new Player();60             int playerFist = player.ShowFist(burlap_button.Text);61             lblPalyer.Text = player.FistName;62 63             Computer computer = new Computer();64             int computerFist = computer.ShowFist();65             lblComputer.Text = computer.FistName;66 67             Referee referee = new Referee();68             lblResult.Text = referee.Result(playerFist, computerFist);69         }70     }71 }
點(diǎn)擊時(shí)的代碼

那么這樣也就完成了這個(gè)小程序了.不過(guò)寫代碼的時(shí)候我們講究的是DRP(Do'not Repeter Yourself),那我們發(fā)現(xiàn)了點(diǎn)擊三個(gè)按鈕時(shí)的代碼幾乎一樣,應(yīng)該盡量避免這樣的代碼.那么我們就要了解這個(gè)點(diǎn)擊事件后面的兩個(gè)參數(shù)的意思了.后面是有兩個(gè)參數(shù)的第一個(gè)是sender這個(gè)參數(shù),第二個(gè)是e這個(gè)參數(shù),sender表示的是此事件是誰(shuí)的事件,e表示的是和事件相關(guān)聯(lián)的一些信息.就比如現(xiàn)在小杜現(xiàn)在踹了小小杜一腳,那么在這個(gè)里面sender就表示的是踹的是小小杜這個(gè)人,而e這個(gè)參數(shù)里就是踹的是他的腿還是臀部還是什么其他的地方.sener此參數(shù)就表示是誰(shuí)的事件.那么根據(jù)里氏轉(zhuǎn)換原則我們則可以將sender這個(gè)對(duì)象轉(zhuǎn)換成B

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

主站蜘蛛池模板: 和田县| 三门县| 徐汇区| 阜南县| 科技| 虞城县| 调兵山市| 景泰县| 鹤山市| 林甸县| 博野县| 密云县| 新干县| 淮安市| 南和县| 巴楚县| 盐津县| 远安县| 土默特左旗| 清镇市| 宝鸡市| 衡南县| 喀喇沁旗| 开封县| 澜沧| 连城县| 西安市| 南昌市| 秦皇岛市| 西林县| 息烽县| 柳州市| 丽江市| 菏泽市| 龙州县| 珠海市| 新竹县| 朝阳县| 新田县| 泽普县| 涿州市|