ゲームにおけるデータ構造・クラス設計・パターン
■ このスレッドは過去ログ倉庫に格納されています
0825820
2008/03/07(金) 23:26:54ID:1kJAWqPNちょっと出来に難があります。
1回のメインループで2回使用、例えばKEY_DOWNとKEY_UPの2種類を検出しようと
したりすると1種類目の呼び出ししか有効でなかったり。
enum BTN_STATE{ NO_PUSH, KEY_DOWN, KEY_PUSH, KEY_UP };
//「押されていない」「押下げた瞬間」「押されている状態」「押上げた瞬間」
class JoyPad{
int isPushDown[2][8];//[パッド1P、2P][ボタン数] (各ボタン押されているか否か)
public:
BTN_STATE getBtnState(int pad_num, int btn_num );
}
BTN_STATE JoyPad::getBtnState (int pad_num, int btn_num ){
int btn = ボタンが押されているか?関数( pad_num, btn_num );
if ( btn == 1 ) {//ボタンが押されていたら
if ( isPushDown[pad_num][btn_num] == 0){
isPushDown[pad_num][btn_num] = 1;
return KEY_DOWN;//「押下げた瞬間」
}else{
return KEY_PUSH;//「押されている状態」
}
}
if ( btn == 0 ) {//ボタンが押されてなければ
if(isPushDown[pad_num][btn_num] != 0){
isPushDown[pad_num][btn_num] = 0;
return KEY_UP;//「押上げた瞬間」
}
}
return NO_PUSH; //「押されていない
}
■ このスレッドは過去ログ倉庫に格納されています