撲克牌系統

目前正在寫個撲克牌的程式,先是以十三支為應用的程式。希望裡面所寫出的class屆時可以運用到其他各種的撲克牌應用。

基本上,裡面的class我還是採取了以資料結構的方式來進行。主要的動作有:
1. 洗牌: 目前是採用多次數的兩兩交換方式進行。
2. 抽牌: 是將某一張牌從某個牌組拉出到另一個牌組,比如說打十三支時從你的牌中拉出為你的第一墩3張牌的部分,或是第二第三墩5張牌的部分。又如以後程式要寫成玩撿紅點,你牌打出去的動作,都可以為抽牌的動作。
3. 發牌: 等於是依序由主牌組抽牌(也就是都抽第一張牌)到各玩家手上的動作。
4. 判斷牌形,比較大小: 也就是判斷出你拉出的牌組是屬於哪一種,共分為: 同花順,鐵支,葫蘆,同花,順,三條,兩對,一對,烏龍等牌形。記錄大小部分,只記錄足夠資訊即可。比如說,順子方面只要記錄最大的那張牌即可。葫蘆或三條的部分,都記錄三條的部分的牌就可以。像同花,烏龍,則五張牌大小都得記錄。對子就必記錄對子的部分跟非對子的牌大小都得記錄。
5. 切牌: 對於十三支一般而言,民間玩法都是在發牌者洗完牌之後允許其他玩家切牌,一般而言,是以發牌者為守來看尾家切牌。而像撿紅點就必須尾家切牌而且可以看他自己切的牌是哪一支牌,其他玩家不可以看。
6. 聰明選牌: 根據以前我的經驗,把手上的牌列出可能可以打的牌種與大小,供玩家選用。這項可能比較有挑戰性。程式如何實現,必須要好好構思。當然可以的話,甚至可以讓程式學習以往獲勝的機率,讓獲勝機率高的牌形組合在前面些讓玩家選擇。當然程式絕不能有偷看別家目前的牌來給玩家選擇的可能性。不然會完全失去遊戲公平性。
7. 遊戲界面與美工: 這個提供了剛開始玩家在熟悉遊戲時,跟爾後繼續玩的興趣很大的重要性。畢竟不夠友善的遊戲都是很快被淘汰的。
8. 網路化: 目前我的程式都是在單機上進行撰寫,玩家當然是自己跟自己,在聰明選牌還沒做出時,玩家還無法跟電腦玩。當然,如果聰明選牌法還未做出時,有網路的話就可以進行遊戲了。反正電腦只要負責最後仲裁誰贏誰輸即可。網路化其實會牽涉到很多網路上的課題,一個是公平與安全性。另一個是記錄以往戰績,必要的話還必須把資料庫方式也用上。

以上是目前我程式撰寫牧錢想的到的規劃。這算是大綱雛形。細節跟以後遇到問題時必須修正時會繼續修正或增補之。

留言

這個網誌中的熱門文章

C# 不規則陣列不定長度設定方法

多維陣列的Resize

C#利用DateTime估計程式執行時間