キーボードからの入力の処理に関して(質問掲示板

投稿:       mini ilikerubikcube 投稿:2010/04/07 13:09:07(最新:2010/04/10 23:20:10)
質問です。

ゲームで、「ある特定の場所」で「決められたボタン」を押すとイベントが発生するというスクリプトを実行しようとしたのですがうまくいきません。

loop変数を設定する方法でやれば処理のしすぎで、移動の際の十字キーもすべて処理してしまうため全く動けず
かといってif文から始めれば処理を最初の一回の入力しか受け付けないため相当上手くやらない限り希望どうり処理されません。

できれば、「重なったとき」に処理を開始し、「特定のボタン」が押されたときだけイベントを発生させ、なおかつイベントが終了したあとももう一度「特定のボタン」が押されればイベントをもう一度発生させる、ようにしたいです。

無茶なことをいってるとは思いますが、どなたか回答をよろしくお願いします。m(__)m

コメントする

コメントするには、ログインする必要があります。

コメント一覧

      mini ilikerubikcube(投稿日:2010/04/10 23:20, 履歴)
>>dycoonさん

回答ありがとうございます。

とりあえず、自分が言っていることそのままは無理っぽいことはわかりました^^;

十字キー入力での移動を制限したらできそうなので、もう一度一からスクリプトを組みなおしたいと思います。

ご指摘ありがとうございましたm(__)m
Zararu128x128 mini dycoon(投稿日:2010/04/10 19:28, 履歴)
Rmakeのご利用ありがとうございます。

たぶん、そのままilikerubikcubeさんの
希望をかなえる動作というのは
現在のRmakeでは無理なのではないかと考えています。
移動に制限を与えてよいのならば、

キー入力待ちのループ

カーソルキーが押されたらループを抜けてキー入力待ちを終了する

setEventTargetなどでプレーヤーをカーソルキーに従って移動

キー入力待ちのループ

という形で一応移動して、そのあとキー入力をチェックということは
できるかもしれません。
これは、希望するものではないかと思いますが・・・。

移動に操作時のものを使おうと思うと
現状ではおそらく無理そうです。

よろしくお願いします。
      mini ilikerubikcube(投稿日:2010/04/10 13:58, 履歴)
すいません、どうしても上手く動きません;;
やはり僕の技術が足りないのでしょうか・・・・・

希望としては、
①スクリプト(下記)を開始スクリプトに設定し、si()をイベントとして設置し、”重なったとき”に実行する
②特定のボタン(ここではV)を押したときだけゲームクリアし、ほかの主要なボタン(十字キー、Z,X,C、マウスのクリック)を押した場合はとりあえず処理しない。(さもないと、移動できない状況が起こる。)
③そして、主要ボタンを入力しても処理が全部終了せずに、(そうしないと、マスにかさなった時点で十字キーなどを押しているのでそこで処理が終了してVを押しても判定しない)入力がある限り入力されたものを判定し、そのマスに乗っている間であればいつVが押されてもゲームクリアとなる。
としたいのですが、下記のスクリプトでは上手くいきません;;
どこが間違っているのでしょうか?
ご指摘お願いしますm(__)m
def si()
startInput()
while hasInput()
takeInput()
setFlag("loop", true)
while getFlag("loop")
if isKeyDown("V")
speak("ゲームクリアです!")
goEnding()
elsif isKeyDown("RIGHT")
setFlag("loop", false)
elsif isKeyDown("LEFT")
setFlag("loop", false)
elsif isKeyDown("UP")
setFlag("loop", false)
elsif isKeyDown("DOWN")
setFlag("loop", false)
elsif isKeyDown("C")
setFlag("loop", false)
elsif isKeyDown("X")
setFlag("loop", false)
elsif isKeyDown("Z")
setFlag("loop", false)
elsif isMouseDown()
setFlag("loop", false)
end
end
end
end
      mini ilikerubikcube(投稿日:2010/04/08 13:41, 履歴)
>>rurun9さん

わかりました。一度試してみたいと思います。
情報提供ありがとうございました。
Nyan mini rurun9(投稿日:2010/04/07 23:29, 履歴)
キー入力受付待ちのループで、
「特定のボタン」の他に、矢印/z/c、などが押されたらループを抜けてボタン押すイベント終了したらできませんかね?

更に、不特定回数繰り返すなら処理全部を無限ループで囲めば良いような。