Я несерьезен вокруг с pygame прямо сейчас, и на все небольшие программы кажется, что я делаю с ним, зависают, когда я пытаюсь закрыть их.
Возьмите следующий код, например:
from pygame.locals import *
pygame.init()
# YEEAAH!
tile_file = "blue_tile.bmp"
SCREEN_SIZE = (640, 480)
SCREEN_DEPTH = 32
if __name__ == "__main__":
screen = pygame.display.set_mode(SCREEN_SIZE, 0, SCREEN_DEPTH)
while True:
for event in pygame.event.get():
if event.type == QUIT:
break
tile = pygame.image.load(tile_file).convert()
colorkey = tile.get_at((0,0))
tile.set_colorkey(colorkey, RLEACCEL)
y = SCREEN_SIZE[1] / 2
x = SCREEN_SIZE[0] / 2
for _ in xrange(50):
screen.blit(tile, (x,y))
x -= 7
y -= 14
Я не вижу ничто плохого с кодом, он работает (проигнорируйте то, что мозаика не является копированием битового массива в правильных местах), но нет никакого traceback и единственного способа закрыться, он должен уничтожить процесс Python в Диспетчере задач. Кто-либо может определить проблему с моим кодом?
Если вы запускаете его из IDLE, то вам не хватает pygame.quit().
Это вызвано интерпретатором IDLE python, который, кажется, как-то хранит ссылки вокруг. Убедитесь, что при выходе из приложения или игры вы вызываете pygame.quit().
Смотрите: В IDLE почему окно Pygame не закрывается правильно?
Где вы выходите из внешней петли?
while True: # outer loop
for event in pygame.event.get(): # inner loop
if event.type == QUIT:
break # <- break inner loop