# おばけ洗濯日和：学習用5段階

このREADMEと `01_...py` が見えるフォルダーでコマンドを実行してください。ZIPを展開した場合は、展開先をターミナルで開きます。

必要：Python 3.11以降、Pyxel 2.9.9、通常プレイにはGUIとOpenGL対応環境。Pyxel 2.9.9は元パッケージの指定に合わせています。Pyxel以外の追加パッケージや画像・音素材は不要です。

## 1. 最初の準備

macOS / Linux：`python3 --version` が3.11以上か確認してから実行します。

```sh
python3 --version
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
```

Windows PowerShell / コマンドプロンプト：`py -3 --version` が3.11以上か確認してから実行します。

```powershell
py -3 --version
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
```

初回のpipインストールにはインターネットが必要です。学校・共有PCでは管理者の利用ルールに従ってください。環境作成やPyxelの読み込みに失敗した場合は、まず表示されたエラー文とPythonのバージョンを確認します。

## 2. 順番に実行

1本ずつ起動して終了させてから、次のコマンドを実行します。

macOS / Linux：

```sh
.venv/bin/python 01_move.py
.venv/bin/python 02_catch.py
.venv/bin/python 03_bank.py
.venv/bin/python 04_hazard.py
.venv/bin/python 05_round.py
```

Windows：

```powershell
.venv\Scripts\python.exe 01_move.py
.venv\Scripts\python.exe 02_catch.py
.venv\Scripts\python.exe 03_bank.py
.venv\Scripts\python.exe 04_hazard.py
.venv\Scripts\python.exe 05_round.py
```

左右キー：移動、R：初期化、Esc：終了。03以降は、左右のかごに近い場所でSPACEを押すと預けられます。05は45秒・目標80点。持ち物は時間切れで得点になりません。

## 3. 読む → 動かす → 小さく変える

`LESSON.md` の各段階に、追加する考え方、実際の短いコード、見える結果、よくある間違い、改造課題があります。`lessons.json` は同内容の構造化データです。説明の `python ファイル名.py` は仮想環境を有効化した場合の短縮表記です。迷ったら上の完全コマンドを使ってください。

- 各ファイルは単独で動きます。前段階のファイルは読み込みません。
- フォルダーを `pyxel`、ファイルを `pyxel.py` と名付けないでください。外部パッケージの読み込みを邪魔することがあります。
- 変更は一度に1個。予想→実行→結果を比べます。
- 変更前後の差分は `diffs/`。全てを暗記する必要はありません。
- ゲーム内の文字はPyxel標準の英字、解説は日本語です。

## 4. コードの検査

Pyxelを使わない純粋ロジックと構文のテストです。GUIなしで実行できます。

macOS / Linux：

```sh
.venv/bin/python -m unittest -v test_stages.py
```

Windows：

```powershell
.venv\Scripts\python.exe -m unittest -v test_stages.py
```

この教材作成時には17テストが成功しました。テスト成功は実画面・音・操作感・学習効果の保証ではありません。

実際のPyxelを12フレーム起動して終了する補助モードもあります。ゲームを最後まで遊ぶテストではありません。OpenGLを含む実行環境によってはheadlessでも失敗します。

```sh
.venv/bin/python 05_round.py --headless-smoke --screenshot smoke.png
```

Windowsでは先頭を `.venv\Scripts\python.exe` に置き換えます。音素材を使わない教材です。

## 原作との違い

完成するのは、回収→持つ→かごへ預ける→危険を避ける→結果、という一連の仕組みです。原作の風・seedによる配置・練習・開始カウント・効果音・粒子・統計・75秒/220点調整は省略しています。教材の布は固定順に真下へ落ちます。

教材最終段階は、原作の全システムの再実装ではありません。原作は別の完成版として読んでください。原作用ZIPの `app.py` はそのZIPの説明に沿って起動してください。

## ライセンス

`LICENSE` を必ず保持してください。元コード・図形はMIT、Copyright (c) 2026 Tidepost contributors。教材の変更・追加コードもMITです。教材は原作のNoto由来の日本語bitmapを使用しません。原作を別配布する際はその `assets/NOTO-LICENSE.txt` も保持します。
