2017-04-19 181 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

嗯 - 很难知道该怎么做,但没有看到代码。我可能会在循环中添加一个语句,以便每次都打印所有变量,并确保它们按照您期望的方式进行更改(它应该只是总量不断增加)。 –