🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

3回答

5041閲覧

DXライブラリでPS4のコントローラは使えますか?

R-ogiura

総合スコア60

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2019/12/04 10:01

編集2019/12/05 10:54

DXライブラリでPS4のコントローラは使えますか?
調べたところps3は使えるそうなのですps4においては出てきませんでした。

if (Key[KEY_INPUT_RIGHT] == 1) if (Key[KEY_INPUT_LEFT] == 1) if (Key[KEY_INPUT_UP] == 1) if (Key[KEY_INPUT_DOWN] == 1)


ps特有の丸、×、四角、三角の関数はあるのでしょうか。

編集後
Pad = GetJoypadInputState(DX_INPUT_KEY_PAD1); //入力状態をPadに格納
if (Pad & PAD_INPUT_RIGHT && playerX < 2) {
playerMove = 1; playerX++; playerImage = playerGHandle[2]; nomove = 1;
}
のようにできたのですが、一マスずつ動きません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/12/06 13:25

基本あなたは荒らす、荒れる要素しか持ってないので、どこにも出てこないでください。 何度も炎上しているでしょう。要因はあなたにしかない。 複数アカウント所持を悪びれもせず行っている(サイト規約違反)  しかも「全くの他人を装って」コメントを付けている(虚偽) 運用できもしないマルチポストを息をするように行っている(非推奨行為) 指摘をされると「わかった」振りをして即破る(マナー違反) 通報だけで済む話ではありません。
guest

回答3

0

一マスずつ動きません。

コレ↓と同じことをしなさい。

C++

1// キーの入力状態を更新する 2int gpUpdateKey() { 3 char tmpKey[256]; // 現在のキーの入力状態を格納する 4 GetHitKeyStateAll(tmpKey); // 全てのキーの入力状態を得る 5 for (int i = 0; i < 256; i++) { 6 if (tmpKey[i] != 0) { // i番のキーコードに対応するキーが押されていたら 7 Key[i]++; // 加算 8 } 9 else { // 押されていなければ 10 Key[i] = 0; // 0にする 11 } 12 } 13 return 0; 14}

投稿2019/12/05 11:33

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

R-ogiura

2019/12/05 12:28

うーん、どうすればいいのか、わかりにくいです。 Pad & PAD_INPUT_RIGHTはKey[KEY_INPUT_RIGHT] == 1 のように書けないのでしょうか?
thkana

2019/12/05 13:04

&演算子は初心者向けの薄い本には載ってなかったのかしら?
R-ogiura

2019/12/05 15:36

if (Pad & Key[PAD_INPUT_RIGHT] == 1 && playerX < 2) として見ましたが機能しません。
episteme

2019/12/05 18:17 編集

GetHitKeyStateAll()の結果(出力)をそのまま使うとキャラクタが何マスも一気に移動してしまう。だからgpUpdateKey()を定義してひとマスだけ移動できるようにしたよね? それと同じことではないのか? > Key[KEY_INPUT_RIGHT] == 1 のように書けないのでしょうか? そのように「書けるようにしろ」ということだ。
R-ogiura

2019/12/05 22:13

