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