BUTTON

プチコン3号 プチコンBIG 

物理ボタン(十字キー、ボタン)の情報を取得

BUTTON [fnc[,trm]] OUT var var = BUTTON([fnc[,trm]])

パラメーター

fnc機能ID(省略時:0)
trmワイヤレス通信時の端末ID(3DS) 0~3
  コントローラーID(WiiU) 0:Gamepad 1~4:Wii互換コントローラ

戻り値

verボタン状況(数値)

解説

十字キーと各操作ボタンの押下情報を取得します。
取得できるのは、十字キー(上下左右),A,B,X,Y,L,R,ZL,ZRです。
START,SELECTは使用不可。ZL,ZRは旧3DSには標準装備されていません)

プチコンBIGでは更に、Wiiリモコン、ヌンチャク、L/Rスティック押下も取得可能です。
どのハードウエアが接続されているかはCONTROLLERで取得できます。
fnc:機能ID
fnc内容
0押し続け[省略時]
1押した時(リピート付)
2押した時(リピート無)
3離した時
「リピート」はBREPEATを参照
trm:端末(コントローラ)ID
3DS:端末IDを指定する場合は、事前に「MPSTART」でワイヤレス機能をONにしておく必要があります。
BIG:コントローラIDを指定する場合は、事前に「XON WIIU」を実行する必要があります。
戻り値
戻り値は、各ボタンが押されているかがbitで表された数値です。
<例>RとBと上が同時に押されている場合
bit1211109876543210
ボタンZLZRRLYXBA
戻り値0001000100001

これらをANDなどの論理演算子で、それぞれが押されているかを取得します。
各ボタンが単独で押された時の値
bit10進数#ボタン
01#UP十字ボタン上
12#DOWN十字ボタン下
24#LEFT十字ボタン左
38#RIGHT十字ボタン右
416#AAボタン
532#BBボタン
664#XXボタン/Wiiリモコン1ボタン
7128#YYボタン
8256#LLボタン/ヌンチャクC
9512#RRボタン
101024(未使用)
112048#ZRZRボタン
124096#ZLZLボタン/ヌンチャクZ
138192(未使用)
1416384Lスティック押下
1532768Rスティック押下
赤字はプチコンBIGのみ

サンプルコード

十字キーでキャラクターを動かすサンプルコード。このコードでは「単独で押された場合」にのみ移動します。
ナナメへの移動など、他のボタンが同時に押されていても有効にしたい場合は、「B==#〜」の部分を「(B AND #〜)>0」に変更します。
DIM X=200:Y=200  '横位置と縦位置の初期設定
SPSET 0,1275 'スプライト0番にキャラをセット(1275:赤い戦闘機)
 
@MAINLOOP
B=BUTTON()  '十字キーの値を取得。
IF B==#UP    THEN Y=Y-1 '
IF B==#DOWN  THEN Y=Y+1 '
IF B==#LEFT  THEN X=X-1 '
IF B==#RIGHT THEN X=X+1 '
SPOFS 0,X,Y  'キャラを画面に表示
VSYNC        '実際に表示されるまで待つ
GOTO @MAINLOOP
v3.1までの記載方法(定数リテラル(#)は使用できなかった)
IF B==1 THEN Y=Y-1

参照

XON 3DS/WiiUモード切替、マイク、センサーの使用開始
XOFF マイク、拡張スライドパッド、各センサーの使用を終了
BUTTON 物理ボタン(十字キー、ボタン)の情報を取得
BREPEAT 物理ボタンのキーリピート機能(自動連打)を設定
STICK スライドパッドの情報を取得
STICKEX 拡張スライドパッドの情報を取得
ACCEL モーションセンサー(加速度センサー)情報を取得
GYROA ジャイロセンサー(角度センサー)の「角度変化」情報を取得
GYROV ジャイロセンサー(角度センサー)の「角速度」情報を取得
GYROSYNC ジャイロセンサー(角度センサー)の値をリセット
TOUCH タッチパネルの情報を取得
MICSTART マイクからのサンプリング(音声取得)を開始
MICSTOP マイクからのサンプリング(音声取得)を停止
MICDATA サンプリングデータの指定位置を調べる
MICSAVE サンプリングデータを配列にコピー
CONTROLLER コントローラーの情報取得
VIBLATE プチコンBIG コントローラーを振動させる

Facebookコメント