2011-11-21 289 views
0

我想为猪骰子游戏想出一个模拟。我希望它能模拟用户想要的游戏数量(每场比赛达到100分)并报告每位玩家的平均分数和胜率。我的程序正在运行,但它只运行一个游戏。我认为我的循环有问题,但我无法说清楚。谢谢您的帮助和时间,这里是我的程序:Python编程骰子游戏?

from random import randrange # Use "randrange(1, 7)" to get a random 
           # number between 1 and 6. 

# Takes one turn in the game of pig. Keeps rolling until either 
# the holdAmount is reached or a pig (1) is rolled. Returns the 
# score accumulated during the turn. 
def takeTurn(holdAmount): 
    totalScore = 0 
    while totalScore < holdAmount: 
     rollValue = randrange(1,7) 
     if rollValue == 1: 
      totalScore = 0 
      break 
     else: 
      totalScore = totalScore + rollValue 
    return totalScore 

    # Start with turn score equal to 0. Repeatedly roll die, adding 
    # roll value to score each time, until score reaches holdAmount. 
    # If at any time a pig (1) is rolled, set score to 0 and end the 
    # turn early. 


# Tests the takeTurn function. 
def main(): 
    first = eval(input("How many points should the first player try for in each turn?")) 
    second = eval(input("How many points should the second player try for in each turn?")) 
    games = eval(input("How many games should be simulated?")) 
    firstScore = 0 
    secondScore = 0 
    turnCount = 0 
    score = 0 
    score1 = 0 
    won = 0 
    won1 = 0 
    for i in range(games): 
     while firstScore < 100 and secondScore < 100: 
      firstScore = takeTurn(first) + firstScore 
      secondScore = takeTurn(second) + secondScore 
      turnCount = turnCount + 1 
     if firstScore >= 100: 
      won = won + 1 
     elif secondScore >= 100: 
      won1 = won1 + 1 
     score = score + firstScore 
     score1 = score1 + secondScore 
    percent = won/games 
    percent1 = won1/games 
    points = score/games 
    points2 = score1/games 
    print("The average points for player one is",points) 
    print("The percent of games won for player one is",percent) 
    print("The average points for player two is",points2) 
    print("The percent of games won for player two is",percent1) 



if __name__ == "__main__": 
    main() 

回答

0

传统的方式来获得一个更好地了解你的程序正在做的是在循环和分支点增加一些打印语句。

更高级的技术是使用pdb来追踪整个程序。

+0

我没有在我的程序中发现错误,我只是不能让它运行多个游戏。虽然它可能会运行多个游戏,但只计算最后一场比赛。 – nminor33

+0

这听起来像是一个初始化问题。确保在连续运行之间重置所有变量。祝你好运:-) –

1

当我第一次看这个时,我感到困惑了一阵子。原因是每场比赛都以相同的分数结束,因为每次都不重置firstScore等值。如果在for循环的开始处将其中的每个设置为0,则不会有任何问题。

更具体地说,如果您将forScore中的firstScore,secondScore和turnCount移动到它的顶部,代码将正常运行。

+0

非常感谢你,我觉得它很欣赏它。 – nminor33

+0

太棒了!我很高兴得到了援助。 – meem1029

0

您需要在for循环中使用firstScoresecondScore