Экран обновляется только при наведении на него курсора мыши, что-то не так с моим кодом?

#python #pygame

#python #pygame

Вопрос:

Вот код:

 # Initialize the pygame
pygame.init()


# Create the screen
screen = pygame.display.set_mode((800, 600))


# Title and Icon
pygame.display.set_caption("Space Invaders")
icon = pygame.image.load('ufo.png')
pygame.display.set_icon(icon)


# Player
playerImg = pygame.image.load("player.png")
playerX = 370
playerY = 480


def player(x, y):
    screen.blit(playerImg, (x, y))


# Run game until x is pressed

running = True

while running:
    for event in pygame.event.get():

        screen.fill((0, 0, 0))
        playerX  = 0.1
        print(playerX)

        if event.type == pygame.QUIT:
            running = False
            pygame.display.quit()
            sys.exit()

        player(playerX, playerY)
        pygame.display.update()
  

По какой-то причине экран обновляется только при наведении на него курсора мыши или при нажатии кнопки на клавиатуре. Мне больше нечего добавить, поэтому я должен ввести это, иначе я не смогу опубликовать свой вопрос.

Ответ №1:

Исправьте свои отступы. Вам нужно только проверить тип события в цикле событий. Код рисования находится в while цикле.

 while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            pygame.display.quit()
            sys.exit()

    screen.fill((0, 0, 0))
    playerX  = 0.1
    print(playerX)
    
    player(playerX, playerY)
    pygame.display.update()
  

Комментарии:

1. спасибо, теперь я чувствую себя очень глупо, лол (вроде как новичок в программировании)

Ответ №2:

Это вопрос отступа. Вам нужно обновить цикл экранного приложения, а не цикл событий:

 while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    #<--| INDENTATION

    screen.fill((0, 0, 0))
    playerX  = 0.1
    print(playerX)

    player(playerX, playerY)
    pygame.dispaly.flip() 
  

Комментарии:

1. ты прав, я чувствую себя очень глупо, лол, ну, по крайней мере, я могу продолжить 🙂