응애맘마조
221213 강의 본문
어제는 오늘 GetAsyncKeyState에 대해서 한다고 했었습니다. 코드가 변경되면서 더 이상 사용하지 않습니다. 왜냐하면 GetAsyncKeyState 함수는 키보드를 눌렀을 때, 누르고 있는 중, 누르던 키에서 손을 떼냈을 때가 없습니다. 그래서 더 이상 사용하지 않고 삭제가 되었으며 중요하지 않습니다.
또한 키보드 입력이라는 것도 한 가지 객체만 있기 때문에 싱글톤을 상속받습니다.
오늘은 싱글톤 패턴과 키보드 입력에 대해서 배웠었습니다.
싱글톤 패턴은 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴합니다. 이 패턴에는 static이 사용됩니다.
여기서 static이라는 것은 한 번만 할당되고 선언이나 정의 그리고 객체가 따로 없습니다. 그래서 함수가 호출되어도 초기화되지 않고 기존에 쓰던 값이 계속 사용됩니다. 한 번 사용되면 더 이상 사용되지 않습니다.
그리고 강의에서 enum을 많이 사용하게 됩니다. 게임 개발에도 쓸 줄 알면 매우 유용하다고 했습니다.
최근에는 enum class를 사용하면서 enum값에 이름도 넣게 되었는데 만약 enum 뒤에 이름이 없으면 익명 enum문이라고 합니다.
함수 안에서 mem이 붙은 이름들이 많습니다. 여기서 mem은 Memory의 줄임말입니다.
ZeroMemory는 처음부터 끝까지 0으로 만든다는 의미입니다. 함수에서 사용하면 전부 0으로 초기화한다는 뜻이 됩니다.
memcpy는 메모리를 복사한다는 뜻입니다. 원본 값을 목적지까지 옮긴다는 의미입니다.
키 입력을 하게 되면서 keystate 상태 값을 받아오면서 keycode라는 매개변수를 추가했습니다. 이는 가상 키 코드의 리턴 값을 가지고 있습니다. (0x0000, 0x0001, 0x8000, 0x8001 값을 가지고 있습니다.)
키보드 입력 판단은 삼항 연산자로 판별하게 됩니다. (삼항 연산자는 bool ? true : false 형식입니다.)
여기서 키보드 입력도 WM_TIMER를 통해 사용자가 눌렀는지 누르지 않았는지 판별을 해야 하고 싱글톤이기 때문에 해제도 해줘야 됩니다.
내일은 델타에 대해 한다고 했습니다. 델타라는 것에도 여러 가지 의미가 있지만 어떤 델타를 하게 될지는 내일 쓰겠습니다.
읽어주셔서 감사합니다.