README.md
game-of-life-react
コンウェイのライフゲーム(Conway's Game of Life)を React で実装した、Single Page Application(SPA)です。
🔧技術スタック一覧
📂ディレクトリ構成
/app/src/ 配下は、bulletproof-react の考え方に基づくディレクトリ構成を採用しています。
- ただし、テストコードは現状、
/app/tests/配下で分けて管理しています(テスト用のtsconfig.jsonを分けるため)。
🌐アプリケーションのURL
GitHub Pages にアプリケーションをデプロイして公開しています。興味のある方はアクセスして、遊んでみてください。
遊び方
- 画面の初期表示時は、セルがランダムに配置されます。
- セルの描画領域(シャーレ)のサイズは「縦128セル x 横128セル」で固定です。
- 各セルをクリックすることで、セルの生死状態を切り替えることができます。
- 「生存」セルは
、「死滅」セルは
で表現しています。
- 「生存」セルは
- [Start]ボタンを押すと、ライフゲームのルールに基づくセルの生死判定と次世代セルの描画を自動で行います。
- 自動処理中は、[Stop]ボタンを押す以外の操作は行えません。
- [Stop]ボタンを押すと、生死判定および自動描画が停止します。
- [Next]ボタンを押すと、1世代分だけセルの生死判定と描画を行います。
- 現在の世代数は、画面上の
Generation is #Nの部分で確認できます(Nが世代数)。 - [Reset]ボタンを押すと、世代数とシャーレ上のセルの生死状態をリセットします。
- 世代数は0に、セルはすべて「死滅」状態にします。
- 特定のパターンを選択してシャーレ上に描画できます(初期値は「ランダム」)。
- 世代数の右横のプルダウンリストから、描画したいパターンを選択してください。
- 選択後、世代数とシャーレ上のセルの生死状態をリセットした後で、パターンを描画します。
制限事項
- セルの生死状態をドラッグ操作によって変更することはできません。
- [Start]ボタン押下時の自動描画のスピードは固定です。変更することはできません。
その他
- ダークモード・ライトモードでの表示に対応しています。
ライセンス
当リポジトリはApache-2.0ライセンスの下で公開しています。