星田オステオパシー

Racketで何か・・DD&D004 GUIでのキャラ配置成功&移動成功!

 前回、複数(可変引数)の勇者を表示する関数を書くのに失敗したわけだけど、その後時間外作業でFoldを使って成功
 キャラを複数用意して・・

 これでいくらでもキャラクターを表示できるようになったぜ!

 というところから続き。次はキャラクターを動かしたいということで・・例によってCametanさんのページをパクらせていただきまして・・・


 今までは描画関数単体で表示していたのでBig-bangに即した書き方にちょっと改めまして・・(引数を構造体単体にしてsceneは大域変数のバックグラウンドにする)

 解説を読解しつつ実験

 表示するところまではオッケイ

 キー入力部分をDD&Dに合うように書き換えさせてもらいまして・・

 うおお!すんなり動いた!ちょっと感動した・・・まあ、カンニングしてるわけだけど(^o^)
 さて、実はここからが問題だ・・1キャラだけだったら良いんだけど、1キャラ目が行動を終了したら次のキャラを同じように操作できるようにしないといけない。

 僕の楽観的構想では、ヒーローのリストと座標のリストをそれぞれCdrしたバトル構造体を「何か」に返せばそのまま行けそうな気がするんだが・・まあ、Changeしかないよなぁ・・・

 Posnを欲しい形で返す方法を確認しまして・・

 暫定処理として「e」を押すと、現在のヒーローと座標のCar部分に対してCdr部分をConsしてFlattenで余計な()を外して渡せば、1キャラ目の座標を保ったままで2キャラ目の入力が始まると思ったのだが・・・エラーでした。

 一応次のキャラ、次の座標は渡せてると思うんですけど数秒でメモリを使い切ってしまったという表示が出て強制終了してしまうのでした。キャラも動きません。無限ループに入ってるってことか・・?

 ここで数十分思案してたんだけどすでに1時を過ぎてるので、続きは明日以降に考えるとして今日のところはこれまでだな〜

追記:あっ!あのCondの部分って座標の部分だから座標だけ変更しないといけなくて、ヒーローリストの部分に別のCondを仕込まないといけない気がする!明日自宅で試そう!

追記:と、思ったけど我慢出来ねぇ!早速試してみた
 こういう感じじゃなかろうか・・気になるのはeを押した時に、キャラリストと配置リストで条件がカブってるわけだが、それを並行して認識して処理してくれるかどうか・・(駄目ならCHARACTER構造体に座標を埋め込まないといけない、と思う)

 ところがそんなのは杞憂であった!狙った通りに動かせてる〜!
 はっきり言って感動した(T_T)




 ちなみにその前に、こんなしょうもないミスで1時間も悩んでいたのが悔やまれます(^_^;)
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

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

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