2014-12-04 77 views
0

我一直在修改骰子游戏猪的代码。我将它修改为滚动2个骰子而不是1个骰子的位置。当你掷出一个时,它会转向下一个玩家,并且你的分数与你之前的分数没有任何差异。那么当你滚动两个我需要它将分数重置为0并打印出我的消息“蛇眼!你的分数设置为0”。问题是两条消息都会打印出蛇眼,并且当你滚动一个滚动条时滚动一条。此外,分数不会重置。我在这个游戏中有冲突的代码

编辑*我已经固定的代码与冲突的打印消息,但仍然遇到麻烦分数时snakeyes被卷

from random import randint 

playercount = 2 
maxscore = 100 
safescore = [0] * playercount 
player = 0 
score=0 

while max(safescore) < maxscore: 
    if player == 0: 
     rolling = 0 
     if score < 17 and score + safescore[player] < maxscore: 
      rolling = 1 
    else: 
     rolling = input("Player %i: (%i, %i) Rolling? (Y) " 
      % (player, safescore[player], score)).strip().lower() in {'yes', 'y', ''} 
    if rolling: 
     rolled = randint(1, 6) 
     rolled2 = randint(1, 6) 
     print(' Rolled %i' % rolled) 
     print(' Rolled %i' % rolled2) 
     if rolled ==1 and rolled2 ==1: 
       print(' Snake Eyes!! your score is set to 0') 
       score=0 

     elif rolled == 1: 
      print(' Bust! you lose %i but still keep your previous %i' 
        % (score, safescore[player])) 
      score, player = 0, (player + 1) % playercount 
     elif rolled2 == 1: 
      print(' Bust! you lose %i but still keep your previous %i' 
        % (score, safescore[player])) 
      score, player = 0, (player + 1) % playercount 


     else: 
      score += rolled + rolled2 
    else: 
     safescore[player] += score 
     if safescore[player] >= maxscore: 
      break 
     print(' Sticking with %i' % safescore[player]) 
     score, player = 0, (player + 1) % playercount 

print('\nPlayer %i wins with a score of %i' %(player, safescore[player])) 

回答

2

您需要纠正检查的顺序重置为0。现在你的“滚动一个”检查出现在“滚动两个”检查之前,所以它将在两个滚动时执行。如果你把“两个一”先检查,使两个独家与其他-if结构,你会得到的行为,你想:

if rolled==1 and rolled2==1: 
    # snake eyes 
elif rolled==1: 
    # a single one 
else: 
    # all other cases 

另外请注意,如果两个骰子来到你目前只检查或者如果第一次死亡来了一个。你可能还想检查第二个死亡是否出现了。

+0

还可以修好那个问题我还在用蛇皮卷时重设为0的分数有问题 – itsthewendigo 2014-12-04 20:50:15