よーし!いつもとは違って本当にRacketで書いてすぐにこれ書いてます。なんでかってーと、朝はヘルパーさんに気を使ってベッドに座ってコソコソタイピングしてて肩が凝ってしょうがないんで!
前回、メモリ不足(2GB)で散々待たされたので予定通り自宅からメモリを持参、4GBになってRacket、FireFox、GitKrakenを同時起動しても快適です、すごい!
えーと、ではPages-argに引数を設定しておいて特定のステータスを条件ワケするProcを作ってみよう!と。またプログラミング日記で書きますけど、当初「これってマクロで書けるのでは?」と考えて挑戦してたんですが・・少なくとも今の僕には無理でした(^_^;)
それよりもCametanさんに教えていただいたLambdaに突っ込むアレで行ってみようと!
しかしどこまで入れることが出来るのか?ジワジワと実験する。CONDは大丈夫だな・・
条件を複数設定しても大丈夫と
ここで嫌な予感。ステータスとしてmatch-letで分解・束縛した変数を使いたいのだが・・スコープ的に駄目な気がするなぁ・・
やっぱな! うーん・・解決法が思いつかない
Letで束縛したら
出来るんだけどねぇ・・
で、Lambdaで突っ込むのは面白そうだったけど諦めて(この引数内のLambdaでmatch-letとか使って出来そうだけど長くなるんだったら本末転倒なので)、こんな感じで条件の数値と飛ばすページ数を連想リストリストにして持たせるといういつものパターンに
で連想リストリストがいくつでも対応できるように名前付きLetでループさせて・・返ってきた引数を新しいページにしてメインに読ませると。
分かりにくいけど行動点が16以上あるので最良の結果に飛んでます、オッケイ
先程はステータスの数値による強制選択だったけど必要なのは一箇所だけど。よく似た感じでアイテムの所持数による強制選択もあるので・・もう面倒なのでさきほど作ったものに付け足してまとめてしまう。こっちはちょっとだけ汎用性のある作りになってます。
例えばステータスはchar、アイテムは(必然的に)stringとかにしていたらもっと汎用性持たせることが出来たなぁ
懸念のステータスによる強制選択Procが完成したので見直しの続き。このまもり石があった場合には、使うか使わないかを選んで使わない、もしくはそもそも持ってない場合には戦闘に突入、持ってて使うつもりならば別のパラグラフへ・・というのを作る
オッケイ、ちゃんと守り石も減らせてるしちゃんと動いてます。
というところで24時を過ぎたので今日はここまで。やっぱりテーブルと椅子に座ってると楽ですわ。PCの動作もやっとこさまともになって最高です!
次回はバッドエンド、ハッピーエンドの処理を作っていよいよシステムは終了。戦闘時の画像表示とか動画表示、音声の追加・・とデコって行くで!