看板 GameDesign 關於我們 聯絡資訊
之前是用c++寫過,不過就演算法來說,應該沒差別 1.先判定順、鐵隻、胡蘆、三條、一對、二對、散牌 方法: 第一階段、取得配對數: 輸入的牌寫成陣列,寫個迴圈比對元素0~4之間的數字是否相等 宣告一配對組型變數A(int) 相等一次 將A+1 將最終值/2 如果是散牌 = 0 一對 = 1 二對 = 2 三條 = 3 葫蘆 = 4 鐵隻 = 6 /*不確定,有點忘記,請自己拿紙筆算一下 我記得最後出來的值,剛好一個數字 = 一種結果*/ 第二階段: 當散牌時,判定是不是順子跟同花 如果是其他的,直接去判斷同型內大小 順子:降冪排列後檢查是不是序數 記得10、11、12、13、1 的特例 同花:這就直接五張比下去就對了 這樣一來,由順子、同花、對數三個函式,就能知道牌型 2.判定同型內大小 比較勝負的話,只有同型狀況下需要比較大小 方法是:用一個4個元素的陣列代表大小 第一個元素為為牌型 如果是散牌,取得數字最大者為第二元素 把第三元素排成花色(由大到小3~0) 同花,取最大張牌為第二元素,第三用不到,空著 /*其他一對、二對、葫蘆、鐵隻都是差不多的形式 比較大小時,依序取得代表大小陣列,開始比就能知道輸贏*/ ※ 引述《jijuan (雞卷)》之銘言: : 梭哈遊戲,每個人都有5張牌組成最大的牌面來比大小? : 不過程式該怎麼去判斷每副牌的大小呢? : 目前我初步的想法是給每張牌一個分數 : 如A=14分,K=13分,...,2=2分 : 那如果我今天拿到胡爛 A K Q 5 3 總分就是14+13+12+5+3=47分 : 如果有對子就乘上100分 A A K Q J 總分就是 (14+14)*100+13+12+11=2836分 : 但是由於A A K Q J是最大的一對 : 那最小的兩對如 2 2 3 3 4 就是 (2+2)*加權值+(3+3)*加權值+4 必須大於2836分 : 可以算出加權值至少要是284才會成立 : 那從胡爛、一對、到最大的同花大順 : 該怎麼去寫一個函式傳入0-51之中隨意的五個值判斷這個牌組是幾分呢? : 不知道有經驗的版友能分享一下想法呢 -- ◢ 鄉民啊!鄉民! 請告訴我誰是最純潔的人! ◢█ │ PTT │ ██ :就是你!Snow White F23ko!│ █◤ ╯ ◤ ﹨(╯▽╰ )∕ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.27.109.99
Yshuan:我第一次寫的時候是一堆if-else... 很痛苦orz 01/27 17:39
F23ko:我第一次寫梭哈演算法的AI,他算一次牌花40秒.... 01/27 23:12
F23ko:在那之後.... 好幾年沒碰程式.... 囧" 01/27 23:12
F23ko:最近才重新開始學C# 01/27 23:13
realmeat:我也寫過一個 現在正被使用中就是... 01/27 23:53