我在这个游戏中有一个冲突的代码



我一直在修改骰子游戏猪的代码。 我将其修改为掷 2 个骰子而不是一个骰子的位置。 当你掷出一个时,它会进入下一个玩家回合,你的分数与之前的分数都不一样。 好吧,当你掷出两个时,我需要它将分数重置为 0 并打印出我的信息"蛇眼!!您的分数设置为 0"。问题是两条消息都打印出来给蛇眼,当你只掷一个时,当两个被掷出时。 此外,分数不会重置。

编辑* 我已经修复了带有冲突打印消息的代码,但是在滚动蛇类时仍然无法将分数重置为 0

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]))

您需要更正检查的顺序。现在,您的"滚动一个"检查在"滚动两个"检查之前,因此它将在滚动两个检查时执行。如果您首先放置"两个一"检查并使用else-if构造使两个独占,您将获得所需的行为:

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

另外,请注意,您目前只检查两个骰子是否出现一个,或者第一个骰子是否出现一个。您可能还想检查第二个骰子是否出现了一个。

相关内容

最新更新