Beginを使うことは不可能っぽいのでどうしようか・・と思ってたんですけど、Cametanさんのアドバイスで何となくふんわり分かって来た気がする・・
12歳のアドベンチャーゲーム編を参考に作っていく。
画像描画はまとめてテンプレにしておく
今回は戦闘部分のみなので戦闘が発生するページを初期値として渡して実験。Formatも使えるな・・
前に作っていた分は全部廃棄して丸パクリで行く。Let-loop、こんな風な使い方もあるのか・・
Battle-goの本体部分、テストなのでキー入力によって画面に表示させるだけ。ジリジリとテストしつつ進んでいくしか無いなぁ
キー入力部分も丸パクリでw 選択肢が多くなるはずなので9まで用意しておく
とりあえず画面が出て・・
1を押すとこれが出て
2を押すとこれが出る。この後、1を押すと再び「衛兵が現れた」が表示されると!なるほど〜!ちょっと分かって来た!
Let-loopは使わないので使い慣れたMatch-letに変更
また実験。Flagがバトルの”B"の時でEventが#tの時にバトル開始、Enter以外を押した場合にはEventを#fで返すので、それ以降はOtherが表示される・・と、オッケイ!これが出来ればいろいろと出来そうな気がする
続いてBattle-readを書く。これはEnemyがNullかどうかをチェックするだけなのでスルーしておいて・・問題は次のBattle-input関数なのだ。コードから察するにOn-keyに使われている(change w a-key)のworld-go "1"ってところで(world-go env delta)のDeltaを自動的に補完してくれてる感じなので
別のキーマップをBattle-inputでの「戦闘時の行動選択」用に用意しないといけない気がする。という事でChange2として設定してみたが・・On-keyは複数の存在が許されてない模様
そこでChangeの中にBattle-input用のものも放り込む
ところが・・これが動かないのだ。うーん・・
もしかしてだけど・・対象関数ごとに別でマッピングしてくれてないのか?と実験。Battle-input用には選択肢を3と4にしてみる
で、3の場合は戦闘開始と表示するテストを書いて・・
うおお!動いたよオイ! いや〜・・Battle-readからBattle-inputに渡す時にどうすれば良いんだ?と数時間悩んだぜ〜
これでかなり出来ることが増えたな・・ただキーマッピングが使い回し出来ないのは地味に不便だな・・・。けどまあ二年越しで悩んでいた問題が解決してこいつぁ新年早々縁起がイイや!
こういう書き方出来たりして?と思ったが無理でした(-_-;)