Итак, я запускаю код, и он просто начинает давать сбои. Я новичок в pygame.
Вот код:
import pygame
pygame.init() # Screen (Pixels by Pixels (X and Y (X = right and left Y = up and down))) screen = pygame.display.set_mode((1000, 1000)) running = True # Title and Icon pygame.display.set_caption("Space Invaders") icon = pygame.image.load('Icon.png') pygame.display.set_icon(icon) # Player Icon/Image playerimg = pygame.image.load('Player.png') playerX = 370 playerY = 480
defplayer(x, y): # Blit means Draw screen.blit(playerimg, (x, y))
# Game loop (Put all code for pygame in this loop) while running: screen.fill((225, 0, 0)) pygame.display.update()
for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # if keystroke is pressed check whether is right or left if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: print("Left arrow is pressed")
if event.key == pygame.K_RIGHT: print("Right key has been pressed")
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: print("kEYSTROKE RELEASED")
# RGB (screen.fill) = red green blue
player(playerX, playerY) pygame.display.update()
Изображение не глючит, так как я не смог опубликовать видео, но это то, что делает мой код
Переведено автоматически
Ответ 1
Проблема вызвана несколькими вызовами pygame.display.update(). Достаточно обновить отображение в конце цикла приложения. Несколько вызовов pygame.display.update() или pygame.display.flip() вызывают мерцание.
Удалите все вызовы pygame.display.update() из вашего кода, но вызовите его один раз в конце цикла приложения:
while running: screen.fill((225, 0, 0)) # pygame.display.update() <---- DELETE
# [...]
player(playerX, playerY) pygame.display.update()
Если вы обновите отображение после screen.fill(), на короткое время дисплей будет заполнен фоновым цветом. Затем игрок рисуется (blit), и дисплей отображается с игроком поверх фона.