我无法在pygame中移动屏幕上的图像。
我试图移动图像,但整个图像没有移动,但图像只是通过KEYDOWN扩展。
import sys
import pygame
def run_game():
"""An attempt to develop a simple game."""
pygame.init()
screen = pygame.display.set_mode((1200, 800))
pygame.display.set_caption("Rocket")
rocket_ship = pygame.image.load("images/alien_ship.bmp")
rec = rocket_ship.get_rect()
screen_rec = screen.get_rect()
rec.centerx = screen_rec.centerx
rec.bottom = screen_rec.bottom
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
rec.centerx += 5
elif event.key == pygame.K_LEFT:
rec.centerx -= 5
screen.blit(rocket_ship, rec)
pygame.display.flip()
run_game()
当问题说“图像正在扩展”时 - 我相信这只是以前图像的视觉假象未被删除。
如果该行:
screen.fill( 0,0,0 ) # paint the background black
在循环开始时添加:
while True:
screen.fill( 0,0,0 ) # paint the background black
for event in pygame.event.get():
这会从屏幕上移除以前画过的外星人。
处理此类事情的更好方法是使用pyGame's built in sprites。这可能看起来像是额外的工作,但将来会为你节省很多麻烦,因为很多涉及移动事物(以及检测碰撞等)的“琐事”已经由pygame的精灵代码处理。