Движение всего изображения на экране

Я не могу перемещать изображение на экране в 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()

person Zinus    schedule 10.01.2019    source источник
comment
Возможный дубликат Pygame, как исправить "конечные пиксели"?   -  person sloth    schedule 11.01.2019


Ответы (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. . Это может показаться дополнительной работой прямо сейчас, но избавит вас от многих хлопот в будущем, так как многие «рутинные дела», связанные с перемещением вещей (и обнаружением столкновений и т. д.), уже обрабатываются спрайт-кодом pygame.

person Kingsley    schedule 10.01.2019