1. 입력처리
GetAsyncKeyState
vKey = 실제 버튼을 누르면 어떤 키가 눌렸다 라고 전송이 되면 그것과 대응 되는
가상 키코드
2. 텍스트에 색깔 주기
3. 랜덤
4. scene(씬)
위쪽 화살표가 눌렸는지 안 눌렸는지 체크
short : 2byte
0000 0000 0000 0000 : 키가 뺴진 상태 -> 0x0000
1000 0000 0000 0000 : 키가 눌린 상태 -> 0x8000
0000 0000 0000 0001 : 키가 계속 눌린 상태 -> 0x8001 => 사실상 필요없다.
Input.c (키 누르기)
#include "Common.h"
#include "Input.h"
//이전 프레임의 키 상태
bool s_prevKeyStates[256]; //isKeyDownOnPrevFrame
//현재 프레임의 키 상태
bool s_currentKeyStates[256]; //isKeyDownOnCurFrame
#define IS_KEY_DOWN(vkey) (0x8000 & GetAsyncKeyState(vkey))
void Input_Update(void)
{
//이전 프레임의 키 내용 저장 및 혀재 프레임의 키 상태를 가져와야 함.
memcpy(s_prevKeyStates, s_currentKeyStates, sizeof(s_currentKeyStates));
for (int 32 vkey = 0; vkey < 256; ++vkey)
{
if (IS_KEY_DOWN(vkey))
{
s_currentKeyStates[vkey] = true;
}
else
{
s_currentKeystates[vkey] = false;
}
}
}
bool Input_GetKeyDown(uint8 vkey)
{
if (false == s_preKeyStates[vkey] && true == s_currentKeyStates[vkey]
{
return true;
}
else
{
return false;
}
}
bool Input_GetKey(uint8 vkey)
{
if (true == s_prevKeyStates[vkey] && false == s_currentKeyStates[vkey]
{
return true;
}
else
{
return false;
}
}
>--------< 핵심 아이디어 정리 >--------<
우리가 해결해야 할 문제?
> 현재 프레임에 키가 눌렸는지, 떼졌는지, 계속 눌린 상태인지 알고 싶음.
필요한 데이터
> 이전 프레임의 키 상태, 현재 프레임의 키 상태
GetKeyDown() -> 이전 프레임의 키가 떼졌을 때 && 현재 프레임의 키가 눌렸을 때
GetKeyUp() -> 이전 프레임의 키가 눌렸을 때 && 현재 프레임의 키가 떼졌을 때
GetKey() -> 이전 프레임의 키가 눌렸을 때 && 현재 프레임의 키가 눌렸을 때
--- 입력부 종료