080 予報士の机 / 日本語・5段階チュートリアル

この教材は架空の8枚カードの机上ゲームです。現実の気象、災害判断、金融予測には使いません。
原作Cを使い、候補集合→観測→予報の幅→正確な期待点→初回と再演へ進みます。
01〜04は意図的に機能を絞った学習段階、05が原作Cの完成モデルです。
日本語の説明はLESSON.mdとlessons.json、ゲーム画面はASCIIです。

必要なもの
Python 3.11以上とpyxel==2.9.9。実際の検証はPython 3.12.14 / Pyxel 2.9.9。
python -m venv .venv
Windows: .venv\Scripts\python -m pip install -r requirements.txt
Linux/macOS: .venv/bin/python -m pip install -r requirements.txt
以下のpythonはその仮想環境のPythonへ読み替えてください。
Windows/macOS実機のGUIは未検証です。

起動
python -B 01_card_bank.py
python -B 02_observation.py
python -B 03_forecast_width.py
python -B 04_expected_value.py
python -B 05_honest_replay.py
各.pyは単独で起動できます。他の教材、原作、assets、画像、JSONは起動に不要。
原作ソースと教材ソースは別フォルダーで、原作は編集しません。

操作
01: 矢印で公開カードを参照、Rで参照カーソルを戻す。
02: 矢印で風/雲、Zで一種類の観測。まだ提出しません。
03〜05: 矢印で風/雲/晴/曇/雨の欄、Zで観測または予報ON/OFF。
Enterで提出、Spaceで結果から次の日。無観測でも全部予報でも有効です。
04〜05: Tabで全7予報の期待点比較。見た日は支援ありとして記録。
05: Z/Enter/Spaceで表紙から開始。X=Undo、R=同じ3日を再開、B=比較版。
H/P=説明、M=表紙。Bは一種類の外れを-4から-1へ替えるだけです。
全段階: Escapeで終了。一度操作したら全操作キーを離してから次へ。
同時押しも全て拒否し、全解放まで再受付しません。

学習上の注意
予報の幅は「天気を何種類含むか」。数値の連続区間や信頼区間ではありません。
初回はこのセッションで未開示だった日の最初の提出という分類だけです。
固定された教材の手順・デモ・QA結果を見た後の点数を独力や初見の予測力と呼びません。
アプリを終了しても人の知識は消えません。3日だけで長期の予測力や確率校正を証明しません。
公開表示と実行JSONは当日結果の開示後だけ答えを載せ、未来の秘密カードを載せません。
qa/canonical_reference.jsonは検証専用の固定例です。結果を含むので未開示問題の予告には使いません。

モデル試験（Pyxelのimport不要、原作フォルダー不要）
python -B -S -m unittest -v test_stages.py
実Pyxelの自動検査（Python標準ライブラリ + Pyxel）
python -B tools/render_qa.py
任意の原作直接比較（原作は読み取りのみ）
python -B tools/verify_original.py "/原作へのパス/080_forecaster_desk"
配布内容の照合
python -B tools/check_freeze.py

単体のheadless例
python -B 04_expected_value.py --headless-replay TZA --screenshot cloud.png --report cloud.json
文字: L/T/U/D=左/右/上/下、Z=Z、E=Enter、S=Space、A=Tab、X/R/B/M/H/P=対応キー。
各段階にない文字は起動前に拒否します。--headless-smokeは無入力で12フレーム描画。
--headless-replayは押下/解放を交互に合成し、12フレーム以上を実Pyxelで描画します。
出力パスは呼び出した作業場所を基準に解決し、JSONは明示UTF-8です。
--screenshot/--reportはheadless専用。通常起動で指定した場合や誤った文字はexit 2です。
自動入力はOSキーボードや人の試遊ではありません。QAの詳細はQA.txt。

ライセンス
LICENSEは原作の全文を変更せず収録し、各段階の冒頭にもコメントとして全文を記載。
原作MIT noticeのCopyright (c) 2026をそのまま保持。
参照先のassets/NOTO-LICENSE.txtとassets/PYXEL-LICENSE.txtも原文のまま収録。
この教材はNotoの字形データを同梱せず、Pyxel標準ASCIIと図形だけを使います。
