今夜もお楽しみのRacketでのCLIゲーム作りです!

まずは例によってCametanさんから教えていただいたflush-outputを使ったドラクエ風文字表示関数display-Gを導入。動画でお見せ出来ないのが残念です。
まあメインはバトル表示時なんで(ショップとかアイテム選択メニューとかはパッと表示させる方が気持ち良い)。ありがとうございます〜

例の文字列生成関数で一気にシンボルだけ220個用意しまして(コンマがついてるものが完成したページ・・先が長いなぁ)

ページの内容はこんな感じ。15番は各種ショップへのプラットフォームになってるので選択肢が多いです(リスト形式にしてよかった・・)。これを220個作るわけ・・地道な作業よ

気がかりは1パラグラフがページをまたいでしまってる場合だったんだけど、もしかしてリスト形式でぶっこんだらこのまま表示できるのでは?と実験

おおっ!行けるやん!()を外せるかな?と思って表示部分をfor-each displayにしてみたところエラーが。

null listとか出てきたので画像のリストの場合は特殊な処理がされてるっぽいかな?ま、十分ですんでこのまま行きます(画像処理ソフトで合成するとか面倒すぎてどうしようかと思っていた)

買い物を終えるを選ぶとMaster構造体のEventを#fにして返すので

同じページだけどアイテム使用、行き先選択の”N"扱いになるのだった。狙い通りの動き。再入店は許されない

ここで本日のトラブルNo2。頻繁にHDDへのスワップが発生して動作が不安なほどに重くなる。見ると使用メモリが1.5GBだと・・?このバイト先のゾンビパソコンはメモリが2GBあったかどうかなのでコレは厳しい・・画像データを使ってるからかなぁ・・とにかく今後はこのマシンを使うのは難しそうだ。他の比較的マシなパソコンもあるんだけど、そっちはAntixを使えばなんとかなるか?と実験したのだけど入ってるのがRacket7.2のせいか画像を使った.rktファイル自体が読み込めないのであった。なんとかバージョンを上げないと・・あ・・もしかしてだけど・・画像を使ったデータをProvide Requireでモジュールとして読み込めないのってバージョンが低いせいか?(ゾンビパソコンのRacketは7.9) これは帰宅したら実験せねば!モジュール化出来るならすごく楽になる!

ショップ関連がちゃんと動くのが確認できたので、ページデータ作りはとりあえず一旦置いといてメイン関数を仕上げよう。次はEVALとPRINTとLOOPだな・・と手を動かし始めて気づいた。他にやることがない!結局INPUTに全部入ってしまっていた。
敢えて言うとページのイベントフラグでの特殊処理をサブ関数で作るのがあるけど、実際にページデータが無いと必要事項が分からんしな・・。

ただ、宿屋や強制ステータス変化の際にフラグとは別で変動する数値データが必要になるのは間違いない。これをページインスタンスに持たせるか、連想リスト(ページ数 . 数値)のリストとして持たせるか・・と考えたけど、まあ今回は構造体にスロットを追加して持たせることにした。一晩明けて考えると連想リストの方が良かった気もするけど

通常選択(アイテム使用か別のパラグラフへの移動かのメイン画面)で現在のステータスを表示するようにした。
と、ここで時間切れ。どうせ動作が重すぎて効率激悪でしたしね・・次回までにやることは
・Racket8.6であれば画像を含むファイルでもモジュール化出来るかチェック
・AntixでのRacketのバージョンを上げる
→無理ならメモリ4GBの自前PCを持ち込む
って感じで!次回からはデータ作りがメインになるので、焦らずニコニコとYoutubeでも見ながらやりまっさ。
最終的には戦闘時にアニメから切り取ったナウシカの戦闘っぽいグラフィックと効果音を入れる・・って感じかな。