根據鬥地主出牌規則.對玩家出的牌進行檢驗.判斷是否符合出牌規則.
(關於鬥地主的出牌規則網上有很多)
思路:將玩家的牌按公升序排序.然後將牌進行拆分,分存在4個陣列中.拆分規則如下:
假設有牌:333\444\555\789
則拆分後陣列中的資料如下
arr[0]:345789
arr[1]:345
arr[2]:345
arr[3]:null
可以看出拆分規則是:如果遇到相同數字的牌則存到下乙個陣列的末尾.
拆分完後可以根據各陣列的儲存情況判定玩家出牌的型別,上面例子arr[3]為空.可以排除掉4帶1(2).炸.的情況根據arr[2]為順子且個數大於1,且arr[2]中存放的牌的張數乘以3剛好等於arr[0]的張數+arr[1]的張數.則可以判定是三帶一的飛機.其他型別的牌也有相似的規律.以下是該演算法的核心源**.本演算法用c#編寫.
鬥地主AI出牌
鬥地主遊戲的初期版本目前為止大概已經完成的一半了 還剩下最麻煩的部分 ai 沒寫,寫這篇博文主要是想理一下基本的思路,然後把這一部分也搞完.經過較長時間的冥思苦想,包括網上找資料 網上關於鬥地主ai的資料很少.終於想到了乙個大概可行的辦法 先寫出來試試吧 鬥地主的ai部分主要分為兩塊 乙個是主動出牌...
鬥地主AI演算法 第七章 被動出牌 1
哎,之前扯了那麼多蛋,終於講出牌了!本章開始講被動出牌的邏輯演算法。首先我們先把架子搭起來,被動出牌我們肯定是要知道場上目前打出的是什麼牌型。在第二章資料結構裡我們定義過,遊戲全域性類裡面有乙個存放當前牌型結構的成員,即 當前打出牌的型別資料,被動出牌時玩家根據這裡做出篩選 cardgroupdat...
鬥地主AI演算法 第十三章 主動出牌 2
上一章我們已經搭好了出牌演算法的基本框架,本章主要實現優先處理的三帶 飛機等牌型。首先定義一些基本變數 cpp view plain copy 暫存最佳的價值 handcardvalue besthandcardvalue besthandcardvalue.needround 20 besthan...