フローをまとめておきます。
1. 起動
__main__
から KeibaApp.__init__()
が呼ばれます。変数の初期化、 pyxel.init()
、そして pyxel.run(update, draw)
でメインループを開始します。
2. index.json の取得 (scene = LOADING)
_start_index_fetch()
が pyodide.http.pyfetch
で index.json の非同期取得を開始します。取得中は update()
が毎フレーム _upd_loading()
を呼び、完了を待ちます。完了すると _on_index_loaded()
でレースファイルのリストを作り、 scene = FILE
に切り替わります。
3. レース選択画面 (scene = FILE)
_drw_file()
がファイル一覧を描画します。ユーザーがレースを選んで決定すると _open_file()
が呼ばれ、対象の race JSON の非同期取得を開始します。
4. race JSON の取得待ち
update()
の冒頭で _race_loader
がロード中かどうかを確認し、中なら _poll_race_loader()
を呼んで完了を待ちます。完了すると parse_races_from_json()
でデータを変換し、 scene = LIST
に切り替わります。
5. 出走馬一覧 (scene = LIST)
_drw_list()
が馬の一覧を描画します。Tab でソート切替、Enter または クリックで馬を選ぶと scene = DETAIL
に進みます。ESC で FILE に戻ります。
6. 詳細画面 (scene = DETAIL)
_drw_detail()
が選んだ馬の詳細情報を表示します。スクロールで全情報を確認でき、ESC で LIST に戻ります。
非同期処理のポイント
asyncio.ensure_future()
で取得を「投げっぱなし」にして、Pyxel の 30fps ループの中で毎フレーム完了を確認するポーリング方式を取っています。これが今回の修正の核心です。
2025 チャンピオンズカップ調教タイム一覧… Dec 7, 2025
Python で 競馬予想 実践第12回 2020年… Dec 26, 2020
Python で 競馬予想 実践第11回 阪神JF… Dec 13, 2020
PR
Free Space
Calendar
Comments
Freepage List