メインループだが、色々試行錯誤しながらとりあえず下のような形式になった。
def run(self): """ ゲーム実行メインループ """ # TODO: データ(アイテムデータとか)をロード # party, mapdata は上でロードしたデータ state = State() state.party = party state.map = Map(mapdata, "") scene = MapScene(state) state.scene = scene drawer = Drawer() clock = pygame.time.Clock() while True: clock.tick(60) state = state.scene.update(pygame.event.get(), pygame.key.get_pressed()) drawer.draw(self.screen, state) pygame.display.update()
下から3行目のpygame.event.get()とpygame.key.get_pressed()を別々に渡しているのが嫌なので直したい。
あと、シーンの種類が増えるとstateが膨れ上がる予感。この辺は「ゲームプログラマに〜」を参考にしよう(本内ではシーンではなくシーケンスって単語を使ってたけど)