<タイトル> LifeGame for WonderWitch(ありがち) <作者情報> hiro-s@wa2.so-net.ne.jp <使用方法> (1) lifegame.fx を WonderWitch に転送してランチャから起動してください。 (2) タイトル画面が表示されます。 START キーでゲームを始めます。A または B キーでシェルに戻ります。 (3) ゲームを始めると、まずメインメニューが表示されます。 GAME ゲーム開始 EDIT エディットモードに入ります SAVE 盤面をファイルにセーブします LOAD ファイルから盤面をロードします EXIT タイトル画面に戻ります X1/X3 キーで項目を選択し、A キーで決定します。 (4) "GAME"を選択した場合 有名なライフゲーム(*1)のルールに従って盤面を更新していきます。 画面に表示されている盤面は 28×17 キャラクタ分しかありませんが、実際 の盤面はこれが縦横 5×5 画面、つまり 140×85 キャラクタ分あります。 画面の最下行に現在の状態が表示されています。 [X:056 Y:034] S:101 ↑ ↑ ↑ | | 現在の世代 | 表示画面Y座標 表示画面X座標 ゲーム中は以下のキーが使用できます。 X1〜X4キー 表示画面を上下左右に動かします(1キャラ単位) Y1〜Y4キー 表示画面を上下左右に動かします(1画面単位) Aキー 表示画面をセンター(X:056 Y:034)に戻します START/Bキー メインメニューを表示します 盤面上に生命体が1つもいなくなった時、または、まったく変化が起きなく なった時がゲームオーバーとなります。 なお、盤面がある周期をもって同じ変化を繰り返すこともよく起きるのです が、本ゲームではこのケースのゲームオーバーチェックを行っていません。 この場合は START/B キーを押してゲームを中断してください。 (5) "EDIT"を選択した場合 以下のエディットメニューが表示されます。 EDIT エディットモードに入ります CLS 盤面をクリアします DEMO 有名なペントミノパタンをセットします RET メインメニューに戻ります エディットモード中は以下のキーが使用できます。 X1〜X4キー カーソルを上下左右に動かします(画面端でスクロールする) Y1〜Y4キー 表示画面を上下左右に動かします(1画面単位) Aキー 盤面に生命体を置いたり消したりします START/Bキー エディットメニューを表示します (6) "SAVE"を選択した場合 現在の盤面を /ram0/lifegame.scr というファイル名でセーブします。 すでにファイルが存在する場合でも、確認することなく上書きしますので、 ご注意ください。 (7) "LOAD"を選択した場合 /ram0/lifegame.scr ファイルから盤面データをロードします。 この時、ロードする前の盤面データは確認することなく消去しますので、ご 注意ください。 (*1) Martin Gardner が 1970 年に Scientific American 誌に J. H. Conway の ライフゲームを紹介し、一時期大流行した古典的な計算ゲーム。 ルールについてはソースを参照してください。(^_^; <動作環境> 動作機種 ワンダースワン(モノクロ) もちろんカラー機でも動作可能。 OS バージョン 動作確認は以下の環境で行いました。 WonderWitch 1.0.1 FreyaOS 1.0.3 FreyaBIOS 1.0.0 Meg 1.0.3 <コンセプト> テキスト画面オンリー。(^_^; <アピールポイント> 思いつくままにコーディングしたので、プログラムの方はかなりださいです。 特にキー入力処理が・・って全然アピールポイントになってないし。 <技術解説> 技術と言うほどのものではありませんが、仮想画面が 140×85 というサイズなの で、単純にchar配列で確保すると 11900byte にもなってしまいます。というわけ で仮想画面は1bit配列にしました。 おかげで SAVE/LOAD も1bit配列をそのまま読み書きするだけでできるようになり ました(思わぬ効果) 一応、処理速度を気にして1bit配列のアクセス処理はテーブルを使ったマクロに してありますが、処理時間をTICKカウンタで調べてみると、仮想画面更新処理で ずいぶん時間がかかってまして、だいたい0.5sec/1世代ってとこでしょうか。。 まだまだです。 ちなみに使用コンパイラは LSI C-86 Ver. 3.5 for WonderWitch です。 関係各氏に感謝。 01/01/27 hiro-s