いい年のおじさんが今更プログラムを組んでみたいと思い、
少し触って多少理解のあるMS-BASICに近い言語の物を探してたどり着きました。
早速質問ですが、件名の通りUSBコントローラ情報の取得というのは
可能なんでしょうか?
ボタンが押されているかいないかみたいな簡単なものでいいんですけど。
その辺りのプログラムソースがあるならば参考になるので
非常に助かるのですが…
もしよろしければどなたかご教授お願いいたします。
とりあえず記憶の底に沈んだBASIC言語を掘り起こしながらお待ちしております。
USBコントローラ情報取得
イグトランス様 ありがとうございます。
少し書き方が悪かったのですが、USBに接続されたゲームパットの状態を
取得出来るのかなと思い、書き込ませてもらいました。
自分なりに色々調べた感じによれば、ダイレクトⅩを組み込んで、ダイレクトインプットから
情報を得るのが一般的みたいですが、中には容易に情報を拾える言語もあったりしたので
もし先駆者のかたで既に試されてるかたがいて、解説ページ、プログラムソースの公開を
してらっしゃるかたがいれば、すごく参考になると思い書き込ませてもらいました。
「JoyToKey」というソフトでゲームパットの入力情報をキーボードのキーに割り当てる方法も考えましたが、
ウインドウが非アクティブ時に誤動作しそうで怖いのでやめました。
イグトランス様の書き込みから察するに、やはりかなり手強い相手である様子が窺えますが
出来るようならやってみたいと思いますので、また情報をお待ちしております。
少し書き方が悪かったのですが、USBに接続されたゲームパットの状態を
取得出来るのかなと思い、書き込ませてもらいました。
自分なりに色々調べた感じによれば、ダイレクトⅩを組み込んで、ダイレクトインプットから
情報を得るのが一般的みたいですが、中には容易に情報を拾える言語もあったりしたので
もし先駆者のかたで既に試されてるかたがいて、解説ページ、プログラムソースの公開を
してらっしゃるかたがいれば、すごく参考になると思い書き込ませてもらいました。
「JoyToKey」というソフトでゲームパットの入力情報をキーボードのキーに割り当てる方法も考えましたが、
ウインドウが非アクティブ時に誤動作しそうで怖いのでやめました。
イグトランス様の書き込みから察するに、やはりかなり手強い相手である様子が窺えますが
出来るようならやってみたいと思いますので、また情報をお待ちしております。
ゲームパッド 関数 でググってみてください
私も昔やったことがあります。
ずいぶん時間が経って細かいことは忘れてしまいましたが、当時はコントローラを使った簡単なゲームを作っていました。
そのときに参照したページです。↓
http://www.ccad.sist.chukyo-u.ac.jp/~mi ... /index.htm
http://msdn.microsoft.com/ja-jp/library/cc410481.aspx
また、そのとき作ったゲームのコードを見るに、次のような流れだったと思います。
①api_mmsys.sbpをインクルード
一番最初に「#include<api_mmsys.sbp>」を入力します。
RADツールで作るのでしたらメニューの「表示」→「プロジェクトオプション」→「Win32API」→「マルチメディアAPIを使用する」にチェックを入れれば上と同じことになります。
②次の物を宣言
③ゲームパットをキャプチャ
RADツールなら
N88BASICなら
です。
2つ目のジョイスティックは二番目の「0」を「1」にするんだったと思います。
④メッセージを取得
ゲームパッドの状態はメッセージで渡されます。
N88BASICの場合はサブクラス化が必要だったと思います。
当時サブクラス化の知識が0だった私はprompt.sbpを直接いじっちゃってます。
メッセージは
MM_JOY1MOVE
MM_JOY2MOVE
MM_JOY1ZMOVE
MM_JOY2ZMOVE
MM_JOY1BUTTONDOWN
MM_JOY2BUTTONDOWN
MM_JOY1BUTTONUP
MM_JOY2BUTTONUP
です。
メッセージ、サブクラス化が分からない場合はお手数ですがこのページ右の検索欄などで検索お願いします。
⑤ゲームパッドを離す
プログラムでゲームパッドがいらなくなったら
でリリースしてください。
「0」は2つ目のジョイスティックの場合「1」だったと思います。
当時使っていたゲームパッドを手放してしまい、私のコードが非常に読みづらいものなので上記コードで動くかどうか分からないです。
Windowsのコントロールパネルのどこかにジョイスティックなどの機能を調べるツールがあったと思います。(私が使ってるのはWinXPですが…)
それを使うと動作確認が簡単になります。
それではがんばってください!
ずいぶん時間が経って細かいことは忘れてしまいましたが、当時はコントローラを使った簡単なゲームを作っていました。
そのときに参照したページです。↓
http://www.ccad.sist.chukyo-u.ac.jp/~mi ... /index.htm
http://msdn.microsoft.com/ja-jp/library/cc410481.aspx
また、そのとき作ったゲームのコードを見るに、次のような流れだったと思います。
①api_mmsys.sbpをインクルード
一番最初に「#include<api_mmsys.sbp>」を入力します。
RADツールで作るのでしたらメニューの「表示」→「プロジェクトオプション」→「Win32API」→「マルチメディアAPIを使用する」にチェックを入れれば上と同じことになります。
②次の物を宣言
コード: 全て選択
Declare Function joySetCapture Lib "winmm.dll" (hwnd As HWND,uJoyID As Long,uPeriod As DWord,fChanged As Long) As DWord
Declare Function joyReleaseCapture Lib "winmm.dll" (uJoyID As Long) As DWord
RADツールなら
コード: 全て選択
joySetCapture(hMainWnd,0,1,FALSE)
コード: 全て選択
joySetCapture(_PromptSys_hWnd,0,1,FALSE)
2つ目のジョイスティックは二番目の「0」を「1」にするんだったと思います。
④メッセージを取得
ゲームパッドの状態はメッセージで渡されます。
N88BASICの場合はサブクラス化が必要だったと思います。
当時サブクラス化の知識が0だった私はprompt.sbpを直接いじっちゃってます。
メッセージは
MM_JOY1MOVE
MM_JOY2MOVE
MM_JOY1ZMOVE
MM_JOY2ZMOVE
MM_JOY1BUTTONDOWN
MM_JOY2BUTTONDOWN
MM_JOY1BUTTONUP
MM_JOY2BUTTONUP
です。
メッセージ、サブクラス化が分からない場合はお手数ですがこのページ右の検索欄などで検索お願いします。
⑤ゲームパッドを離す
プログラムでゲームパッドがいらなくなったら
コード: 全て選択
joyReleaseCapture(0)
「0」は2つ目のジョイスティックの場合「1」だったと思います。
当時使っていたゲームパッドを手放してしまい、私のコードが非常に読みづらいものなので上記コードで動くかどうか分からないです。
Windowsのコントロールパネルのどこかにジョイスティックなどの機能を調べるツールがあったと思います。(私が使ってるのはWinXPですが…)
それを使うと動作確認が簡単になります。
それではがんばってください!