雪碧不会在pygame中移动

时间:2019-10-05 18:46:19

标签: python 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()

1 个答案:

答案 0 :(得分: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 = 140
while keep_alive:

    # [...]

    if move_direction == 'right':
        planet_x = planet_x + 5

    # [...]

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