星田オステオパシー

RacketのGUI化に挑戦04 突破口!

 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に渡す時にどうすれば良いんだ?と数時間悩んだぜ〜

 これでかなり出来ることが増えたな・・ただキーマッピングが使い回し出来ないのは地味に不便だな・・・。けどまあ二年越しで悩んでいた問題が解決してこいつぁ新年早々縁起がイイや!

 こういう書き方出来たりして?と思ったが無理でした(-_-;)


  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事