Sprite不会在pygame中移动

此代码中的“行星”精灵不会左右移动,不会动画。错误在哪里?实际上,该列表来自 google play 的应用程序“Programming Hero”,其中应用程序的作者一步一步地指导学生完成视频 - 使用 python 制作游戏的过程......


import pygame


screen_size = [360,640]

screen =     pygame.display.set_mode(screen_size)

background = pygame.image.load('background.png')

planet =     pygame.image.load('one.png')

spaceship =  pygame.image.load('spaceship.png')

bullet =     pygame.image.load('bullet.png')



keep_alive = True

planet_x = 140           # I've edited this

move_direction = 'right' # out of the loop, too


# according to the same logic "I've saved the planet" to go infinitely right

# thanx 


while keep_alive:

    pygame.event.get()

    keys = pygame.key.get_pressed()

    if keys[pygame.K_SPACE] == True:

        print('Space key pressed')


    screen.blit(background, [0,0])

    screen.blit(bullet,[180,500])

    screen.blit(spaceship,[160,500])


    # I put this out off loop:           planet_x = 140

    # wrong, must go out of a loop, too: move_direction = 'right'


    if move_direction == 'right':

        planet_x = planet_x + 5

        if planet_x == 270:

            move_direction = 'left'

    else:

        planet_x = planet_x - 5

        if planet_x == 0:

            move_direction = 'right'


    screen.blit(planet, [planet_x, 50])

    pygame.display.update()


皈依舞
浏览 159回答 1
1回答

斯蒂芬大帝

行星 ( planet_x) 的位置在每一帧中重新初始化:while keep_alive:   # [...]   planet_x = 140   if move_direction == 'right':       planet_x = planet_x + 5   # [...]   screen.blit(planet, [planet_x, 50])将 , 的初始化移到planet_x主应用程序循环之前:planet_x = 140while keep_alive:    # [...]    if move_direction == 'right':        planet_x = planet_x + 5    # [...]    screen.blit(planet, [planet_x, 50])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python