ライフゲーム torus surface 版
ドーナツの形をした面上で、ライフゲームを展開します。
《Hint》平面から円筒を作り、その円筒からトーラスを作ります。3D で表示するときには、テクスチャーマッピングを利用するのがよいでしょう。
《Note》torus surface 版は、Swing/Jython 篇を参照してください。
《関連記事》Oh 脳《002》ドーナツクイズ - 続・ひよ子のきもち
学習の指針
この課題では、ゲームを作成するのは「目的」ではなく、実際のアプリケーション開発を疑似体験するための「手段」です。そのため、ゲーム作成のノウハウを提供することはなく、ここで作成するゲームは副産物にすぎません。ゲームの「ルール」は、実際のアプリケーション開発における「要求仕様」に相当します。要求仕様(ルール)の変更に伴って、既存のリソースをどこまで再利用できるかが鍵となります。設計に際しては「プログラム」の効率を犠牲にしても「プログラミング」の効率を優先させることに主眼を置いています。
要求仕様(ルール)の変更に伴って、既存のリソースに与える影響が少なくなるように工夫してください。開放閉鎖原則〔OCL: Open-Closed Principle〕に沿って、機能の拡張するときには、新たなモジュールを追加する(Open)だけで、既存のモジュールはその影響を受けない(Closed)のを理想とします。
《付記》Hint に捕われず、自由に取り組んでみてください。
きっかけは
最初にライフゲーム(amorphous)を作成したのが1988年ですから、今年でちょうど20年目になります。ここでは、WPF アプリケーションとして作成した事例を紹介します。
オセロゲーム(trinity)を完成させた余韻に浸りながら、年末年始の休みを利用して、ライフゲーム(amorphous)作りに着手したものです。そのルールは(単細胞/多細胞生命体が混在することを除いて)オリジナルの「ライフゲーム」と同様です。
version | implementation | note |
---|---|---|
第1版 1988/12/30 | Smalltalk/Smalltalk | オセロゲーム(trinity)と同時並行で作成しました。当時のバージョンはカラー対応しておらず、グレースケール(ビットマップ)を利用していたのが懐かしく思えます。 |
第2版 2004/03/02 | Swing/Jython | ビューには、Swing コンポーネントを利用しました。Smalltalk/Python の違いが、ここに集約されます。torus surface 版は完成しましたが、amorphous 版は未完成のまま、今日に至っています。 |
第3版 2008/06/13 | WPF/IronPython | モデルは上記のものを再利用して、ビューを新たに作成します。Swing/WPF の違い、Jython/IronPython の違いが、ここに集約されます。Swing/Jython では、amorphous 版は未完成でしたが、今回は完成まで漕ぎ着けました。 |