2013-05-31 361 views
0

好,所以我正在製作一個使用輸出框的二十一點計劃 。我的問題在於試圖爲用戶獲得幫助。 我需要幫助找出什麼在這一點上做的:大酒杯的幫助:關於是否打或站的建議

if (y.equalsIgnoreCase("Y")) 
{ 
       if(userHand.getBlackjackValue()+10<21) 
       { 
        System.out.println("You should hit."); 
       } 
       if(userHand.getBlackjackValue()+10>21) 
       { 

       } 
    } 

的問題是在第二內if語句。應該如何確定玩家是否應該繼續擊球或應該站立。我將包含該課程以及與該課程有關的其他課程。我在想,我可能有更多的方法添加到項目中,以使其工作

https://sites.google.com/site/np2701/

如果u能請大家指出一些令人費解的代碼,我可以解決了,感謝

+0

我認爲通過「卡片計數」,Patashu意味着對已經處理的卡片進行計數,並計算下一張特定卡片的可能性。你所描述的是二十一點的標準得分。對於如何做出這個決定,你有沒有特別的算法?或者你的問題是?如果是這樣,爲什麼不使用拉斯維加斯經銷商使用的相同啓發式 - 如果16或更低,則達到17或更高? –

+0

@StephenCarlson製作一個比玩家聰明的提示系統有什麼好處? – Patashu

+0

好吧,我明白他在說什麼。我試圖計算下一個可能導致比分超過限制的特定牌的機率。並根據這些機率來告訴玩家是否要擊球。我打算用斯蒂芬·卡爾森對desicion使 – user2426191

回答

1

如果卡片計數超出範圍,使用基本的策略表來表達你正在使用的規則(套牌數量等):http://wizardofodds.com/games/blackjack/strategy/calculator/ - 你應該根據你手牌的積分值和經銷商的卡片索引到表格中,並返回存儲的選項在桌子裏。您可以選擇將其作爲二維數組存儲在代碼中,或者從文件中加載它。您可以將其存儲爲字符並解釋字符,含義或枚舉,例如您可以將枚舉提示命名爲成員Hit,Stand,Split等。

基本策略表保證提供如果卡片計數被忽略,最好的成功機率,因爲我們採取所有相關的狀態,並選擇統計最好的選項。

如果我們也想計入卡片計數,那麼我們必須跟蹤真實計數(運行高低計數除以剩餘甲板的數量),並且對於某些狀態(玩家手得分vs經銷商顯示卡),而不是始終執行相同的操作,如果真計數高於x,則執行一個操作,如果低於x,則執行另一個操作。另外,如果真正的數值很低(低於1),那麼你應該下注,並且隨着它增加過1而越來越多地下注,但不會有更多的風險破產。在這裏閱讀更多信息http://wizardofodds.com/games/blackjack/card-counting/high-low/

爲了以編程方式表示這樣的索引,我將創建一個包含三個字段的對象:索引下方的操作,上面的索引操作和索引值。

+0

爲什麼downvote? – Patashu

0

如果您真的想要向用戶推薦適當的遊戲,您需要查看您正在模擬的遊戲的基本策略。這些表格基於玩家的總數(並且您必須知道它是軟的還是硬的)以及經銷商的upcard。

如果你想知道的是「我的下一次擊球機會有多少」,那就是(剩餘的卡牌數量會讓你破滅)/(剩餘的總卡數)。這不僅需要玩家總數,而且需要真實的卡牌。例如,在單人套牌中,如果一名玩家對陣莊家5有七張牌,則剩餘的49張牌中會有24張半牌,所以你會在24/49(約49%)的時候破牌。但是如果你有10和4(還有14)對抗經銷商10,那麼只剩下22張胸牌,有45%的機會被擊中。