Движение всего изображения на экране - PullRequest
0 голосов
/ 10 января 2019

Я не могу переместить изображение на экран в 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 голосов
/ 11 января 2019

Когда в вопросе говорится, что «изображение расширяется» - я считаю, что это всего лишь визуальный артефакт предыдущего изображения, которое не стирается.

Если строка:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...