斗地主游戏小结
文章目錄
- 程序簡介
- 程序的實現
- 程序中使用到的類
- Card:一副撲克牌。
- CardGroup:
- Player:玩家
- Game:游戲主程序
- Scene:游戲界面
- 人工智能部分實現
- 分析選牌牌型
- 分析手牌并拆分成有效牌型
- 出牌/跟牌分析
- 拆牌原則:
程序簡介
程序的實現
程序中使用到的類
Card:一副撲克牌。
接口:洗牌、抹牌及剩余牌數。CardGroup:
一組牌型,如:單張、對子、順子、炸彈等等。
屬性:包含牌序號集合、對應牌的權值集合、該組牌的類型、權值、牌的數量; 接口:添加/刪除序號牌、重置結構內屬性、靜態序號到權值轉換。Player:玩家
屬性:手牌集合、手牌牌型集合、選牌集合、出牌集合、是否不出牌、玩家總分數; 接口:包括分析叫地主分數、分析手牌、選牌、分析是否出牌(或跟牌)等。Game:游戲主程序
屬性:玩家、地主方、當前出牌方、本局基本分、倍率、地主專屬牌集合等; 接口:相關控制游戲進行函數,及沒個步驟通知界面更新。Scene:游戲界面
包含游戲界面元素及游戲主界面緩沖去生成及窗口繪制等功能。人工智能部分實現
分析選牌牌型
分析手牌并拆分成有效牌型
出牌/跟牌分析
是否需要重新分析手牌,分析完成后進行第2步;
直接出牌(最后出牌方為自己);
- 如手牌數為2,則先出王炸、炸彈、數量最多、權值最大的牌;
- 如下家為我方,其手牌數為一,則出最小單牌;如下家為敵方,其手牌數為一,盡量不出單牌,或出最大單牌;
- 其他正常出牌順序為:單牌(A以上的牌盡量不直接出)→對子→雙順→單順→三條、三帶一、飛機
跟友方牌(最后出牌方為我方)
- 手牌把數≤2,應出對應牌或炸彈,否則過牌
- 上家為地主且未跟牌,過牌
- 有對應牌,且權值小于14,則跟,炸彈不跟;
跟敵方牌(最后出牌方為敵方)
- 有對應牌就跟,
- 沒有就拆,
- 再著用炸彈,否則就過牌
拆牌原則:
拆牌后一定要清空牌型集合
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結