조회 수 1018 추천 수 3 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

이번 강의에서는 햄 엔진을 이용한 Keyboard 및 Mouse 처리 코드를 작성해보겠습니다.

 

프로토 타입

 

일단 햄엔진에 포함된 입력관련 객체 및 함수 입니다.

 

GetCursorPos() : 마우스의 위치를 얻음

SetCurPos(int iX,int iY) : 마우스의 위치를 설정함 ( 화면 구역안에서의 좌표임. )

SetCurVisible(BOOL bShow) : 마우스를 보여줄것인지 말것인지 결정.(DoEvents 함수 내에서만 작동)

GetCurVisible() : 마우스의 표시 상태 알아보기

m_Mouse.GetKeyState(0) : 왼쪽 마우스의 상태를 얻음

m_Mouse.GetKeyState(1) : 오른쪽 마우스의 상태를 얻음

m_Keyboard.GetKeyState(키보드 값) : 키보드 값의 상태를 얻음

m_Mouse.SetLockState(코드값,TRUE); // 마우스의 중복 방지를 위한 마우스 잠금. ( 마우스 버튼을 떼면 잠금 자동 풀림 )

m_Mouse.SetLockState(코드값,FALSE); // 마우스 잠금 해제

m_Keyboard.SetLockState(코드값,BOOL bShow); // 위와 같은 원리임

 

실제 구현

 

 

 - 키보드 -

그리고 이젠 간단한 타자 프로그램을 위한 키보드 입력을 구현해보겠습니다.

 

if(m_Keyboard.GetKeyState(DIK_ENTER)) { // 엔터 키를 눌렀을 경우

  ComputeData(); // 타자수를 계산하라고 알림

  m_Keyboard.SetLockState(DIK_ENTER,TRUE); // 엔터 키를 계속 누르면 이 if 문 내용이 작동되는 것을 방지.

 // 다시 엔터키를 떼었다가 눌러야지 잠금이 풀림.

}

 

그리고, 다음으로는 일반 게임에서 사용되는 앉았다, 일어나는 키를 구현해보겠습니다.

if(m_Keyboard.GetKeyState(DIK_INSERT)) { // Insert 키를 눌렀을 경우

  SitDown(); // 앉으라는 함수

  m_Keyboard.SetLockState(DIK_INSERT,TRUE); // Insert 키를 계속 누르면 이 if 문 내용이 작동되는 것을 방지.

 // 다시 Insert 키를 떼었다가 눌러야지 잠금이 풀림.

}

 

 - 마우스 -

다음으로는 FPS 게임에서 마우스가 보이지 않고, 항상 가운데에 위치하는 것을 구현해보겠습니다.

그리고, 키보드를 누르고 있으면 계속 반응이 되지 않게, 키보드 잠금을 해보겠습니다.

SetCurVisible(FALSE); // 보이지 않게 요청함.

SetCurPos(400,300); // 800X600 화면에서는 400, 300 위치가 가운데 이다.

if(m_Mouse.GetKeyState(0)) { // 마우스 왼쪽 버튼을 눌렀을 경우

  Attack();

  m_Mouse.SetLockState(0,TRUE); // 마우스 왼쪽 키를 계속 누르면 이 if 문 내용이 작동되는 것을 방지.

 // 다시 마우스 왼쪽 키를 떼었다가 눌러야지 잠금이 풀림.

}

 

이상으로 햄 엔진을 이용한 간단한 마우스/키보드 입력 처리를 해보았습니다.

 

Thanks for reading this lecture.

?

  1. HeveyMetal 200% 설명보충 (웃김-_-)a

    Date2005.06.05 Category언어/기타 ByMoonMarsh Views1020
    Read More
  2. 성향게이지

    Date2005.09.15 Category언어/기타 By사토루 Views1020
    Read More
  3. 온라인 탈출&추리게임

    Date2006.05.10 Category언어/기타 By첫비 Views1019
    Read More
  4. 선행처리기 지시어. (#???)

    Date2006.09.30 Category언어/기타 By연지 Views1018
    Read More
  5. Ham Engine Library : 키보드 입력과 마우스 입력 처리

    Date2005.08.03 Category언어/기타 By하앙e Views1018
    Read More
  6. 이번에도 잡담입니다만-_-;;

    Date2007.01.01 Category언어/기타 By아란 Views1017
    Read More
  7. 스킬의 레벨제 도입

    Date2005.09.16 Category언어/기타 Byll김ll밥말이™ Views1011
    Read More
  8. 액알도 전투를 좀더 재밋게!

    Date2006.04.01 Category언어/기타 By다크아머 Views1006
    Read More
  9. [C++] template의 활용법

    Date2007.01.21 Category언어/기타 ByZeprod Views1006
    Read More
  10. 장소 이동을 하지 않고 집으로 들어가보자....

    Date2005.09.04 Category언어/기타 By야미토츠바사 Views1004
    Read More
  11. 그저 비주얼 베이직에 낚인 것에 대한 잡담

    Date2006.12.27 Category언어/기타 By아란 Views996
    Read More
  12. #pragma warning

    Date2006.08.20 Category언어/기타 By피군 Views995
    Read More
  13. 대기

    Date2007.01.08 Category언어/기타 By가다없는 Views994
    Read More
  14. 제 1 부 ! 도전 ! 나도 게임 만들 수 있다!

    Date2006.05.23 Category언어/기타 By다크세이버™ Views991
    Read More
  15. 액알 스킬 팁

    Date2005.09.11 Category언어/기타 By다크세이버™ Views982
    Read More
  16. [js] 코드 압축 걸음마

    Date2012.06.12 Category언어/기타 By Views982
    Read More
  17. 속성 작명법

    Date2005.10.16 Category언어/기타 By앞만보맨 Views979
    Read More
  18. 간단한 점프를 설정해볼까 ?

    Date2005.08.02 Category언어/기타 By다크세이버™ Views979
    Read More
  19. 오늘 개강.

    Date2006.08.29 Category언어/기타 By아란 Views968
    Read More
  20. Date2006.08.25 Category언어/기타 By초코군 Views967
    Read More
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 ... 36 Next
/ 36






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)