성엽이
KKIMSSI
성엽이
전체 방문자
오늘
어제
  • 분류 전체보기 (454)
    • :) (2)
    • C프로그래밍이론 (9)
    • C++프로그래밍 (64)
      • STL (1)
    • C# (2)
    • Visual studio 10.0 (9)
    • AT91SAM7S256 (21)
    • 논리회로 (14)
    • AVR2560 (11)
    • TCPIP (16)
    • NetWork (4)
      • Ubuntu Linux (2)
    • Assembly (21)
    • UNIX 프로그래밍 (6)
    • RFID 분석 (1)
    • Win32 API (7)
    • Cortex-M3 (4)
    • Unity (91)
    • Flutter (9)
    • OwnProject (11)
      • It's mine (5)
      • 마인드스톰 실습 (1)
      • 보고서 자료 (2)
      • RPi B+ (2)
    • ETC (25)
      • 상식 (3)
    • MFC (40)
    • PostgeSQL (18)
    • 영상제어 (6)
      • VFW_영상처리 (1)
    • Python (0)
    • Java (30)
      • SpringBoot (2)
      • Javascript (1)
      • JSP (13)
      • Spring (8)
    • Oracle (4)
      • SQL (3)
    • HTML (6)
      • Thymeleaf (1)
      • CSS (1)
      • Bootstrap (3)
    • IDE (1)
      • VS Code (1)
    • Android (2)
    • Privacy Policy (0)
    • MYSQL (2)
      • MariaDB (2)
    • AWS (5)
    • 개인공부 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자
  • 글쓰기

공지사항

인기 글

태그

  • Boot Code 분석
  • ARM Reverse Engineering
  • WINAPI
  • MFC
  • 문자열 나누기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
성엽이
Win32 API

2013.10.30 _ 충돌체크하기 _ Galag 에서 _

Win32 API

2013.10.30 _ 충돌체크하기 _ Galag 에서 _

2013. 10. 30. 17:47


 충돌체크 소스


#define CRASH      TRUE
#define NOT_CRASH  FALSE

enum
{
  JINX,
  JINX_BOOM,
  ENEMY1,
  MY_BULLET,
  E_BULLET,
  ENDTYPE,
};

// 상태위치
typedef struct _status
{
  unsigned int  uiPos_X;  // X 좌표 
  unsigned int  uiPos_Y;  // Y 좌표 
  unsigned int  uiSizeX;  // X 크기
  unsigned int  uiSizeY;  // Y 크기
}STATUS;

STATUS  stStats[ENDTYPE] = {
  {0,0,CHAR_X_SIZE,CHAR_Y_SIZE},
  {0,0,BOOM_X_SIZE,BOOM_Y_SIZE},
  {0,0,MINION1_X_SIZE,MINION1_Y_SIZE},
  {0,0, 4, 8},
  {0,0, 4, 8},
};

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 구조체 부분

 

// 충돌체크

int UnitCrash(const STATUS *stpUNIT1, const STATUS *stpUNIT2)
{
  //X1 = stpUNIT1->uiPos_X
  //X2 = stpUNIT1->uiPos_X + stpUNIT1->uiSizeX
  //Y1 = stpUNIT1->uiPos_Y
  //Y2 = stpUNIT1->uiPos_Y + stpUNIT1->uiSizeY
  
  //XX1 = stpUNIT2->uiPos_X
  //XX2 = stpUNIT2->uiPos_X + stpUNIT1->uiSizeX
  //YY1 = stpUNIT2->uiPos_Y
  //YY2 = stpUNIT2->uiPos_Y + stpUNIT1->uiSizeY
  
  //  충돌 안하는 조건
  //  캐릭터의 상단과 총알의 하단이 부딪힐 확률
  if( stpUNIT1->uiPos_Y > stpUNIT2->uiPos_Y + stpUNIT2->uiSizeY )  
  {
    return NOT_CRASH;
  }

  //  캐릭터의 하단과 총알의 상단이 부딪힐 확률
  if( stpUNIT1->uiPos_Y + stpUNIT1->uiSizeY < stpUNIT2->uiPos_Y )
  {
    return NOT_CRASH;
  }

  //  캐릭터의 왼쪽과 총알의 오른쪽이 부딪힐 확률
  if( stpUNIT1->uiPos_X > stpUNIT2->uiPos_X + stpUNIT2->uiSizeX)
  {
    return NOT_CRASH;
  }

  //  캐릭터의 오른쪽과 총알의 왼쪽이 부딪힐 확률  

  if( stpUNIT1->uiPos_X + stpUNIT1->uiSizeX < stpUNIT2->uiPos_X )
  {
    return NOT_CRASH;
  }
  
  return CRASH;
}


    

    // 충돌 체크 

    if( CRASH == UnitCrash(&stStats[JINX],&stStats[E_BULLET]) )
    {
      Character = Bitmap_JINX_BOOM;
      break;
    }

  : 충돌시에 return 값이 1(CRASH)을 반환해주므로 Character 가 들고있는 Bitmap(IDLE) 을 
Bitmap_JINX_BOOM(DEATH) 으로 바꿔서 저장한다.

     


저작자표시

'Win32 API' 카테고리의 다른 글

2013.10.23 _ Sokoban 연습  (0) 2013.10.23
2013.10.23_ API _ Bitmap 분석해보기  (0) 2013.10.23
2013.10.14_API_Control(체크박스/라디오박스)  (0) 2013.10.14
2013.10.04 _ API 정리 자료 ( 입력/출력 부분 )  (0) 2013.10.08
2013.10.07 _ API 정리 자료 ( SendMessage , CallBack 함수 )  (0) 2013.10.08
    'Win32 API' 카테고리의 다른 글
    • 2013.10.23 _ Sokoban 연습
    • 2013.10.23_ API _ Bitmap 분석해보기
    • 2013.10.14_API_Control(체크박스/라디오박스)
    • 2013.10.04 _ API 정리 자료 ( 입력/출력 부분 )
    성엽이
    성엽이

    티스토리툴바

    개인정보

    • 티스토리 홈
    • 포럼
    • 로그인

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.