屏幕上整个图像的移动

时间:2019-01-10 14:42:38

标签: python pygame

我无法在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()

1 个答案:

答案 0 :(得分:1)

当问题说“图像正在扩展”时-我相信这只是先前图像未删除的视觉伪像。

如果该行:

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的sprite代码已经处理了很多与移动事物有关的“琐事”(并检测碰撞等)。