int InputTypePad[256]; int gpUpdatePad() { int InputType = 0; GetJoypadInputState(InputType); //入力状態をPadに格納; for (int i = 0; i < 256; i++) if(InputTypePad[i] = 0) { InputTypePad[i]++; } return 0; } と作った後でif (Pad && InputTypePad[PAD_INPUT_RIGHT] == 1 && playerX < 2) と書きましたがうまく機能しませんでした。
episteme

2019/12/05 22:35 編集

そりゃそうだ、当てずっぽで書き殴ったコードが正しく動くわけがない。マニュアルを読み、"理解"せよ。
R-ogiura

2019/12/05 22:35

当てずっぽうに書かなくても、考えながら書いても正しく動かないこともあるんですよ。 自分の基準でものをいうのはやめて頂きたい。自分の労働を否定されているようで不快になります。 そこまで言うならば、何か解決に繋がる糸口を教えてほしいものです。
episteme

2019/12/05 22:55 編集

そのコードは当てずっぽと同じだ。 考えるより先にマニュアル読め。 解決に繋がる糸口は教えた。 # 自分の基準でもの言ってるのはあなたも同じ。
R-ogiura

2019/12/05 23:08 編集

マニュアルは何度も読んでいます。その度に簡単なサンプルを作りコントローラからの入力情報を確認しています。 そうですか。 相変わらず命令口調で失礼な人ですね。 テラテイルにブロック機能がないのが残念です。
Zuishin

2019/12/05 23:11 編集

初心者レベルで教えてもらってるんだから、初心者レベルまで上がったらいいと思います。「考えながら」ではなく、「マニュアルを読んで理解してから」と書いてあります。
episteme

2019/12/05 23:37 編集

マニュアル読んで"理解してる"なら書けるはず。できないとすれば、基礎スキルが足りてない。 # 理解してるならそんなコード書くはずがないし、 # 誤った理解に基づいた思考は徒労に終わる。
episteme

2019/12/06 01:24

> マニュアルは何度も読んでいます。その度に簡単なサンプルを作りコントローラからの入力情報を確認しています。 であるなら、やっぱり基礎ができてないね。
m.ts10806

2019/12/06 01:26

読んでちょっと雑に組んで理解できるならマニュアルは不要ですね。 「話は聞いた(意味は理解してない)」状態。まあこれも何年も前から指摘されてるようなことと思いますけど。
episteme

2019/12/06 02:47

「同じことをせよ は 同じ見た目にせよ である」という"何ひとつ考えてない状態" とも言えよう。
fana

2019/12/06 03:58

「同じことをせよ」とは「同様の仕組みによる対応を行え」ということですが, > …… gpUpdateKey()を定義してひとマスだけ移動できるようにしたよね? これを「した」のは質問者本人でなく,どこぞから持ってきて使ってただけでしょうから…
episteme

2019/12/06 05:38 編集

うむ、whatとhow、その二つを繋ぐwhyが理解できてないなら無理からぬことか。 魚の捕り方を学ばずして魚を得んとする漁師の如し。しかも調理済の魚を。
m.ts10806

2019/12/06 04:42

それが適当にネットから拾ったわけでなく、質問して得たコードだとしたら回答した人に失礼きわまりない行為を続けていることになりますしね。
R-ogiura

2019/12/06 12:26

あの、int gpUpdateKey() { char tmpKey[256]; GetHitKeyStateAll(tmpKey); for (int i = 0; i < 256; i++) (tmpKey[i] == 0) ? (Key[i] = 0) : Key[i]++; return 0; } の(tmpKey[i] == 0) ? (Key[i] = 0) : Key[i]++;に関してなのですが、 これは文字の情報が入るtmpKey[i]が0になったらKey[i] を0にする、そうでない場合はKey[i]を+1していくとわかるのですが、このKey[i]は何を表しているのでしょうか。
episteme

2019/12/06 12:32 編集

今さらソレ訊く? これまでのログを全部読み返してごらん。 てか原本である https://dixq.net/g/02_09.html を読み返してごらん。
episteme

2019/12/06 12:36 編集

fanaさんの示したやり方はgpUpdateKey()方式の"簡略版"であることが理解できてないようですね。 # エピカスって誰ですか?
m.ts10806

2019/12/06 12:56

>要は糸口を教えたわけではなく、自分でもどう解決していいかわからないため、わかっているフリをして、ただ意地悪くしていただとわかりました。 何を受信した。どこでどんな電波を受信したらそうなるのか理解できませんね。私たちのような一般人には。 どうやら我々が見ているのとは別の世界が見えているようだ。 こちらの世界のやり方はあわないのでどうかお去りください。 まともな指摘のコメントが全て見えてないようなので。
fiveHundred

2019/12/06 13:15

どんな理由であれ、回答者をカス扱いするのは、いい行為であるとは思えません。 低評価の相殺と通報を行っておきます。
episteme

2019/12/06 13:18

Bullさんが実装してくれたgpUpdatePad()はgpUpdateKey()と"同じこと"をしています。 Bullさん自ら「gpUpdateKey()方式で簡単に実装できる」と仰ってますし。
guest

0

ベストアンサー

他回答のコメント欄内のコードに対する話なので,回答として書くのが適切かわかりませんが…

int InputType = 0;
GetJoypadInputState(InputType); //入力状態をPadに格納;

GetJoypadInputState()の使い方をググると,とりあえず以下のことがわかります.

  1. どのパッドの状態を取得したいのかを引数で指定する.引数に与えるべき値は,DX_INPUT_PAD1とかDX_INPUT_PAD2とかである.
  2. 入力状態はこの関数の戻り値として得られる

まず,1.について,引用したあなたのコードでは引数に0という値を与えていますが,その理由は何なのか説明できますか?
DX_INPUT_PAD1とかDX_INPUT_PAD2とかを指定せよという説明がリファレンスで成されているので,それらを与えておけば良いのではないでしょうか.

つぎに,2.について.
あなたはパッドの入力状態を得るためにこのGetJoypadInputState()なる関数を使っているのですから,この関数から返された情報に基づいて処理を行うべきでしょう.
情報は上記のように戻り値として得られる仕様だとされていますから,少なくとも戻り値を用いるコードを書くべきでしょう.

そういったことをきちんとリファレンスなりから読み解かなければ,いつまでたってもまともに動作するコードを実装することはできませんよ.


で,ボタンを押すと一気にたくさん動いてしまうことに関してですが,

まず,そうなる理由は大丈夫でしょうか?
「ボタンが押されていたら動く」という処理がループしているとき,
人間がボタンを押してから離すまでにかかる時間内に,この処理が複数回走るとそうなるわけですね.
ループは秒間30回とか60回とかの勢いで回っているのでしょうから,
人間の感覚ではボタンをちょいと押したつもりでも「高速でループしている処理側から見ると,ボタンは長いことずっと押され続けている」という状況になるわけです.

対処方法としては,
【「今現在のパッドの状態を調べてみたらボタンが押されているが,前回しらべたときには押されていなかった」場合に動く】とすれば良いでしょう.
つまり,少なくとも,

  • 今回のパッド状態の調査結果
  • 前回のパッド状態の調査結果

の2つの情報を(何かしらの方法で)管理して,ボタン押下の判断が必要な時には,管理されている情報を見て判断を行わねばならないということです.

このことを,ものすごく素直に実装すれば,例えば以下のような形の実装を行うでしょう.

//まず,変数として, //「前回」と「今回」のパッド状態調査結果(GetJoypadInputState()の戻り値)を覚えておく場所 //を(適切な場所に)用意する int PrevPadState = 0; //適切な初期値は0かなきっと int CurrPadState = 0; //適切な初期値は0かなきっと //現在のパッドの状態をGetJoypadInputState()を用いて調査し, //2つの変数{ PrevPadState ,CurrPadState }を更新する作業を担う関数. //この関数をメインループから毎回呼ぶ感じ. void UpdatePadState() { //「前回」情報を更新 PrevPadState = CurrPadState; //「今回」情報を更新 CurrPadState = GetJoypadInputState( DX_INPUT_KEY_PAD1 ); //引数はこれで良いのかな? } //実際どんなコードなのかはわからんけど,メインループで毎度↑の関数UpdatePadState()を呼ぶ int main() { ... //初期処理 while( true ) //メインループのつもり { UpdatePadState(); //パッド状態の調査 ... //その他の処理 } ... //後処理 return 0; } // //以下はどこか(PrevPadStateとCurrPadStateの値を参照できる場所)での処理 // //パッドの「右」ボタンが「今」押されたかどうか判定するとき if( ( PrevPadState & PAD_INPUT_RIGHT ) == 0 //前回は押されていなくて && //且つ ( CurrPadState & PAD_INPUT_RIGHT ) != 0 //今回は押されている ) {//「右」は今押された //「右」が押されたときの処理 }

(もちろん,↑の「右」ボタンの判定処理を他のボタン群にもひたすら同じように書くのはだるいので,実際は関数化するなりなんなりしていくわけですが.)

投稿2019/12/06 02:13

fana

総合スコア11985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

R-ogiura

2019/12/06 13:30

どうもありがとうございます。
R-ogiura

2019/12/08 08:59

あのfanaさん、 if( ( PrevPadState & PAD_INPUT_RIGHT ) == 0 //前回は押されていなくて && //且つ ( CurrPadState & PAD_INPUT_RIGHT ) != 0 //今回は押されている ) の書き方って、どちらかである場合に働くため、ずっと押されている場合は押されていないという選択肢が無いのでif( ( PrevPadState & PAD_INPUT_RIGHT ) == 0 //前回は押されていなくて && //且つ ( CurrPadState & PAD_INPUT_RIGHT ) != 0 //今回は押されている ) が働かない。ですが、それ以外の、例えば押されなかった後で押されたフレームの場合は押されているか押されていないかの選択しがあるので if( ( PrevPadState & PAD_INPUT_RIGHT ) == 0 //前回は押されていなくて && //且つ ( CurrPadState & PAD_INPUT_RIGHT ) != 0 //今回は押されている ) が働くということでしょうか? また、このif文の使い方は何という名前の方法なのでしょうか?
fana

2019/12/09 01:22 編集

「前回」と「今回」の組み合わせは以下の4通り. ボタンが押されたのを○,押されなかったのを×で書くと, 前回○,今回○ : (少なくともメインループ2回分の間)押され続けている 前回○,今回× : 直前まで押されていたが,今は押していない 前回×,今回○ : 直前まで押されていなかったが,今回押された 前回×,今回× : (少なくともメインループ2回分の間)押されていない この質問の話ではキャラクタを動かしたいのは3番目のタイミングであろうから,「前回が×であって,且つ,今回が○の場合」という判定をしただけ. ifの使い方には特別な名前は無いと思う.
R-ogiura

2019/12/09 12:40 編集

ありがとうございます! ただ、一つ疑問なのはボタンを押し続けた場合に、前回○,今回○となると思いますが、 なぜ前回×,今回○となった場合と同じように1フレーム分だけ働くのか原理が知りたいです。 載せて頂いたプログラムを読んでいるのですが原理がわかりません。 ボタンを押し続けても一フレームだけきっちり動く理由が知りたいです。
fana

2019/12/10 01:24

おっしゃっている現象の意味がよくわかりません. N-1フレーム目まで押していないボタンを,Nフレーム目で押して,以降押し続けた場合, N-1フレーム目:前回×,今回× : ここまでは押してない Nフレーム目:前回×,今回○ : ここで初めて押した N+1フレーム目:前回○,今回○ : 押し続けている N+2フレーム目:前回○,今回○ : 押し続けている ... ボタンを離したフレーム:前回○,今回× : ここで離した その次のフレーム:前回×,今回× : 押してない という形で状態は遷移していきますが,あなたの言う,「押し続けた場合に働く」とはどのフレームでのどんな出来事のことでしょうか?
R-ogiura

2019/12/10 01:41

わかりにくくてすいません。 改めて質問させて頂きますと、 N+1フレーム目:前回○,今回○ : 押し続けている N+2フレーム目:前回○,今回○ : 押し続けている に関しては前回の1フレーム、今回の1フレームで押されているため if( ( PrevPadState & PAD_INPUT_RIGHT ) == 0 //前回は押されていなくて && //且つ ( CurrPadState & PAD_INPUT_RIGHT ) != 0 //今回は押されている ) の条件に当てはまらないため右の進まない、 ですが、Nフレーム目:前回×,今回○の場合は前回の1フレームでは押されていないが、今回の1フレームでは押されているので if( ( PrevPadState & PAD_INPUT_RIGHT ) == 0 //前回は押されていなくて && //且つ ( CurrPadState & PAD_INPUT_RIGHT ) != 0 //今回は押されている ) の条件に当てはまるため、右に進めるということでしょうか?
fana

2019/12/10 01:50

はい. よくわからんときには, > N-1フレーム目:前回×,今回× : ここまでは押してない > Nフレーム目:前回×,今回○ : ここで初めて押した > ... みたいなのを,(紙と鉛筆を使ってでも良いので)実際に列挙して,そのようにコードと照らし合わせて確認すると良いでしょう.
R-ogiura

2019/12/10 01:57

いつもいつもご親切にありがとうございます! 解説とプログラムが私でも時間をかければ理解できるので大変ありがたいです。
fana

2019/12/10 02:20

他人の書いたコードがどうやってある結果を生じる動作をしているのか?を理解するのは時間がかかるものです. 自分が同じ動きをするものを書く場合と比べると数倍以上は時間がかかります.それは普通のことです. で,内容を真に理解できた場合,このような内容の処理の実装をあなた自身で作れるハズです.なので,実際に作ってみてそのことを確かめてください. この「自前で実装してみる」ステップを実際にやることがとてもとても大切です.(大事なことなので「とても」を2回書きました)
fana

2019/12/10 02:25

例えば数学のテストに備えて勉強するときは,教科書をただ読むだけでなくて,章末の練習問題もやってみますよね.それと同じ感じですね. 教科書読んで「ほーん,そんな話か」と分かったつもりでも,直後に載ってる練習問題をやってみたら解けなかったりする.
guest

0

面白そうだったので PS3 コントローラー接続の確認を兼ねてテストプログラムを作ってみました。
どうしようか迷ったのですが解決したようなので、gpUpdateKey()方式で簡単に実装できることを証明(?)するために、ここに書いておきます。

c++

1#include <DxLib.h> 2 3int Pad[32]; 4 5int gpUpdatePad() 6{ 7 int padStat = GetJoypadInputState(DX_INPUT_KEY_PAD1); //入力状態を padStat に格納 8 for (int i = 0; i < 28; i++) { //ボタン28個分ループ 9 if (padStat & (1 << i)) { //ボタンiの入力フラグが立っていたら 10 Pad[i]++; //加算 11 } else { //入力がなければ 12 Pad[i] = 0; //0 にする 13 } 14 } 15 16 return 0; 17} 18 19int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) 20{ 21 ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); //ウィンドウモード変更,初期化,裏画面設定 22 23 int x = 320; 24 int y = 240; 25 const int PAD_DOWN = 0; 26 const int PAD_LEFT = 1; 27 const int PAD_RIGHT = 2; 28 const int PAD_UP = 3; 29 30 const int KEY_ESC = 12; 31 32 // while( 裏画面を表画面に反映, メッセージ処理, 画面クリア ) 33 while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()) { 34 gpUpdatePad(); 35 if (Pad[PAD_LEFT]) { 36 if (x > 4) 37 x -= 4; 38 } 39 if (Pad[PAD_RIGHT]) { 40 if (x < 622) 41 x += 4; 42 } 43 if (Pad[PAD_UP]) { 44 if (y > 4) 45 y -= 4; 46 } 47 if (Pad[PAD_DOWN]) { 48 if (y < 464) 49 y += 4; 50 } 51 DrawFormatString(x, y, GetColor(255,255,0), "●"); 52 53 if (Pad[KEY_ESC]) break; 54 } 55 56 DxLib_End(); 57 return 0; 58}

コントローラーのステータスはビットデータなので、そこを理解していればキー入力からの変更は容易ですね。
ここを参考にするといいです。

投稿2019/12/06 13:03

Bull

総合スコア986

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

R-ogiura

2019/12/06 13:04 編集

拝見させて頂きます。 どうもありがとうございます。
Bull

2019/12/06 13:18

なんか変な流れになってきたので、間違いを修正したかっただけです。
episteme

2019/12/06 13:22

ん? "間違い"とは?
Bull

2019/12/06 13:32

"間違い" というよりは "誤解" されないようにといった方が良かったかもしれません。 「gpUpdateKey()方式ではできない」と誤解する人がいるとは思えませんが、一応物証を提示しておきました。
R-ogiura

2019/12/06 13:37 編集

Bullさんにもベストアンサーを差し上げたいんですが、fanaさんの方が解答が早かったので、大変申し訳ないのですが、fanaさんをベストアンサーにさせて頂きます。複数人ベストアンサーできるような機能があればいいのに。
m.ts10806

2019/12/06 13:35 編集

複数アカウントで堂々と規約違反を突っ走る人が何をおっしゃる
R-ogiura

2019/12/06 14:00

Bullさんの載せて頂いたプログラムを参考に https://pastebin.com/5k5zSWhB のように作ったのですが、なぜかPad[PAD_RIGHT]のPAD_RIGHTに赤い下線部でエラーが出ます。 なぜでしょうか。
Zuishin

2019/12/06 14:10

なぜわからないんでしょうか。 Pad == 0 なのに。0[2] のようなことができると書いてある薄い本はどこで拾ったんですか?
episteme

2019/12/06 14:22

変数だけで百個を超える凄まじいコードやからなー...
R-ogiura

2019/12/06 15:33

すんまへん、(解決法が)わかりません。
m.ts10806

2019/12/06 20:50

書いたとおりに動いてるだけだと何度言えば。 ほら基礎だよ基礎。キミが忌み嫌ってる基礎だよ。誰もがキミに求めてる基礎なんだよ。 どこも解決なんてしてないんだよ。
Zuishin

2019/12/06 23:24

解決法は基礎力をつけることですよ。前にも書いたと思いますが。 配列じゃないものにインデックスつけてるだけなので、初心者でも簡単に解決できます。 せめて初心者レベルに上がってから質問したら、回答者の言ってることの意味もわかると思います。 意味もわからないのに尋ねてもしょうがないでしょう。
m.ts10806

2019/12/06 23:29

自分が把握できるコードを書くところから。それができないなら外注に投げたまえ。解決する気一切ないんだから。 その前に身辺整理とルール遵守が先ですけど。
R-ogiura

2019/12/07 00:37

Zuishinさんの言うように、つまらないミスで悩んでいました。 初心者ゆえに他人に指摘されないとわからないことってたまにありますよね。 epistemeさんに変数名の重複により、配列で置いた変数自体を数値で置いてしまったために起きたエラーがあったためPad[PAD_RIGHT]が使えないということを指摘され解決できました。
fana

2019/12/09 01:47

素朴な疑問なんですけど,int Pad[32];のうち28個しか使わないのは何故なんでしょう? GetJoypadInputState()のリファレンスでは32個のbit全部に情報が入りそうに見えるけど…(実際にそんなにたくさんボタンが付いてるパッドがあるのかは別として)
Bull

2019/12/09 03:51 編集

> 素朴な疑問なんですけど,int Pad[32];のうち28個しか使わないのは何故なんでしょう? 最初は GetJoypadInputState() 関数が int (32bit) を返すので、 Pad[32] に全てを取り込んでいたのですが、こちら (https://dixq.net/g/04_05.html) を参考に変更しました。正直言って理由はよく判りません。 もしかしたら、サイトの管理人さんが勘違いしているのかもしれません。 ↓、←、→、↑に加え 1 ~ 28 のボタンで 32個であるのに、PAD_INPUT_28 が最後なので、28個しか取り込めないと。
fana

2019/12/09 04:15

質問者がこの話の方法論を参考にするのではなくこのコードをまるごとこのまま(Pad[32]のまま)使おうとしている雰囲気がある(?)ので,念のため問うておいてみた次第です. (実際のbit配置がどうなってるのかわからんのでこれで良いのか悪いのか私には不明)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問