• 沒有找到結果。

第三章 無王及各階段演算法

3.4 換牌演算法

3.4.4 改良過後的換牌演算法

在測試葉俊廷的程式時,發現原來的程式裡會有一些出牌不合理的地方,像 是會為了搶牌而有可能出實際上比自己大的牌。還有審局函數,把 2、3、4 的分 數定的比 5、6、7、8、9 還高,原本是為了在出現不想要的牌時拿來墊牌,但是 在換牌後期價值較低的牌出已經出現後不需要墊牌了,原本的程式還有可能繼續 保留小牌然後選擇 5、6、7、8、9 優先出牌。

首先我決定改變原來的審局分數,就直接按照每張牌在實際打牌時的大小來

翻開的牌 對 方 出 的 牌 我方的手牌

42

43

44

圖 24、例 3.4 牌張狀態圖

例 3.4:現在王牌為梅花

因為翻開的牌為黑桃 7,我方並不想要這張牌,在搜尋過自己的手牌後找到 兩張一樣價值最低的 6,分數皆為 24。在經過機率計算後兩張能比對方小的機率 也都是(1 −1230)4,最後再根據擁有 35 分以上的牌紅心較多所以我們選擇出方塊 6

翻開的牌 我方的手牌

45

當作這一回合的出牌。

(二) 持先手且翻開的分數大於 35

因為出現的牌分數大於 35,代表說我們是想要得到這一張牌的。但是要出價 值多好的牌來搶,我有了ㄧ個新的想法,就是會不會下一張牌的價值其實並不會 比現在出現的這一張低還有可能比較高。所以就新增了ㄧ個蓋著的牌的期望值。

公式變成了(W − X) ∗ P1 + (W − X) ∗ P2 = V。其中 W:出現的牌的價值

X:我方出的牌

P1:得到這張牌的機率

P2:下一張牌大於等於出現的牌的機率 V:得到總和分數

這樣子可以隨著換牌階段後期,如果有更好的牌還未出現,我們就可以用較 小的牌換到價值較好的牌。同樣以例 3.4 為例。

例 3.4:以梅花為王牌

翻開的牌 我方的手牌

46

經過計算後我們出黑桃 J 是最有利的,所以這回合選擇出黑桃 J。

(三) 持後手且翻開的分數小於 35

這時候情況就比較簡單,如果我們有相同花色的牌,則從裡面找一張最小的 牌出。如果缺門的話,則從其它花色中找一張價值最低的牌當作這回合的選擇。

同樣用例 3.4 當作例子。

例 3.4:王牌為方塊

梅花 4 的價值只有 16,因為對方出了紅心 7,而我方有紅心並沒有缺門,搜 尋過後找到紅心 6 比對方小,所以就決定以紅心 6 當作這回合的選擇。

(四) 持後手且翻開的分數大於 35

分數大於 35 代表說我們想要這張牌,而且對方已經出牌了。首先我們會找 對方出的牌是否比翻開的這張牌還小,如果比較小而且我們沒有缺門的話,則從 對方出的牌與翻開的牌大小之間找到價值最小的牌當作選擇,如果沒有在兩者之 間的牌,則觀察對方出的牌與翻開的牌這張牌之間的價值差距,然後在我方手牌 中找一張差距最小的牌當作選擇。如果缺門的話,則會選擇一張比翻開的牌價值 還要低且能贏過對方的牌當作選擇。以例 3.4 為例子:

翻開的牌 對 方 出 的 牌 我方的手牌

47

例 3.4:王牌為梅花

因為王牌為梅花,所以梅花 4 的分數為 74,所以我們會想要這張牌。對方出 了紅心 J,而我方剛好有紅心 Q 比紅心 J 大而且價值不大於梅花四,所以用梅花 4 當作這回合的選擇。

相關文件