掷骰游戏不会改变结果

问题描述:

做Python中的掷骰游戏,每当我开始我的第二轮我还是最终获得从上一轮相同的骰子结果。掷骰游戏不会改变结果

import random 
import time 

#gets the dice side 
def roll_dice(sides): 
    dice_results = list() 
    for side in sides: 
     roll_result = random.randint(1,side+1) 
     dice_results.append(roll_result) 
    return dice_results 

#pulls a dice out from the list 
def dice_fell(roll_result): 
    player1_dice = player1_dice_results 
    player2_dice = player2_dice_results 

    for item in player1_dice: 
     if item % 4 == 0: 
      player1_dice.remove(item) 
     return player1_dice 

    for item in player2_dice: 
     if item % 4 == 0: 
      player2_dice.remove(item) 
      return player2_dice 
# variables 

dice_set1=[4, 6, 8, 10, 12, 20, 100] 
dice_set2=[4, 6, 8, 10, 12, 20, 100] 

player1_dice_results = roll_dice(dice_set1) 
player2_dice_results = roll_dice(dice_set2) 

player1_final_results = dice_fell(player1_dice_results) 
player2_final_results = dice_fell(player2_dice_results) 

player1_total= sum(player1_dice_results) 
player2_total= sum(player2_dice_results) 

player1_score = 0 
player2_score = 0 

while player1_score < 3 or player2_score < 3: 
# This part just announces what happens 

    exit= input(str("Press Enter to start! Press 'q' to leave after each round! \n")) 
    if exit != "q": 
     print("Let's begin! Be careful for the small table!") 
    elif exit == "q": 
     quit() 

    print("You are rolling...") 
    time.sleep(2) 
    print("You have rolled: ",player1_final_results) 

    if len(player1_final_results) < 7: 
     print("Sorry player 1, some of your dice have fallen off the table!") 

    print() 
    print("Your total is: ",player1_total) 
    print() 

    print("Player 2 is rolling...") 
    time.sleep(2) 
    print("Player 2 has rolled:" ,player2_final_results) 
    if len(player2_final_results) < 7: 
     print("Sorry player 2, some of your dice have fallen off the table!") 
    print() 
    print("Player 2's total is: ",player2_total) 
    print() 

    if player1_total > player2_total: 
     print() 
     print("You have won the round with,",player1_total,"!"), 
     player1_score += 1 
     print("Your score is: ",player1_score) 
    elif player2_total > player1_total: 
     print() 
     print("Player 2 has won the round with,",player2_total,"!"), 
     player2_score += 1 
     print("Player 2's score is: ",player2_score) 

    if player1_score == 3: 
     print("Congratulations, you won!") 
    elif player2_score == 3: 
     print("Player 2 wins! Better luck next time champ!") 
+1

_“这部分只是宣布发生了什么”_它在哪里做?我没有看到它打印有关骰子卷的任何信息。如果我将所有这些代码粘贴到一个脚本中并运行它,我会看到您描述的问题吗? – Kevin

+0

加入剩下的部分。必须分解一些,以便我可以提交它。对于那个很抱歉! – Ryan

+6

请阅读[mcve]并在布局上花费更多时间;没有人想要梳理格式不正确的代码转储。 – jonrsharpe

我相信我已经修复了缩进问题。 我转载问题。 正如凯文说,你眼前的问题是,你的霸气只有一次,你输入循环之前。以下是循环内的滚子的外观,但是玩家决定是否继续。

dice_set1=[4,6,8,10,12,20,100] 
dice_set2=[4,6,8,10,12,20,100] 

player1_score = 0 
player2_score = 0 

while player1_score < 3 or player2_score < 3: 
    # This part just announces what happens 

    exit = raw_input(str("Press Enter to start! Press 'q' to leave after each round! \n")) 
    if exit != "q": 
     print("Let's begin! Be careful for the small table!") 
    elif exit == "q": 
     quit() 

    player1_dice_results = roll_dice(dice_set1) 
    player2_dice_results = roll_dice(dice_set2) 

    player1_final_results = dice_fell(player1_dice_results) 
    player2_final_results = dice_fell(player2_dice_results) 

    player1_total= sum(player1_dice_results) 
    player2_total= sum(player2_dice_results) 

    print("You are rolling...") 
    ... # remainder of code omitted 

也就是说,你注意,你还有其他几个问题的方案。你将不会终止,直到球员已经赢得了三次 - 在条件使用,而不是

我的大部分其他意见是更适合的代码审查组;当您完成调试时,您可能会在那里发帖。

+0

哇,我觉得现在真的很愚蠢,这工作。感谢Prune和Kevin的所有帮助! – Ryan