需要对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)
print(“El ganador es:”) 打印(jug_turno.nombre)
答案 0 :(得分:0)
我只知道少量的西班牙语,所以我可能会错误地阅读你的代码,但看起来游戏的工作方式就像二十一点一样 - 获胜的玩家就是总数最高的玩家没有超过一些最大值(在二十一点的情况下为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)
部分基本上是在说,&#34;如果不到50%的几率再次滚动骰子将使我超过最大值,再次滚动&#34;。从那里,您可以根据游戏规则进行优化。例如,如果每次下注都有一定数量的钱,那么计算机可能希望75%确定当骰子滚动时他们不会超过最大值,如果有很多钱的话。钱就行了。