【问题标题】:I have a conflicting code in this game我在这个游戏中有一个冲突的代码
【发布时间】:2014-12-04 20:33:38
【问题描述】:

我一直在修改骰子游戏猪的代码。我将其修改为掷 2 个骰子而不是 1 个。当您掷出一个时,它会转到下一个玩家回合,并且您的分数与您之前的分数都不相同。好吧,当你掷出两个时,我需要它来将分数重置为 0 并打印出我的消息“Snake Eyes!! 你的分数设置为 0”。问题是蛇眼打印出来的消息和当你只滚动一个时,当滚动两个时。分数也不会重置。

编辑* 我已经修复了打印消息冲突的代码,但是当 sneyes 滚动时仍然无法将分数重置为 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]))

【问题讨论】:

    标签: python if-statement random pygame


    【解决方案1】:

    您需要更正支票的顺序。现在,您的“掷出一个”检查在“掷出两个”检查之前进行,因此它将在掷出两个时执行。如果您先检查“两个一”并使用 else-if 构造使两者互斥,您将获得您想要的行为:

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

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

    【讨论】:

    • 好吧,解决了这个问题,当蛇眼滚动时,我仍然无法将分数重置为 0
    猜你喜欢
    • 2014-11-16
    • 1970-01-01
    • 2020-06-05
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多