所以,在我的记忆游戏里,当你按错按钮,你就失去了生命。这很管用!失去3条生命后,你就失去了。但这里的问题是,生命的文本一旦启动就不会出现在我的游戏中。有人能帮我吗(如果您对查看整个代码感兴趣,那么可以在这里查看它http://pastebin.com/rkBGC2rD

def main():
    global FPSCLOCK, DISPLAYSURF, BASICFONT, BEEP1, BEEP2, BEEP3, BEEP4

    pygame.init()
    FPSCLOCK = pygame.time.Clock()
    DISPLAYSURF = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption('Simulate')

    # font
    BASICFONT = pygame.font.Font(None, 30)

    # load the sound files
    BEEP1 = pygame.mixer.Sound('beep1.wav')
    BEEP2 = pygame.mixer.Sound('beep2.wav')
    BEEP3 = pygame.mixer.Sound('beep3.wav')
    BEEP4 = pygame.mixer.Sound('beep4.wav')
    SOUNDTRACK = pygame.mixer.Sound('soundtrack.wav')
    ERROR = pygame.mixer.Sound('error.wav')

    # initialize some variables for a new game
    pattern = [] # stores the pattern of colors
    currentStep = 0 # the color the player must push next
    lastClickTime = 0 # "time stamp" of the player's last button push
    score = 0

    # plays the soundtrack music
    SOUNDTRACK.play(-1, 0, 1000)

    # start-up screen text
    text = BASICFONT.render('Press enter to play!', 1, WHITE)
    textRect = text.get_rect()
    textRect.centerx = DISPLAYSURF.get_rect().centerx
    textRect.y = 150
    DISPLAYSURF.blit(text, textRect)

    # update the screen
    pygame.display.update()

    # the start up screen command
    waiting = True
    while waiting:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RETURN:
                    waiting = False

    # amount of lives
    lives = 3
    img = BASICFONT.render('I'*lives, 1, WHITE)
    livesRect = img.get_rect()
    livesRect.topleft = (10, 10)
    DISPLAYSURF.blit(img, livesRect)

    # when False, the pattern is playing. when True, waiting for the player to click a colored button:
    waitingForInput = False

    while True: # main game loop
        clickedButton = None # button that was clicked (set to YELLOW, RED, GREEN, or BLUE)
        DISPLAYSURF.fill(bgColor)
        drawButtons()

        scoreSurf = BASICFONT.render('Score: ' + str(score), 1, WHITE)
        scoreRect = scoreSurf.get_rect()
        scoreRect.topleft = (WIDTH - 100, 10)
        DISPLAYSURF.blit(scoreSurf, scoreRect)

        checkForQuit()
        for event in pygame.event.get(): # event handling loop
            if event.type == MOUSEBUTTONUP:
                mousex, mousey = event.pos
                clickedButton = getButtonClicked(mousex, mousey)

        if not waitingForInput:
            # play the pattern
            pygame.display.update()
            pygame.time.wait(1000)
            pattern.append(random.choice((YELLOW, BLUE, RED, GREEN)))
            for button in pattern:
                flashButtonAnimation(button)
                pygame.time.wait(FLASHDELAY)
            waitingForInput = True
        else:
            # wait for the player to enter buttons
            if clickedButton and clickedButton == pattern[currentStep]:
                # pushed the correct button
                flashButtonAnimation(clickedButton)
                currentStep += 1
                lastClickTime = time.time()

                if currentStep == len(pattern):
                    # pushed the last button in the pattern
                    score += 1
                    waitingForInput = False
                    currentStep = 0 # reset back to first step

            elif (clickedButton and clickedButton != pattern[currentStep]) or (currentStep != 0 and time.time() - TIMEOUT > lastClickTime):
                # pushed the incorrect button, or has timed out
                pattern = []
                currentStep = 0
                waitingForInput = False
                lives = lives - 1
                SOUNDTRACK.stop()
                ERROR.play()
                pygame.time.wait(1000)
                SOUNDTRACK.play(-1, 0, 1000)
                pygame.display.update()
                if lives < 1:
                    gameOverAnimation()
                    # reset the variables for a new game:
                    pattern = []
                    currentStep = 0
                    waitingForInput = False
                    score = 0
                    pygame.time.wait(1000)

        pygame.display.update()
        FPSCLOCK.tick(FPS)

最佳答案

每次更改lives时,都必须重新渲染

img = BASICFONT.render('I'*lives, 1, WHITE)

在每个循环中显示
DISPLAYSURF.blit(img, livesRect)

关于python - 我的游戏中的“生命”不会出现吗? pygame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20024936/

10-13 07:05