此代码中的“行星”精灵不会左右移动,也不会动画。错误在哪里?实际上,清单来自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()
答案 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])