# 一歩貸してください：学習用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_grid.py
.venv/bin/python 02_memory.py
.venv/bin/python 03_collision.py
.venv/bin/python 04_gate.py
.venv/bin/python 05_undo.py
```

Windows：

```powershell
.venv\Scripts\python.exe 01_grid.py
.venv\Scripts\python.exe 02_memory.py
.venv\Scripts\python.exe 03_collision.py
.venv\Scripts\python.exe 04_gate.py
.venv\Scripts\python.exe 05_undo.py
```

矢印：一歩、SPACE：待つ、R：初期化、Esc：終了。05はZで一手戻せます。押しっぱなしでは連続歩行しません。04/05の最初の部屋は、右→右→右で仕組みを確かめられます。

## 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
```

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

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

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

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

## 原作との違い

完成するのは、1手遅れの記憶・順番を守る衝突・床印で開く出口・undoです。原作1部屋目と同じ盤面と遷移規則を使います。原作の残り4部屋・部屋選択・最短解表示・効果音・アニメーション・日本語bitmap表示は省略しています。

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

## ライセンス

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