何水艷 武漢軟件工程職業(yè)學(xué)院
雙色球是中國福利彩票的一種玩法, 完成一個(gè)雙色球系統(tǒng)有如下規(guī)則:實(shí)現(xiàn)手工選號(hào)(不能出現(xiàn)重復(fù)號(hào)碼);按雙色球游戲規(guī)則自動(dòng)選號(hào)(不能出現(xiàn)重復(fù)號(hào)碼);模擬開獎(jiǎng);根據(jù)開獎(jiǎng)結(jié)果計(jì)算中獎(jiǎng)金額等。C#是一個(gè)簡單的、現(xiàn)代的、通用的、面向?qū)ο蟮木幊陶Z言,應(yīng)用.NET框架,綜合運(yùn)用C#相關(guān)知識(shí)完成控制臺(tái)程序的界面設(shè)計(jì)與實(shí)現(xiàn)。通過本系統(tǒng)的開發(fā)使學(xué)生掌握基于C#程序設(shè)計(jì)的基本方法,具備一定的控制臺(tái)應(yīng)用程序開發(fā)的能力,對(duì)提高學(xué)生軟件編程實(shí)踐操作能力具有現(xiàn)實(shí)的指導(dǎo)意義。
應(yīng)用C#的控制臺(tái)界面設(shè)計(jì)與功能模塊如下圖1所示,包括手工選號(hào),自動(dòng)選號(hào),模擬開獎(jiǎng)、結(jié)果對(duì)比、界面刷新等功能。這里將在Visual Studio 2015平臺(tái)下完成雙色球游戲開發(fā)的實(shí)驗(yàn)。
由用戶手動(dòng)輸入選擇的紅球和藍(lán)球號(hào)碼,其中6個(gè)紅球,1個(gè)藍(lán)球。紅球范圍為1-33,藍(lán)球號(hào)碼為1-16,所選數(shù)字不允許重復(fù),也不允許選擇不存在的號(hào)碼。
為了防止選號(hào)數(shù)字的重復(fù),可以定義了一個(gè)bool類型的數(shù)組,數(shù)組大小也就是整個(gè)紅球的數(shù)量,從01到33,如果這個(gè)號(hào)碼已經(jīng)被選了,那么這個(gè)bool數(shù)組指定號(hào)碼的位置就被標(biāo)為true;然后繼續(xù)隨機(jī)生成數(shù)字,實(shí)例化一個(gè)隨機(jī)對(duì)象;最后通過隨機(jī)對(duì)象的Next方法,生成01到33的隨機(jī)數(shù),把它存到一個(gè)大小為6的數(shù)組中,最終作為變量返回即可。
由系統(tǒng)自動(dòng)生成6個(gè)不重復(fù)紅球號(hào)碼,1個(gè)藍(lán)球號(hào)碼。紅球范圍為1-33,藍(lán)球號(hào)碼為1-16。
生成不重復(fù)隨機(jī)數(shù)算法:
1)定義一個(gè)數(shù)據(jù)源,一個(gè)接收結(jié)果的容器;
2)利用random生成一個(gè)指定范圍的索引;
3)將隨機(jī)生成的索引的數(shù)據(jù)源位置數(shù)據(jù)賦值給容器的第1個(gè)位置;
4)將數(shù)據(jù)源的最后一個(gè)元素賦值給隨機(jī)索引的位置;
5)隨機(jī)索引上限減1。
獲取中獎(jiǎng)號(hào)碼和獲取機(jī)選號(hào)碼的函數(shù)是一樣的,在可投注號(hào)碼范圍內(nèi),隨機(jī)選擇號(hào)碼,存入公共靜態(tài)變量中,如下圖所示∶
將機(jī)選號(hào)碼或手選號(hào)碼與開獎(jiǎng)號(hào)碼進(jìn)行比對(duì),根據(jù)比對(duì)結(jié)果判斷中獎(jiǎng)等級(jí),并根據(jù)投注倍率返回獲得獎(jiǎng)金的值。
實(shí)現(xiàn)算法:
1)分別定義一個(gè)統(tǒng)計(jì)紅球和籃球相同個(gè)數(shù)的變量;
2)將用戶選擇的紅球與系統(tǒng)開獎(jiǎng)開出的紅球進(jìn)行比對(duì),若相同,則統(tǒng)計(jì)紅球的變量值+1,藍(lán)球同理;
3)根據(jù)紅球及藍(lán)球相同的個(gè)數(shù)判斷中獎(jiǎng)等級(jí),并根據(jù)等級(jí)計(jì)算獎(jiǎng)金。
文中設(shè)計(jì)了基于c#的雙色球綜合實(shí)驗(yàn),讓學(xué)生利用所學(xué)知識(shí)和技能,以項(xiàng)目為驅(qū)動(dòng),進(jìn)一步掌握C#程序的開發(fā)技術(shù)和技巧,強(qiáng)化了學(xué)生模塊化編程方法; 這將有助于綜合掌握C#的基礎(chǔ)知識(shí),以及更好的培養(yǎng)學(xué)生實(shí)踐工程能力。本實(shí)驗(yàn)設(shè)計(jì)的另一個(gè)特點(diǎn)是,在Visual Studio 2015平臺(tái)下,完全用它的控制臺(tái)界面進(jìn)行編程開發(fā),既充分鍛煉了學(xué)生的軟件編程能力,又有效的達(dá)到了實(shí)驗(yàn)?zāi)繕?biāo)。以上只是筆者的一點(diǎn)經(jīng)驗(yàn)體會(huì),在教學(xué)實(shí)際過程中應(yīng)注意的問題還有很多。