2017-04-19 204 views
0

需要對CPU進行編程,決定是再次擲骰子還是結束擲骰子。CPU玩家骰子游戲

該遊戲已與兩名球員合作。現在我只需要第二個玩家自己做出決定。

我該怎麼辦?這是代碼的一部分:

while not juego_termina: 
print("") 
jug_turno.lanzar_dado(dado) 
jug2.dec_cpu() 
while jug_turno.jugando: 
    jug2.dec_cpu()           #Se anida un while para cada turno del jugador 
    print("Puntaje parcial acumulado:",end=' ') 
    print(jug_turno.p_parcial) 
    continuar = "" 
    jug2.dec_cpu() 
    while continuar != "SI" and continuar != "NO":   #Pregunta si continua el turno 
     print("Desea seguir jugando? (SI/NO)") 

     continuar = input().upper()      #.upper para la mayuscula 
    if continuar == "SI": 
     jug_turno.lanzar_dado(dado) 
    else: 
     jug_turno.terminar_turno() 
if jug_turno.p_total >= meta:        #Compara el puntaje total con la meta asignada al inicio 
    juego_termina = True         #Se acaba el juego y salta a nombrar el ganador 
else: 
    if jug_turno == jug1: 
     jug_turno = jug2 
    else: 
     jug_turno = jug1 
mostrar_puntajes(jug1,jug2) 

打印(「厄爾尼諾ganador ES:」) 打印(jug_turno.nombre)

+0

問題:「我如何爲人類播放器(誰手動提供輸入)和計算機播放器(誰決定是否基於某種算法再次滾動)使用不同的邏輯?」,或者是「什麼邏輯應該電腦播放器用來決定是否再次滾動?「 –

+0

如何讓CPU(代替玩家2)決定是投擲骰子還是結束回合,就像真人一樣。 它已經與2個真正的球員合作。現在我只需要執行CPU – angelustt

回答

0

我只知道西班牙的量小,因此有可能我不正確地閱讀你的代碼,但它看起來像是21點的遊戲 - 勝出的玩家是沒有超過某個最大值的玩家總數最高(在21點的情況下爲21)。你可以用最簡單的算法的代碼可能看起來是這樣的:

def dec_cpu(maximum): 
    total = 0 
    while total < maximum and (highest_possible_die_roll/2) < (maximum - total): 
     total = total + roll_die() 
    return total 

(highest_possible_die_roll/2) < (maximum - total)部分基本上等於在說,「如果有小於50%的機率使滾動再死將讓我在最高,再次滾動「。從那裏,你可以根據遊戲規則進行改進。例如,如果每次有大量金錢下注,那麼計算機可能希望75%的人確信,如果線上有很多錢,那麼當骰子滾動時它們不會超過最大值。

+0

嘗試執行「total angelustt

+0

嗯 - 很難知道該怎麼做,但沒有看到代碼。我可能會在循環中添加一個語句,以便每次都打印所有變量,並確保它們按照您期望的方式進行更改(它應該只是總量不斷增加)。 –