Почему мое приложение PyGame вообще не работает?

avatar
Itay
12 декабря 2020 в 11:58
372
1
2

У меня есть простая программа Pygame:

#!/usr/bin/env python

import pygame
from pygame.locals import *

pygame.init()

win = pygame.display.set_mode((400,400))
pygame.display.set_caption("My first game")

Но каждый раз, когда я пытаюсь его запустить, я получаю следующее:

pygame 2.0.0 (SDL 2.0.12, python 3.8.3)
Hello from the pygame community. https://www.pygame.org/contribute.html

И тогда ничего не происходит. Почему я не могу запустить эту программу?

Источник

Ответы (1)

avatar
Rabbid76
12 декабря 2020 в 12:11
4

Ваше приложение работает нормально. Однако вы не реализовали цикл приложения:

import pygame
from pygame.locals import *

pygame.init()

win = pygame.display.set_mode((400,400))
pygame.display.set_caption("My first game")
clock = pygame.time.Clock()

run = True
while run:

    # handle events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    # update game objects
    # [...]

    # clear display
    win.fill((0, 0, 0))

    # draw game objects
    # [...]

    # update display
    pygame.display.flip()

    # limit frames per second
    clock.tick(60) 

pygame.quit()

Типичный цикл приложения PyGame должен:

  • обрабатывайте события, вызывая либо pygame.event.pump(), либо pygame.event.get().
  • обновлять игровые состояния и позиции объектов в зависимости от входных событий и времени (соответственно кадров)
  • очистить весь дисплей или нарисовать фон
  • нарисовать всю сцену (blit все объекты)
  • обновите отображение, вызвав либо pygame.display.update() , либо pygame.display.flip()
  • ограничить количество кадров в секунду, чтобы ограничить использование ЦП с помощью pygame.time.Clock.tick

repl.it/@Rabbid76/PyGame-MinimalApplicationLoop См. Также Событие и цикл приложения

Itay
12 декабря 2020 в 12:17
0

Большое спасибо!