トップページ > 過去ログ > 記事閲覧
ジョイパッドの入力について
名前:ぽるふぇ 日時: 2010/01/13 16:23

再びすいません。 自分の作ったプログラムをジョイパッドで動かしているのですが、ボタンを押し続けるとジョイパッドの入力が続くようにしたいのですが、押し続けても入力が続かず、最初の一度の入力しか受け付けませんでした。 ボタンの押し続ける入力をできるようにするにはどうすればよいのでしょうか? 教えてください。

Page: 1 |

Re: ジョイパッドの入力について ( No.1 )
名前:sy(サイ) 日時:2010/01/13 18:03

プログラムが無いと何とも言えません^^;
Re: ジョイパッドの入力について ( No.2 )
名前:Will 日時:2010/01/13 18:16

> 押し続けても入力が続かず、最初の一度の入力しか受け付けませんでした。 一度しか入力を受け付けないように作っているからでしょう。 DXライブラリはキーにせよ、マウスにせよ、パッドにせよ「今押されているかどうか」という情報しかありませんので 「押しっぱなしの場合は入力とみなさない」という処理をどこかでしているはずです。 そうしている部分をそうしないように直すだけです。 まずは、自分の作っているプログラムを理解しましょう。
Re: ジョイパッドの入力について ( No.3 )
名前:ぽるふぇ 日時:2010/01/13 19:17

これが今作っているプログラムのソースコードです。 if((PadInput & PAD_INPUT_LEFT ) == 0) { } else { switch(mode) { case 0: p->BASIC_Exe(Y_RAY); count = 0; Sleep(250); PadInput = GetJoypadInputState( DX_INPUT_KEY_PAD1 ); while(1) { PadInput = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; if((PadInput & PAD_INPUT_LEFT ) == 0) { } else { count = 0; PadInput = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; } if((PadInput & PAD_INPUT_UP) == 0) { } else { p->Command("HLT"); cout << "初期化します。" << endl; return false; PadInput = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; } if((PadInput & PAD_INPUT_RIGHT) == 0) { } else { p->Command("HLT"); end(p); PadInput = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; } if(count > 6000) { p->Command("HLT"); break; } PadInput = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; } 左詰めで申し訳ありません。 >一度しか入力を受け付けないように作っているからでしょう。 >DXライブラリはキーにせよ、マウスにせよ、パッドにせよ「今押されているかどうか」という情報しかありませんので >「押しっぱなしの場合は入力とみなさない」という処理をどこかでしているはずです。 >そうしている部分をそうしないように直すだけです。 >まずは、自分の作っているプログラムを理解しましょう 確かにその通りです。 すいません。 ですが、自分の力ではどうにもならなく、その足がかりだけでも教えてください。 お願いします。
Re: ジョイパッドの入力について ( No.4 )
名前:いっち 日時:2010/01/13 20:26

ソースを拝見しましたが。while(1)のループの中に関して言えば、 PadInputにジョイパッドの入力が随時格納されているように見受けられます。 ためしにwhile(1)ループの中の(21行目あたり) > count = 0; 行を > count++; に変えてみてください。ジョイパッドの左キーを押し続けるとループから抜けるはずです。 ("if(count > 6000)"の値が大きいので時間がかかるかもしれません) ぽるふぇさんの意図する動作がどのようなものかわからないのですが、 "p->Command("HLT");"や"end(p);"と言った関数の内部で何かしらの 問題が起こっていないか確認してみてください。
Re: ジョイパッドの入力について ( No.5 )
名前:さかな 日時:2010/01/14 19:06

蛇足かもしれませんが、 if((PadInput & PAD_INPUT_UP)==0){ }else{ ・・・ } としなくても、if文は条件式が0以外ならtrueとみなすので if(PadInput & PAD_INPUT_UP){ ・・・ } でいいと思いますよ。
Re: ジョイパッドの入力について ( No.6 )
名前:ぽるふぇ 日時:2010/01/15 21:14

>いっちさん 自分の作っているプログラムはこのソースを少し変えたものを3つ続けて行うもので、 count = 0; から count++; に変えたおかげで続けて作動できるようになりました。 ありがとうございます。 しかし、押しっぱなしの入力はうまくいきませんでした。 申し訳ありません(TT) そこで、押しっぱなしのボタンから指を離すと入力が確定する、というようなプログラムを作ってみようと思います。 質問に答えて頂き真にありがとうございました。 <(_ _)> >さかなさん if((PadInput & PAD_INPUT_UP)==0) から if(PadInput & PAD_INPUT_UP) にしても同じ動作をし、プログラムが見えやすくなりました。 ありがとうございます。 <(_ _)>

Page: 1 |