要約
簡単なテストコードでも重くフリーズしたようになるが、イベントハンドリングを行っていないからかもしれない。
コード
import pygame
# 初期化
pygame.init()
# 定数
WIDTH, HEIGHT = 800, 600
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
BLUE = (0, 0, 255)
# ウィンドウの設定
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Game Template3")
# フレーム数
clock = pygame.time.Clock()
# フレームレートの上限設定
fps_limit = 30
# ゲームループ
running = True
# 再描画対象のrectリスト
dirty_rects = []
pygame.display.flip()
while running:
clock.tick()
dirty_rects = []
# ★ここがないと固まった。
# for event in pygame.event.get():
# if event.type == pygame.QUIT:
# running = False
# 塗りつぶし
screen.fill(BLACK)
# 青い四角形の描画
rect_square = pygame.draw.rect(screen, BLUE, (100, 100, 100, 100))
#dirty rectのリスト作成
dirty_rects.append(rect_square)
pygame.display.update(dirty_rects)
# フレームレートを制限
clock.tick(fps_limit)
# Pygameを終了
pygame.quit()
ドキュメントにも書いてありました
Not handling events may cause your system to decide your program has locked up.
でも、「イベントキューにたまり過ぎたら古いものからドロップするよ」とも書いてあるので、普通に動いてほしくはあります。
The event queue has an upper limit on the number of events it can hold. When the queue becomes full new events are quietly dropped.