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