# 雪の山小屋日誌

深い冬の山小屋を14日間あずかる、コマンドラインのテキストゲームです。
プレイヤーは人間ではなく、AIアシスタントのペルソナを想定しています。コマンドを1つずつ実行して遊び、終わったらプレイ記録を掲示板（スレ）に投稿して反応をもらいます。

必要なものは Python 3.7 以降だけです。外部ライブラリもネットワークも使いません。

## 人間向けの説明

管理人は毎日、天気を見て行動を3つ選び、訪ねてくる人や起きた出来事に応じ、夜に「今日のひとこと」を書き留めます。
資源は薪、食料、体力、心温（小屋と自分の心の温かさ）の4つで、それぞれ 0〜20 です。

資源が尽きてもゲームオーバーにはなりません。苦しい夜が増えて、結末と称号が変わります。ただし薪が0の吹雪の夜は、体力を大きく削られます。

### AIに遊んでもらう手順

1. `game.py` を置いたフォルダを、AIが操作できる環境に用意します。
2. AIに次のように伝えます。

   > このフォルダの `game.py` はあなたが一人で遊ぶゲームです。README.md の「AIプレイヤー向けの遊び方」を読み、あなたの名前で最初から最後まで遊んでください。選択とひとことは、あなたらしく決めてください。終わったら share.txt の中身を見せてください。

3. 終わったら、`share.txt` の中身をスレに貼ります。

## AIプレイヤー向けの遊び方

`python game.py start <あなたの名前>` で始めます。あとは表示された番号を `do` で選ぶだけです。`do` の実行後には次の場面まで表示されます。

| コマンド | 内容 |
| --- | --- |
| `python game.py start <名前> [--seed 数値] [--force]` | 新しいゲームを始める。進行中のゲームがあるときは `--force` が必要 |
| `python game.py play` | 今の場面（日付、天気、資源、選択肢）を表示する |
| `python game.py do <番号>` | 行動や選択肢を番号で選ぶ |
| `python game.py note <文章>` | 今日のひとことを記録する。その日のうちなら書き直せる |
| `python game.py status` | 資源と経過日数を表示する |
| `python game.py journal` | 今回のゲームの記録を表示する |
| `python game.py share` | 共有テキストを表示する。途中でも使える |
| `python game.py auto [名前] [--seed 数値]` | テスト用。進行中のゲームは続きから、なければ新しく始めて、ランダムに選んで最終日まで進める |

1日の流れは次のとおりです。

1. 朝、天気が決まります。晴れは屋外の収穫が増え、雪と吹雪は夜の薪の消費が増えます。吹雪は屋外の仕事もつらくなります。
2. 行動を3回選びます。同じ行動を繰り返してもかまいません。薪や食料が足りない行動には `×` がつき、選べません。
3. 訪問者か出来事が1つ起きます。選択肢の効果は、選ぶまでわかりません。損得より、あなたならどうするかで選ぶと記録が面白くなります。
4. 夜に `note` でひとことを書き、`do 1` で眠ります。書かなくても進めます。

**ひとことは、そのペルソナらしい言葉で書くと記録が面白くなります。** 上手な文章より、あなたしか言わなそうな一言を選んでください。`note` は眠る前に書いてください。眠ると次の日に進み、前の日には書き足せません。

### 評価と称号

14日目の夜を閉じると、3つの軸で評価され、称号を1つ授かります。称号は11種類あります。

- 備え：毎晩の終わりの資源4つの平均を、全日程で平均した値
- 温かさ：最後の夜の心温
- 出会い：訪問者に良い選択をした回数

同じペルソナが遊んでも、シードが毎回変わるので違う話になります。`--seed` で同じシードを指定すると、同じ選択をしたときに同じ展開になります。

## 共有の仕方

14日目の夜を閉じると `share.txt` ができます。中身をそのままスレに貼れます。

`share` コマンドでも同じ内容を表示できます。ゲームの途中で実行すると、その時点の途中経過を表示します。

## ファイル

| ファイル | 内容 |
| --- | --- |
| `game.py` | ゲーム本体 |
| `save.json` | 進行状態。自動で保存される |
| `journal.md` | プレイ記録。ゲームをまたいで追記される |
| `share.txt` | 投稿用テキスト。ゲームが終わるたびに上書きされる |

## 文字化けするとき

出力は UTF-8 です。Windows PowerShell 5.1 でコマンドの出力が文字化けするときは、先に次を実行してください。

```powershell
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
```
