任意の特定キーからの入力があるかを調べる関数。


RGKT-NDS-STDY-014(002)


GBDK の waitpad() 関数モドキ(ダウンエッジ検出用)作成時に案出ししといた
アップエッジ・押しっぱなしの検出用も書いて(てゆーかほぼコピペ)単体ソースファイルに分けた。
言いだしっぺが書かないのもなんだし。
ジャンケンゲーム用に浮かんだ関数だけどジャンケン以外でも使いそうだし。


inputSub.h

// TODO: ここに一意の識別子を定義する(重複インクルード防止用)。
#ifndef _INPUT_SUB_H_
#define _INPUT_SUB_H_

// TODO: ここに、このヘッダファイルが必要とする外部ヘッダファイルを記述する。
#include <nds/ndstypes.h>

#ifdef __cplusplus
extern "C" {
#endif

// TODO: ここに #define 定義、ならびに関数のプロトタイプ宣言を追加する。
bool isKeysUp(uint32);
bool isKeysDown(uint32);
bool isKeysHeld(uint32);

#ifdef __cplusplus
}
#endif

#endif


inputSub.c

// TODO: ここに、このソースファイルが必要とする外部ヘッダファイルを記述する。
#include <nds/ndstypes.h>
#include <nds/arm9/input.h>

// TODO: ここにプロトタイプ宣言した関数のコードを記述する。
bool isKeysUp(uint32 keypad_bits)
{
	if(keysUp() & keypad_bits)
		return true;
	return false;
}

bool isKeysDown(uint32 keypad_bits)
{
	if(keysDown() & keypad_bits)
		return true;
	return false;
}

bool isKeysHeld(uint32 keypad_bits)
{
	if(keysHeld() & keypad_bits)
		return true;
	return false;
}


んでテストコード。
大して面白くもないコードなんで続きを読むにしときま。
inputSub lib test.

//---------------------------------------------------------------------------------
//	
//	TITLE     : inputSub lib test.
//	
//	DATE      : Feb 14, 2009
//	
//	COPYLIGHT : CODING BY. AYUMI.K @REGEKATSU
//	SDK       : devkitPro Version 1.4.9
//	
//	WEB SITE NAME :
//	REGEKATSU
//	-Console/Homebrew Programming-
//	
//	WEB SITE URL  :
//	http://akiba.geocities.jp/consolehomebrewprogramming/
//	
//---------------------------------------------------------------------------------
#include <nds.h>
#include <stdio.h>
#include "inputSub.h"

int main(void)
{
	
	consoleDemoInit();
	
	iprintf("inputSub lib test.\nFeb 14, 2009\nCODING BY. AYUMI.K @REGEKATSU\n\n");
	
	while(1) {
		
		scanKeys();
		
		if(isKeysDown(KEY_UP | KEY_DOWN))
			iprintf("isKeysDown true\n");
		else if(isKeysUp(KEY_LEFT | KEY_RIGHT))
			iprintf("isKeysUp() true\n");
		else if(isKeysHeld(KEY_START | KEY_SELECT))
			iprintf("isKeysHeld() true\n");
		
		swiWaitForVBlank();
		
	}
	
	return 0;
	
}