C++でジョイパッドを使う方法
-
canopus
C++でジョイパッドを使う方法
C++でジョイパッドを使えればと思ってグーグル検索していたのですが、どうもよくわからない・・
http://rina.jpn.ph/~rance/directx7/dire ... index.html
こちらのサイトを参考にソースコードをコピペしたりライブラリを追加したりと
いろいろやったのですが・・・
そもそもCとC++は違うんですよね
ジョイパッドを使ったゲームを作りたいのですが
何か助言をよろしくお願い致しますm(_ _)m
http://rina.jpn.ph/~rance/directx7/dire ... index.html
こちらのサイトを参考にソースコードをコピペしたりライブラリを追加したりと
いろいろやったのですが・・・
そもそもCとC++は違うんですよね
ジョイパッドを使ったゲームを作りたいのですが
何か助言をよろしくお願い致しますm(_ _)m
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++でジョイパッドを使う方法
DXライブラリが一番簡単だと思いますよ。
ただ、描画にDirectXを使うのか、DXライブラリを使うのか、Win32APIを使うのかでオススメが変わります。
httpは略しても意味が無いと思いましたので修正しました。
ただ、描画にDirectXを使うのか、DXライブラリを使うのか、Win32APIを使うのかでオススメが変わります。
httpは略しても意味が無いと思いましたので修正しました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
canopus
Re: C++でジョイパッドを使う方法
なるほど・・
とりあえずその一番簡単というDXライブラリでやってみようと思うのですが
どういう風に組めば使えるようになるでしょうか?
とりあえずその一番簡単というDXライブラリでやってみようと思うのですが
どういう風に組めば使えるようになるでしょうか?
-
canopus
Re: C++でジョイパッドを使う方法
紹介していただいたDXライブラリの
配布元サイト様の詳しい説明でなんとかジョイパッドからの情報を反映することができました^^
しかし、これをつかってウインドウ内のポインタを操作したり、選択肢を選ぶように作るにはどういったプログラムが定石でしょうか?参考プログラム等ありましたら是非参考にさせてくださいm(_ _)m
配布元サイト様の詳しい説明でなんとかジョイパッドからの情報を反映することができました^^
しかし、これをつかってウインドウ内のポインタを操作したり、選択肢を選ぶように作るにはどういったプログラムが定石でしょうか?参考プログラム等ありましたら是非参考にさせてくださいm(_ _)m
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++でジョイパッドを使う方法
GetMousePoint関数で得られるマウス座標で表示されているポインタや選択肢の文字の表示座標を比べてやればよいだけだと思います。一種の当たり判定のようなものですね。canopus さんが書きました:しかし、これをつかってウインドウ内のポインタを操作したり、選択肢を選ぶように作るにはどういったプログラムが定石でしょうか?参考プログラム等ありましたら是非参考にさせてくださいm(_ _)m
canopusさんの知識が何処まであるかよく分からないので、四角い範囲内に座標点があるのを判定するプログラムを書くことは出来ますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
canopus
Re: C++でジョイパッドを使う方法
当方JavaとCの初心者本を7割ほど進めた程度の知識ですので
プログラムはほとんどかけません・・・
流れでいうなら
ウインドウ内の左上の0,0の値とウインドウの広さから中心点を導き出し
その値をあらかじめ宣言しておいた変数にいれてポインタとし
その点にカーソルグラフィックを設置。
ウインドウの中心点の座標を
あらかじめ宣言しておいたポインタ変数にいれ
その座標にカーソルグラフィックをおき
ジョイパッドの入力よりタイマー関数で変数の値を増減させ
カーソルグラフィックを動かすようにする。
ウインドウ外へポインタが出た場合は変数の値をウインドウの値で止めておく
ゲーム内専用カーソルで動かしたいのでこういう流れになるんじゃないかと思ってます。
プログラムはほとんどかけません・・・
流れでいうなら
ウインドウ内の左上の0,0の値とウインドウの広さから中心点を導き出し
その値をあらかじめ宣言しておいた変数にいれてポインタとし
その点にカーソルグラフィックを設置。
ウインドウの中心点の座標を
あらかじめ宣言しておいたポインタ変数にいれ
その座標にカーソルグラフィックをおき
ジョイパッドの入力よりタイマー関数で変数の値を増減させ
カーソルグラフィックを動かすようにする。
ウインドウ外へポインタが出た場合は変数の値をウインドウの値で止めておく
ゲーム内専用カーソルで動かしたいのでこういう流れになるんじゃないかと思ってます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++でジョイパッドを使う方法
とりあえず、C言語の知識でDXライブラリを使うことで作れると思います。
ここのサイトのDixq(管理人)さんの作ったコンテンツを一通りまず読んで勉強してみてください。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/
>ウインドウの中心点の座標を
>あらかじめ宣言しておいたポインタ変数にいれ
ポインタである必然はまったくありませんと言うより無闇に使わないでください。
>その座標にカーソルグラフィックをおき
>ジョイパッドの入力よりタイマー関数で変数の値を増減させ
>カーソルグラフィックを動かすようにする。
>ウインドウ外へポインタが出た場合は変数の値をウインドウの値で止めておく
これにどんな意味があるか良く私には分からないのですが、とりあえずタイマー関数に頼るのは良くないです。
それとマウスじゃなかったんですか? 最初から今までの書き込みで内容に一貫性がないのでやりたいことが良く分かりませんので整理してもらえますか。
(1)マウスを使うのか?
(2)ジョイスティックとマウスの関係は?
(3)マウスで何を操作して、ジョイスティックで何を操作するのか?
(4)カーソルグラフィックをわざわざジョイスティックで操作することの意味は?
(5)カーソルグラフィックはゲームにおいてどのような役割りを果たすのか?
>canopusさんの知識が何処まであるかよく分からないので、四角い範囲内に座標点があるのを判定するプログラムを書くことは出来ますか?
こちらの答えはできないって事で良いのでしょうか?
ここのサイトのDixq(管理人)さんの作ったコンテンツを一通りまず読んで勉強してみてください。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/
>ウインドウの中心点の座標を
>あらかじめ宣言しておいたポインタ変数にいれ
ポインタである必然はまったくありませんと言うより無闇に使わないでください。
>その座標にカーソルグラフィックをおき
>ジョイパッドの入力よりタイマー関数で変数の値を増減させ
>カーソルグラフィックを動かすようにする。
>ウインドウ外へポインタが出た場合は変数の値をウインドウの値で止めておく
これにどんな意味があるか良く私には分からないのですが、とりあえずタイマー関数に頼るのは良くないです。
それとマウスじゃなかったんですか? 最初から今までの書き込みで内容に一貫性がないのでやりたいことが良く分かりませんので整理してもらえますか。
(1)マウスを使うのか?
(2)ジョイスティックとマウスの関係は?
(3)マウスで何を操作して、ジョイスティックで何を操作するのか?
(4)カーソルグラフィックをわざわざジョイスティックで操作することの意味は?
(5)カーソルグラフィックはゲームにおいてどのような役割りを果たすのか?
>canopusさんの知識が何処まであるかよく分からないので、四角い範囲内に座標点があるのを判定するプログラムを書くことは出来ますか?
こちらの答えはできないって事で良いのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
canopus
Re: C++でジョイパッドを使う方法
URLありがとうございます。見ていこうと思います。
>ポインタである必然はまったくありませんと言うより無闇に使わないでください。
ポインタ変数っていう単語があるんですね。知りませんでした
ただ単にカーソル(ポインタ)の値(座標)を入れるための変数と言いたかっただけです。
それとマウスを使うとは言っていないはずですが・・・
(1)マウスを使うのか?
基本家庭用ゲーム同様にコントローラーで操作するので
ウインドウを閉じる操作など以外は使いません。
(2)ジョイスティックとマウスの関係は?
マウスは基本使いません。
(3)マウスで何を操作して、ジョイスティックで何を操作するのか?
家庭用ゲームのように基本マウスは使いません
(4)カーソルグラフィックをわざわざジョイスティックで操作することの意味は?
家庭用ゲームのように作りたいから
(5)カーソルグラフィックはゲームにおいてどのような役割りを果たすのか?
家庭用ゲームで経験はないでしょうか?
さんまの名探偵などで細かいところを選択する場合に使われていましたが
そのような時ですね。
>canopusさんの知識が何処まであるかよく分からないので、四角い範囲内に座
>標点があるのを判定するプログラムを書くことは出来ますか?
>こちらの答えはできないって事で良いのでしょうか?
OKです
>ポインタである必然はまったくありませんと言うより無闇に使わないでください。
ポインタ変数っていう単語があるんですね。知りませんでした
ただ単にカーソル(ポインタ)の値(座標)を入れるための変数と言いたかっただけです。
それとマウスを使うとは言っていないはずですが・・・
(1)マウスを使うのか?
基本家庭用ゲーム同様にコントローラーで操作するので
ウインドウを閉じる操作など以外は使いません。
(2)ジョイスティックとマウスの関係は?
マウスは基本使いません。
(3)マウスで何を操作して、ジョイスティックで何を操作するのか?
家庭用ゲームのように基本マウスは使いません
(4)カーソルグラフィックをわざわざジョイスティックで操作することの意味は?
家庭用ゲームのように作りたいから
(5)カーソルグラフィックはゲームにおいてどのような役割りを果たすのか?
家庭用ゲームで経験はないでしょうか?
さんまの名探偵などで細かいところを選択する場合に使われていましたが
そのような時ですね。
>canopusさんの知識が何処まであるかよく分からないので、四角い範囲内に座
>標点があるのを判定するプログラムを書くことは出来ますか?
>こちらの答えはできないって事で良いのでしょうか?
OKです
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++でジョイパッドを使う方法
失礼しました。何処からかマウスと勘違いしていたようです。
たぶん、ウインドウ内のポインタを操作する辺りかもしれません。
混乱させて申し訳ありません。
ポインタと言う用語がややこしいのでカーソルとさせて頂きますが、ジョイ・スティックorキーボード前提しますとカーソル位置を操る場合は次のように使います。
(1)選択肢(メニュー選択)
これは上下左右の入力でメニュー項目の間を移動します。カーソルがある場合もあるし文字色が変わるとか表現は色々あります。
この場合の上下左右の入力は一種の切り替えスイッチ操作ですね。
あまり、カーソルをマウスのように細かい座標移動させて使う事はありません。家庭用ゲーム機のドラクエやFFなどの操作もそうなっているはずです。
(2)キャラクタの移動などの操作
上下左右の入力で直接キャラクタの座標を操作します。
この場合は、快適な速度になるように座標を等速度で変化させます。
家庭用ゲーム機でもパソコンでもここの操作は同じはずです。
(3)ウィンドウ内のカーソルポインタの自由操作。
PSなどの家庭用ゲーム機と違ってパソコンではウインドウ内のカーソルポインタの細い位置をジョイ・スティックorキーボードで操ることはほぼありません。パソコンで使うのはマウスを使うのが定番です。家庭用ゲーム機で言うとWiiではWiiリモコンなどで直感的な位置操作が可能になっていますね。それと同じ理由です。
細い位置をジョイ・スティックで操るのはたとえアナログ入力を使っても骨の折れるものです。とてもそう言う操作には向いていないと言えます。
例えば古典DOOMを始めとするFPS(ファースト・パーソン・シューティング)では移動はキー入力で、銃の照準はマウスでポインティングするのが一番良いとされています。
マウスだと直感的に高速に移動・照準ができるからですね。Xbox360のゲームだとWindows版の同じゲームと対戦できるものがありますが、Xbox360ユーザーはWindows版ユーザーに瞬殺されたり、遠隔射撃(スナイプ)されて死ぬ事が多いです。これもマウスの照準性の良さの証明ですね。
と言うことで、ジョイ・スティックでのゲームを考えているのならゲームシステム自体をジョイ・スティックにあわせて考えたほうが良いと思います。マウスでやるような事をわざわざジョイ・スティックでやらせる事はナンセンスですので避けてくださいね。
ちなみに(1)(2)(3)の操作をすべてマウスで行う方法もありますが、どんなゲームかによっては向かないものもあります。
canopusさんの求めている操作は上に書いた何番のものでしょうか?
たぶん、ウインドウ内のポインタを操作する辺りかもしれません。
混乱させて申し訳ありません。
ポインタと言う用語がややこしいのでカーソルとさせて頂きますが、ジョイ・スティックorキーボード前提しますとカーソル位置を操る場合は次のように使います。
(1)選択肢(メニュー選択)
これは上下左右の入力でメニュー項目の間を移動します。カーソルがある場合もあるし文字色が変わるとか表現は色々あります。
この場合の上下左右の入力は一種の切り替えスイッチ操作ですね。
あまり、カーソルをマウスのように細かい座標移動させて使う事はありません。家庭用ゲーム機のドラクエやFFなどの操作もそうなっているはずです。
(2)キャラクタの移動などの操作
上下左右の入力で直接キャラクタの座標を操作します。
この場合は、快適な速度になるように座標を等速度で変化させます。
家庭用ゲーム機でもパソコンでもここの操作は同じはずです。
(3)ウィンドウ内のカーソルポインタの自由操作。
PSなどの家庭用ゲーム機と違ってパソコンではウインドウ内のカーソルポインタの細い位置をジョイ・スティックorキーボードで操ることはほぼありません。パソコンで使うのはマウスを使うのが定番です。家庭用ゲーム機で言うとWiiではWiiリモコンなどで直感的な位置操作が可能になっていますね。それと同じ理由です。
細い位置をジョイ・スティックで操るのはたとえアナログ入力を使っても骨の折れるものです。とてもそう言う操作には向いていないと言えます。
例えば古典DOOMを始めとするFPS(ファースト・パーソン・シューティング)では移動はキー入力で、銃の照準はマウスでポインティングするのが一番良いとされています。
マウスだと直感的に高速に移動・照準ができるからですね。Xbox360のゲームだとWindows版の同じゲームと対戦できるものがありますが、Xbox360ユーザーはWindows版ユーザーに瞬殺されたり、遠隔射撃(スナイプ)されて死ぬ事が多いです。これもマウスの照準性の良さの証明ですね。
と言うことで、ジョイ・スティックでのゲームを考えているのならゲームシステム自体をジョイ・スティックにあわせて考えたほうが良いと思います。マウスでやるような事をわざわざジョイ・スティックでやらせる事はナンセンスですので避けてくださいね。
ちなみに(1)(2)(3)の操作をすべてマウスで行う方法もありますが、どんなゲームかによっては向かないものもあります。
canopusさんの求めている操作は上に書いた何番のものでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
canopus
Re: C++でジョイパッドを使う方法
パソコンでゲームをやるんですから、家庭用ゲームと違いパソコン特有のメリットというものがあります。マウスを使って操作するほうがカーソル移動は楽だと思っています。
今作ろうと考えているゲームでは高速移動は必要ないターン制ゲームですし
二つのデバイスを使うのは忙しいのでジョイパッドだけでの操作を考えています。
(1)については色を変えるのがいいと思っています。
(3)についてはゲーム内でそういう選択する場面もある程度でしか使わないので
そう不便にはならないと考えています。
この2つの操作を使ったプログラムのソースを参考にさせていただきたいのですm(_ _)m
今作ろうと考えているゲームでは高速移動は必要ないターン制ゲームですし
二つのデバイスを使うのは忙しいのでジョイパッドだけでの操作を考えています。
(1)については色を変えるのがいいと思っています。
(3)についてはゲーム内でそういう選択する場面もある程度でしか使わないので
そう不便にはならないと考えています。
この2つの操作を使ったプログラムのソースを参考にさせていただきたいのですm(_ _)m
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++でジョイパッドを使う方法
(1)に関しては、紹介済みの「ゲームプログラミングの館」にサンプルがあります。[追記]色ではなく座標ですが基本は同じです。これを応用して改造してみてください。
(3)に関しては、座標をジョイスティックの情報で座標を上下左右に移動させるだけです。
GetJoypadInputState関数とサンプル
http://homepage2.nifty.com/natupaji/DxL ... .html#R5N4
これを少し応用するだけです。
そうですね。練習にcanopusさんが分かるところまで上記参考にプログラムを書いて、ここに貼りつけてみてください。
貼り付け時はcodeタグを使ってください。
ゲームプログラムの骨格は、これを使ってくださいね。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/01_09.html
[追記]
こちらにもジョイパッドのサンプルがあります。
「4.5章 ジョイパッドの入力状態を取得する」
http://dixq.net/g/04_05.html
(1)のサンプルです。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/03_03.html
(3)に関しては、座標をジョイスティックの情報で座標を上下左右に移動させるだけです。
GetJoypadInputState関数とサンプル
http://homepage2.nifty.com/natupaji/DxL ... .html#R5N4
これを少し応用するだけです。
そうですね。練習にcanopusさんが分かるところまで上記参考にプログラムを書いて、ここに貼りつけてみてください。
貼り付け時はcodeタグを使ってください。
ゲームプログラムの骨格は、これを使ってくださいね。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/01_09.html
[追記]
こちらにもジョイパッドのサンプルがあります。
「4.5章 ジョイパッドの入力状態を取得する」
http://dixq.net/g/04_05.html
(1)のサンプルです。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/03_03.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
canopus
Re: C++でジョイパッドを使う方法
参考サンプルありがとうございました。
URL先を参考にジョイパッドでカーソルを動かすことはできました。
しかしどこがおかしいのか、
PAD_INPUT_3 // 3ボタンチェックマスク(Cキー)
こちらのプログラムでは i = 6
が満たされれば選択肢のあるシーン(bamen=1)に移るように組んだのですが
一瞬表示されるだけですぐに戻ってしまいます。
どこがいけないのかご教授よろしくお願いいたします。
キーボード「C」とジョイパッドPAD_INPUT_3が対応しています。
URL先を参考にジョイパッドでカーソルを動かすことはできました。
しかしどこがおかしいのか、
PAD_INPUT_3 // 3ボタンチェックマスク(Cキー)
こちらのプログラムでは i = 6
が満たされれば選択肢のあるシーン(bamen=1)に移るように組んだのですが
一瞬表示されるだけですぐに戻ってしまいます。
どこがいけないのかご教授よろしくお願いいたします。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
MessageBox(NULL,_T("test"),_T("winapp"),MB_OK);
SetWindowText("円高ゲーム");
int Pad; //ジョイパッドの入力状態格納用変数
int cursorx = 320,cursory = 240;
int bamen = 0,sentakushi = 0;
int HCursorg,HMenug,HSentakuwakug1,HMapg;
HCursorg = LoadGraph( "media/cursor01.PNG" );
HMenug = LoadGraph("media/menu.PNG");
HSentakuwakug1 = LoadGraph("media/sentakuwaku01.png");
HMapg = LoadGraph("media/map.png");
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
if(bamen == 0){ //自由選択画面(bamen=0)
DrawGraph( 0, 0, HMapg, TRUE );
DrawGraph(cursorx,cursory,HCursorg,TRUE);
Pad = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; //入力状態をPadに格納
for( int i=0; i<28; i++ ){ //ボタン28個分ループ
if( Pad & (1<<i) ){ //ボタンiの入力フラグが立っていたら
DrawFormatString( 0, i*15, GetColor(255,255,255), "%dのキーが押されています", i );
if(i == 6) bamen = 1; //PadのPAD_INPUT_3が認識されると場面1(選択肢)へ
if(i == 0) cursory = cursory +2;//カーソルを下へ
if(i == 1) cursorx = cursorx -2;//カーソルを左
if(i == 2) cursorx = cursorx +2;//カーソルを右
if(i == 3) cursory = cursory -2;//カーソルを上
}
}
}else{ // 選択肢場面(bamen=1)
DrawGraph( 0, 0, HMenug, TRUE );
for( int i=0; i<28; i++ ){ //ボタン28個分ループ
if( Pad & (1<<i) ){ //ボタンiの入力フラグが立っていたら
DrawFormatString( 0, i*15, GetColor(255,255,255), "%dのキーが押されています", i );
if(i == 6) bamen = 0; //PadのPAD_INPUT_3が認識されると場面0(自由選択)へ
if(i == 0) sentakushi = 1; //下が押されれば選択肢Bへ
if(i == 3) sentakushi = 0; //上が押されれば選択肢Aへ
}
}
if(sentakushi = 0){ //選択肢による分岐
DrawGraph(104,199,HSentakuwakug1,TRUE); //選択肢A
}else{
DrawGraph(79,259,HSentakuwakug1,TRUE); //選択肢B
}
}
}
DxLib_End() ;
return 0;
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++でジョイパッドを使う方法
これは、一度ボタンが離されるを待っていないからですね。
PAD_INPUT_3は押されている間ずっとONですから、bamen = 1になったあとbamen = 0にすぐ戻るんじゃないでしょうか。これを交互に繰り返しています。
「キーが押されています1」と「キーが押されています2」に変えてみると分かりますが、1と2が合成された文字が表示されるはずです。
この場合は、
ONを待つ。 → OFFを待つ。 → ONを待つ。
と言う制御しないといけません。
あるいは、
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/02_09.html
にあるキー関数のgpUpdateKey()にあるようにONしている期間をカウントする関数を別に作る方法です。
こうすれば、カウントが1の時だけbamenを切り替えれば切り替わりが繰り返すこともないと思います。
その他の連続で移動するものはカウントが0<で処理できますね。
PAD_INPUT_3は押されている間ずっとONですから、bamen = 1になったあとbamen = 0にすぐ戻るんじゃないでしょうか。これを交互に繰り返しています。
「キーが押されています1」と「キーが押されています2」に変えてみると分かりますが、1と2が合成された文字が表示されるはずです。
この場合は、
ONを待つ。 → OFFを待つ。 → ONを待つ。
と言う制御しないといけません。
あるいは、
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/02_09.html
にあるキー関数のgpUpdateKey()にあるようにONしている期間をカウントする関数を別に作る方法です。
こうすれば、カウントが1の時だけbamenを切り替えれば切り替わりが繰り返すこともないと思います。
その他の連続で移動するものはカウントが0<で処理できますね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
canopus
Re: C++でジョイパッドを使う方法
そのとおりでした。押されたボタンは押されたままの状態で
次のシーンでも条件を満たし、即帰ってきていました。
なので
Pad = GetJoypadInputState( DX_INPUT_KEY_PAD1 )
という処理を先ほどのコードの42行目のfor文の前に追加したところ
うまく入力状態をOFFにでき解決できました。
選択肢についてもURL先を参考にあれこれやった結果うまくいきました。
このたびはどうもありがとうございました。またよろしくお願いいたしますm(_ _)m
次のシーンでも条件を満たし、即帰ってきていました。
なので
Pad = GetJoypadInputState( DX_INPUT_KEY_PAD1 )
という処理を先ほどのコードの42行目のfor文の前に追加したところ
うまく入力状態をOFFにでき解決できました。
選択肢についてもURL先を参考にあれこれやった結果うまくいきました。
このたびはどうもありがとうございました。またよろしくお願いいたしますm(_ _)m