Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2016/10/29 (土)

ジョイパッドを使うよ!

| 05:32 | ジョイパッドを使うよ! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - ジョイパッドを使うよ! - 雪乃☆雫のなでしこ日和 ジョイパッドを使うよ! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 ファイターズが10年ぶりの日本一!

 いや~、めでたいね、こりゃ\(^▽^)/



 さて・・・

 とりあえず、なでコラをジョイパッドで遊べるようにすること自体は、簡単でした。

 まえに、サンプルのなでりすでやってみたように、「キー処理」のサブルーチンをコピペして、「JOYキー処理」とでもして、「キー状態」を「JOYキー状態」に書き換えてやったらふつーに動きます。

 でもなあ、んなことでいいのか、本当に?!?!(汗)

 ・・・だけど、「または」で、一つにまとめようとすると、ジョイパッドがつながってる時はいいんだけど、つながっていない時のキーボードでの動きが、異常に悪くなるんだよね。

 なんでーなるのか、よく分からん(--;;;

 ・・・とゆうわけで、ものすごく無駄っぽく、ほとんど同じ風味なコードで行数を使ってしまうけど・・・取りあえず動けばOK!

 ・・・ってことにしておく。むむむ。



 さて、の、前のなでりすを試しに改造してみた時には、知恵が足りなくて、十字キーの状態をお手軽に別関数にしてしまっていたんだけど・・・

 ・・・「ほんっとバカだよなー、こいつ(爆)」・・・みたいな感じで、一つにまとめたwww

 文字列「U,R,D,L」の代わりに数値「$1000,$2000,$4000,$8000」を与えることにしただけです。

 ついでに、単にジョイパッドが接続されてるかどうかを返す関数と、JOYキー状態とは逆に、押されているジョイパッドのボタンのキーを返す関数追加して、のワタシの知恵ではこれが限度だけど、とりあえずキーコンフィグようの準備は整った・・・かもしない

 取りあえず、こんな感じ。

#-----------------------------------------------------------------------
# ジョイパッドの使用
#-----------------------------------------------------------------------
#『JOYパッド接続状態』
#・ジョイパッドが接続されてるかどうかをオン(1)かオフ(0)で返す。
#『JOYキー状態』
#・なでしこの「キー状態」と同じ感じで、ジョイパッドのボタン入力状態を調べ、オンオフを返す。
#『JOYキー取得』
#・押されているジョイパッドのボタンを返す。
#-----------------------------------------------------------------------
#※肝心のWindowsAPI部分は「なでしこ質問掲示板」の一般人さまの答による。
#http://nade.jp-pro.net/bbs/bbs/cbbs.cgi?mode=one&number=7435&type=7400&space=45&no=0
#-----------------------------------------------------------------------
!JOYERR_NOERROR = 0 //情報取得時にエラーがないときに返される値
!JOY_RETURNALL = 255 //Joystickの情報を全て取り込む値
//Joystickの情報を取り込む関数
●joyGetPosEx(uJoyID,{参照渡し}pji) =DLL("winmm.dll","UINT joyGetPosEx(UINT uJoyID,LPJOYINFOEX pji)")
//Joystickの最大サポート数(?)は未使用
●joyGetNumDevs =DLL("winmm.dll","UINT joyGetNumDevs(VOID)")

//JOYINFOEXの構造体をグループで構成
■JOYINFOEXとは
 ・dwSize
 ・dwFlags
 ・dwXpos
 ・dwYpos
 ・dwZpos
 ・dwRpos
 ・dwUpos
 ・dwVpos
 ・dwButtons
 ・dwButtonNumber
 ・dwPOV
 ・dwReserved1
 ・dwReserved2
#-----------------------------------------------------------------------
●JOYパッド接続状態
  もし、joyGetPosEx(0, POINTER(B))=JOYERR_NOERRORならばオン戻る。
  違えばオフ戻る。
#-----------------------------------------------------------------------
●JOYキー状態(Sで|Sの)
  AとはJOYINFOEX
  A.dwSize = 52 //Cで言うsizeof()がわからなかったためマジックナンバー
  A.dwFlags = JOY_RETURNALL
  Bとは文字列
  PACK(A,B,`DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD`)
  もし、joyGetPosEx(0, POINTER(B))=JOYERR_NOERRORならば
    UNPACK(B,A,`DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD`)
    もし、S=A.dwButtonsならばオン戻る。
    # $2777とか$D888とかの数値は暫定。アナログジョイスティックのための措置。
    違えばもし、S=$1000ならば、
      もし、(A.dwYpos<$2777)ならばオン戻る。  # UP (A.dwYpos=0)
      違えばオフ戻る。
    違えばもし、S=$2000ならば、
      もし、(A.dwXpos>$D888)ならばオン戻る。  # RIGHT (A.dwXpos=$FFFF)
      違えばオフ戻る。
    違えばもし、S=$4000ならば、
      もし、(A.dwYpos>$D888)ならばオン戻る。  # DOWN (A.dwYpos=$FFFF)
      違えばオフ戻る。
    違えばもし、S=$8000ならば、
      もし、(A.dwXpos<$2777)ならばオン戻る。  # LEFT (A.dwXpos=0)
      違えばオフ戻る。
    違えばオフ戻る。
  違えばキャンセル戻る。
#-----------------------------------------------------------------------
●JOYキー取得
  AとはJOYINFOEX
  A.dwSize = 52 //Cで言うsizeof()がわからなかったためマジックナンバー
  A.dwFlags = JOY_RETURNALL
  Bとは文字列
  PACK(A,B,`DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD`)
  もし、joyGetPosEx(0, POINTER(B))=JOYERR_NOERRORならば
    UNPACK(B,A,`DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD`)
    JOY_KEY=A.dwButtons
    もし、(A.dwYpos<$2777)ならば、JOY_KEY=JOY_KEY+$1000      # UP (A.dwYpos=0)
    違えばもし、(A.dwYpos>$D888)ならば、JOY_KEY=JOY_KEY+$4000  # DOWN (A.dwYpos=$FFFF)
    もし、(A.dwXpos<$2777)ならば、JOY_KEY=JOY_KEY+$8000      # LEFT (A.dwXpos=0)
    違えばもし、(A.dwXpos>$D888)ならば、JOY_KEY=JOY_KEY+$2000  # RIGHT (A.dwXpos=$FFFF)
    もし、JOY_KEY=0ならばオフ戻る。
    違えば、JOY_KEYで戻る。
  違えばオフ戻る。
#-----------------------------------------------------------------------

#以下はテスト
#-----------------------------------------------------------------------
!母艦設計=「母艦の可視はオフ」
//!「ジョイパッドの使用.nako」を取り込む。

#---キー定義------------------
!JOY_UPとは整数=$1000
!JOY_RIGHTとは整数=$2000
!JOY_DOWNとは整数=$4000
!JOY_LEFTとは整数=$8000
!JOY_Aとは整数=$01
!JOY_Bとは整数=$02
#-----------------------------

#---母艦------------
母艦中央移動
母艦の可視はオン
#-----------------------------------------------------------------------

AとはエディタCX=母艦のクライアント幅/2-24/2
CY=母艦のクライアント高さ/2-24/2
文字書体は「MS ゴシック|24|太字」
母艦CX,CYへ「●」を文字表示。

#---動作テスト------------

# 『JOYパッド接続状態』
もし、JOYパッド接続状態=オンならば、「ジョイパッドを認識しました」を言う違えば、「ジョイパッドが接続されていません」を言う終わる。

# 『JOYキー状態オン
  もし(JOY_UPのJOYキー状態オン)ならば
    もし、(JOY_RIGHTのJOYキー状態オン)ならばCX=CX+3。CY=CY-3。
    違えばもし、(JOY_LEFTのJOYキー状態オン)ならばCX=CX-3。CY=CY-3。
    違えば、CY=CY-3。
  違えばもし(JOY_DOWNのJOYキー状態オン)ならば
    もし、(JOY_RIGHTのJOYキー状態オン)ならばCX=CX+3。CY=CY+3。
    違えばもし、(JOY_LEFTのJOYキー状態オン)ならばCX=CX-3。CY=CY+3。
    違えば、CY=CY+3。
  違えばもし(JOY_RIGHTのJOYキー状態オン)ならばCX=CX+3。
  違えばもし(JOY_LEFTのJOYキー状態オン)ならばCX=CX-3。

  もし、(JOY_AのJOYキー状態オン)ならば文字色赤色。
  違えばもし、(JOY_BのJOYキー状態オン)ならば文字色青色。
  違えば文字色黒色。
  母艦白色画面クリア
  母艦CX,CYへ「●」を文字表示。
//  0.01秒待つ

# 『JOYキー取得』
  もし、JOYキー取得=0でなければ、
    Aのテキストは、「${HEX(JOYキー取得)}」。
  0.01秒待つ
#-----------------------------------------------------------------------

 ジョイパッドがつながっていないと、接続されていませんと言って終わるだけだけどね;


※2017/01/29

 ちょっと修正しました。

 十字キーの割り当てですが、「U,L,R,D=$1000,$2000,$4000,$8000」としていましたが、パッドによっては、十字キーも「A.dwXpos」「A.dwYpos」を使わず、「A.dwButtons」を割り当てているヤツがあり、それ数値がどうやら、「U,R,D,L=$1000,$2000,$4000,$8000」となっているようだったので、のように。

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20161029

2016/03/26 (土)

ゲームパッドの入力を「キー状態」と同じ感じで使いたい!

| 09:49 | ゲームパッドの入力を「キー状態」と同じ感じで使いたい! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - ゲームパッドの入力を「キー状態」と同じ感じで使いたい! - 雪乃☆雫のなでしこ日和 ゲームパッドの入力を「キー状態」と同じ感じで使いたい! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 なでりすのソースを、うーむと眺めていたんだけど、よくわかんな~い(爆)

 でも、キー操作でブロックを左右に動かしたり転させたり落としたり・・・とゆう操作自体は、「キー処理」という関数にまとまっている。

 ふつーに、バーチャルキーのキー状態オンオフをとって、もしもし条件分岐してる。

 てことは、ゲームパッドの入力を、なでしこの標準命令であるキー状態」と同じ感じで取得できれば、最小限の変更でゲームパッドで遊べるように改造することができるだろうし、後何か作ろうと思った時にも便利に違いない


 ・・・とゆーわけで、知恵が足りないから、通常のボタンと十字キーは手軽に別関数にしてしまったけれど、こんな感じの関数にしてみた。

#-----------------------------------------------------------------------
# 『JOYキー状態』『JOY十字キー状態』
#・なでしこの「キー状態」と同じ感じで、ジョイパッドのボタン入力状態を調べ、オンオフを返す。
#・肝心のWindowsAPI部分は「なでしこ質問掲示板」の一般人さまの答による。
#http://nade.jp-pro.net/bbs/bbs/cbbs.cgi?mode=one&number=7435&type=7400&space=45&no=0
#-----------------------------------------------------------------------

#-----------------------------------------------------------------------
!JOYERR_NOERROR = 0 //情報取得時にエラーがないときに返される値
!JOY_RETURNALL = 255 //Joystickの情報を全て取り込む値
#-----------------------------------------------------------------------
//Joystickの情報を取り込む関数
●joyGetPosEx(uJoyID,{参照渡し}pji) =DLL("winmm.dll","UINT joyGetPosEx(UINT uJoyID,LPJOYINFOEX pji)")
//Joystickの最大サポート数(?)は未使用
●joyGetNumDevs =DLL("winmm.dll","UINT joyGetNumDevs(VOID)")

//JOYINFOEXの構造体をグループで構成
■JOYINFOEXとは
 ・dwSize
 ・dwFlags
 ・dwXpos
 ・dwYpos
 ・dwZpos
 ・dwRpos
 ・dwUpos
 ・dwVpos
 ・dwButtons
 ・dwButtonNumber
 ・dwPOV
 ・dwReserved1
 ・dwReserved2
#-----------------------------------------------------------------------
●JOYキー状態(Sで|Sの)
  AとはJOYINFOEX
  A.dwSize = 52 //Cで言うsizeof()がわからなかったためマジックナンバー
  A.dwFlags = JOY_RETURNALL
  Bとは文字列
  PACK(A,B,`DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD`)
  もし、joyGetPosEx(0, POINTER(B))=JOYERR_NOERRORならば
    UNPACK(B,A,`DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD`)
    もし、S=A.dwButtonsならばオン戻る。
    違えばオフ戻る。
  違えばキャンセル戻る。

●JOY十字キー状態(Sで|Sの)
  AとはJOYINFOEX
  A.dwSize = 52 //Cで言うsizeof()がわからなかったためマジックナンバー
  A.dwFlags = JOY_RETURNALL
  Bとは文字列
  PACK(A,B,`DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD`)
  もし、joyGetPosEx(0, POINTER(B))=JOYERR_NOERRORならば
    UNPACK(B,A,`DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD`)
    Sで条件分岐
      # $2777とか$D888とかの数値は暫定。アナログジョイスティックのための措置。
      "L"ならば、
        もし、(A.dwXpos<$2777)ならばオン戻る。  # (A.dwXpos=0)
        違えばオフ戻る。
      "U"ならば、
        もし、(A.dwYpos<$2777)ならばオン戻る。  # (A.dwYpos=0)
        違えばオフ戻る。
      "R"ならば、
        もし、(A.dwXpos>$D888)ならばオン戻る。  # (A.dwXpos=$FFFF)
        違えばオフ戻る。
      "D"ならば、
        もし、(A.dwYpos>$D888)ならばオン戻る。  # (A.dwYpos=$FFFF)
        違えばオフ戻る。
      違えばオフ戻る。
  違えばキャンセル戻る。
#-----------------------------------------------------------------------

 以下はサンプルプログラム。

 十字キーで「●」を動かし、ボタンで色を変えるプログラムが、キーボードの場合のをコピペしてキー番号と関数名の書き換えだけで、全く同様に動いたよ!

#-----------------------------------------------------------------------
#----バーチャルキー定義-------------
!VK_LEFT = 37
!VK_UP = 38
!VK_RIGHT = 39
!VK_DOWN = 40
!VK_Z = 90
!VK_X = 88
#----ジョイパッドのキー定義-------------
!JOY_Aとは整数=$01
!JOY_Bとは整数=$02
!JOY_Cとは整数=$04
!JOY_Xとは整数=$08
!JOY_Yとは整数=$10
!JOY_Zとは整数=$20
!JOY_Lとは整数=$40
!JOY_Rとは整数=$80
!JOY_STARTとは整数=$100
!JOY_SELECTとは整数=$200
!JOY_LEFTとは文字列="L"
!JOY_UPとは文字列="U"
!JOY_RIGHTとは文字列="R"
!JOY_DOWNとは文字列="D"
#-----------------------------------------------------------------------

ゲームパッド使用=オンオフにするとキーボードで動きます
CX=母艦のクライアント幅/2-24/2
CY=母艦のクライアント高さ/2-24/2
文字書体は「MS ゴシック|24|太字」
母艦CX,CYへ「●」を文字表示もし、ゲームパッド使用=オンならば
  1の
    もし(JOY_UPのJOY十字キー状態オン)ならば
      もし、(JOY_RIGHTのJOY十字キー状態オン)ならばCX=CX+3。CY=CY-3。
      違えばもし、(JOY_LEFTのJOY十字キー状態オン)ならばCX=CX-3。CY=CY-3。
      違えば、CY=CY-3。
    違えばもし(JOY_DOWNのJOY十字キー状態オン)ならば
      もし、(JOY_RIGHTのJOY十字キー状態オン)ならばCX=CX+3。CY=CY+3。
      違えばもし、(JOY_LEFTのJOY十字キー状態オン)ならばCX=CX-3。CY=CY+3。
      違えば、CY=CY+3。
    違えばもし(JOY_RIGHTのJOY十字キー状態オン)ならばCX=CX+3。
    違えばもし(JOY_LEFTのJOY十字キー状態オン)ならばCX=CX-3。

    もし、(JOY_AのJOYキー状態オンならば文字色緑色。
    違えばもし、(JOY_BのJOYキー状態オンならば文字色赤色。
    違えばもし、(JOY_CのJOYキー状態オンならば文字色青色。
    違えばもし、(JOY_XのJOYキー状態オンならば文字色紫色。
    違えば文字色黒色。
    母艦白色画面クリア
    母艦CX,CYへ「●」を文字表示。
    0.01秒待つ
違えば
  1の
    もし(VK_UPのキー状態オン)ならば
      もし、(VK_RIGHTのキー状態オン)ならばCX=CX+3。CY=CY-3。
      違えばもし、(VK_LEFTのキー状態オン)ならばCX=CX-3。CY=CY-3。
      違えば、CY=CY-3。
    違えばもし(VK_DOWNのキー状態オン)ならば
      もし、(VK_RIGHTのキー状態オン)ならばCX=CX+3。CY=CY+3。
      違えばもし、(VK_LEFTのキー状態オン)ならばCX=CX-3。CY=CY+3。
      違えば、CY=CY+3。
    違えばもし(VK_RIGHTのキー状態オン)ならばCX=CX+3。
    違えばもし(VK_LEFTのキー状態オン)ならばCX=CX-3。

    もし、(VK_Zのキー状態オンならば文字色赤色。
    違えばもし、(VK_Xのキー状態オンならば文字色青色。
    違えば文字色黒色。
    母艦白色画面クリア
    母艦CX,CYへ「●」を文字表示。
    0.01秒待つ
#-----------------------------------------------------------------------

 同様にして、なでりすの「キー処理」関数だけ書き換えたら、ちゃんと遊べました♪


 途中で、アナログジョイスティックの場合の実験に移行してしまったため、ここまでえらく時を食ったけれど、おかげでやっぱりゲームパッドによって、割り当て数値がまたちょっと違うみたいだとゆうことも分かった。

 のジョイパッドのキー定義は、サターンパッドに合わせています(サターンパッドにセレクトボタンないけど)

 でも、PS2の場合は、Aボタン(○)が$02、Bボタン(×)が$04・・・みたいなことになってるし、LRボタンも、SSのLとRがPS2ではR2とR1になっているなど、自分以外の人にも遊んでもらおうと思う場合は、キー設定のオプションが必須になるかもしないねえ。

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20160326

2016/03/25 (金)

アナログジョイスティックの場合

| 17:09 | アナログジョイスティックの場合 - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - アナログジョイスティックの場合 - 雪乃☆雫のなでしこ日和 アナログジョイスティックの場合 - 雪乃☆雫のなでしこ日和 のブックマークコメント

 ゲームパッドが使えるとゆうことを知り、異常にテンションを上げたワタシだけど、頭の中がゲームのわりには大したゲームがプレイ出来ないから、実は家にはPCようのゲームパッドなんてない(爆)

 唯一あったのが、ン十年前のセガサターン、初代プレステ(笑)、ドリームキャスト(!)のコントローラーをUSBでPCにつなげるようにするというアダプター。

 同様のアダプターは当然あるだろうけれど、つなげる機器が泣けるねwww

 Win7でも使えるのか・・・? と思いながら挿してみたら、サターンパッドがふつーに使えたよ!

 ・・・とゆーわけで、それで色々ためして遊んでいたんだけれど、アナログジョイスティックの場合は、ふつーのデジタルの十字キーとはまた異なるということを教えて頂いた。

 アナログは、どのくらい押されたか、スティックの傾きの値が段階的に取得出来るらしいんだけど、ここで重要なのは、斜めの場合に必ずしも限界値まで入らないよ、ということ!

 あまり詳しいことは分からないけれど、とにかくこれはよろしくありません。

 なぜなら、デジタルの場合(うちでサターンパッドでためした結果)押されていない時は「$7FFF」、上/左は「0」、下/右は「$FFFF」の値が、それぞれ「dwYpos」と「dwXpos」に帰ってくるので、オンオフで8方向を取得するとゆうサンプルをつくり、あまつさえそれを掲示板に乗っけてしまったからです。

 こんな感じね。

    UD=A.dwYpos
    LR=A.dwXpos
    もし、(UD=$FFFF)ならば
      もし、(LR=$FFFF)ならば、JOY_十字キー=「右下」
      違えばもし、(LR=0)ならば、JOY_十字キー=「左下」
      違えば、JOY_十字キー=「下」
    違えばもし、(UD=0)ならば
      もし、(LR=$FFFF)ならば、JOY_十字キー=「右上」
      違えばもし、(LR=0)ならば、JOY_十字キー=「左上」
      違えば、JOY_十字キー=「上」
    違えばもし、(LR=$FFFF)ならば、JOY_十字キー=「右」
    違えばもし、(LR=0)ならば、JOY_十字キー=「左」
    違えば、JOY_十字キー=「」
    オン戻る

 アナログコントローラーの場合、これじゃ8方向は取れないってことになるんじゃない?(汗)


 しかし、ウチにはアナログジョイスティックなんてない~~~・・・と思っていたら、PSようのところにPS2のコントローラーがふつーに挿さり、ANALOGボタンを押したら、左側のスティックがアナログモードで認識されました!すごい!!

 ためしてみたら、やはり上下左右の4方向しか認識しない

 値を取ってみると、・・・古くておまけに雑に扱われていたせいか、中央の値が一定してないよw しかも、上下は「$7EFF~$6FFF、左右は「$7FFF~$9659」と若干右上に曲がってしまってるっぽいwww

 しかしまあ、それそれとして、ぐりぐりしてみると、細かく値が返ってくるけど、一応ぐるっと360度、で動いた時のX軸Y軸で考えた場合の座標なのかなー?などと予想するも、一方の値が限界値のままというが案外多いので、こまできめ細やかでもない

 これはもちろん、のジョイスティックの性能とかにもよるんだろうね?

 本来、アナログスティックは、いっぱい押したら早く動いたり・・・みたいな、押し加減でびみょーな動きを実現出来たりするものだろうけど、んなヤツが作れるような気はしないので、擬似的にオンオフを取って8方向認識出来るようにさえなればいいんじゃないの?

 とゆーわけで、こうなった。

    UD=A.dwYpos
    LR=A.dwXpos
    もし、(UD>$D888)ならば
      もし、(LR>$D888)ならば、JOY_十字キー=「右下」
      違えばもし、(LR<$2777)ならば、JOY_十字キー=「左下」
      違えば、JOY_十字キー=「下」
    違えばもし、(UD<$2777)ならば
      もし、(LR>$D888)ならば、JOY_十字キー=「右上」
      違えばもし、(LR<$2777)ならば、JOY_十字キー=「左上」
      違えば、JOY_十字キー=「上」
    違えばもし、(LR>$D888)ならば、JOY_十字キー=「右」
    違えばもし、(LR<$2777)ならば、JOY_十字キー=「左」
    違えば、JOY_十字キー=「」
    オン戻る

 $2777とか$D888とかの数値は暫定です。

 イメージ的に、こんなもんじゃないかにゃーと入れてみたけど、妥当かどうかは不明;;;

 まっ、いちおう8方向認識出来るようにはなりました。

 でも・・・さらだけど8方向ってゆうのは、サターンパッドだったからこで、プレステの十字キーなんかじゃ2ボタンを同時押ししなきゃならないコトになって現実的じゃないし、アナログモードでは正確に斜めに入れられるかって言うとびみょーだし、あんま意味ないんじゃないの?orz

 度札幌に行ったら、イマドキのゲームパッドはどんなもんなんだか、みてこようwww

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20160325

2016/03/24 (木)

なでしこでもゲームパッドが使えた!

| 16:54 | なでしこでもゲームパッドが使えた! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - なでしこでもゲームパッドが使えた! - 雪乃☆雫のなでしこ日和 なでしこでもゲームパッドが使えた! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 なななんとっ!!

 DirectInput必須なものとばかり思い込んでいましたが、WindowsAPIの中にも、ジョイスティックを扱うための関数があって、これを取り込んで使えば、なでしこでもゲームパッドを使うプログラムが作れるようになるとゆうことなんです。

 先日来の質問掲示板のやりとりで、判明。

 質問したのはワタシではなく、ワタシはむしろ無責任に「ムリじゃね?」などと言い放ってしまったわけなのですが;;;

(一応、それだけじゃあれなんで、よくあるゲームパッドのボタンを任意のキーボードに割り当てるようなプログラムを、DirectXDLLあるHSPかなんかでの部分だけ、なでしこ側から起動してうまく連携出来るように作れないかなー? なんて、無理矢理系なことを検討していたw)

 いやー、それにしてもWindowsAPIなんぞの分かる人って天才だよね!

 ホント、尊敬する~~☆

 の記事が、こちら。

http://nade.jp-pro.net/bbs/bbs/cbbs.cgi?mode=one&number=7435&type=7400&space=45&no=0

 むむむ(@_@)

 知恵の足りないワタシなんぞが理解するには、百年くらいかかりそうな内容だけど、一応自力で十字キーの入力も八方向取得出来たし、これをうまく使わせてもらえば、ゲームパッドで操作のできるプログラムが、案外簡単に作れそう

 素晴らしい!!

 ・・・と言っても、まで自分が作ったものの中には、ゲームパッドどころか、もキーボードで操作する的なものがなかったw

 なにぶん、反射神経が0%なんで、作れる作れない以前に、アクション、シューティング、落ちもの的なゲームはプレイ出来ないのだ><

 でも、ちょっと面白いので、なでしこのサンプルに入っている「なでりす」をゲームパッドで遊べるように改造してみたいと思う。

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20160324