소개글
재믹스 시절 즐겨하던 로드파이터 레이싱게임입니다.
아시죠 ? 가다가 부딪치면 좌우로 흔들면 살아나고 ... ㅎㅎ
아래는 소스 일부입니다.
//좌표를 넣은후에 -1999 ~ 1999 으로 만든다
nX = m_ptDatum.x, nY = m_ptDatum.y;
nX = nX % MAPSIZE, nY = nY % MAPSIZE;
if(nX <= -WINSIZEX) nX += MAPSIZE;
if(nX + WINSIZEX >= MAPSIZE) nX -= MAPSIZE;
if(nY <= -WINSIZEY) nY += MAPSIZE;
if(nY + WINSIZEY >= MAPSIZE) nY -= MAPSIZE;
//방향을 얻는다
DRT drt = GetDrt(nX, nY);
RECT rcSour;
switch(drt)
{
case DRT_CC:
SetRect(&rcSour, nX, nY, nX + WINSIZEX, nY + WINSIZEY);
m_Image[IMG_MAP].Output(m_Back, 0, 0, rcSour);
break;
case DRT_CT: //가운데위
SetRect(&rcSour, nX, MAPSIZE + nY, nX +WINSIZEX, MAPSIZE);
m_Image[IMG_MAP].Output(m_Back, 0, 0, rcSour);
SetRect(&rcSour, nX, 0, nX + WINSIZEX, WINSIZEY + nY);
m_Image[IMG_MAP].Output(m_Back, 0, -nY, rcSour);
break;
case DRT_LC: //왼쪽 가운데
SetRect(&rcSour, MAPSIZE + nX, nY, MAPSIZE, nY + WINSIZEY);
m_Image[IMG_MAP].Output(m_Back, 0, 0, rcSour);
SetRect(&rcSour, 0, nY, nX + WINSIZEX, WINSIZEY + nY);
m_Image[IMG_MAP].Output(m_Back, -nX, 0, rcSour);
break;
case DRT_LT: //왼쪽 위
SetRect(&rcSour, MAPSIZE + nX, MAPSIZE + nY, MAPSIZE, MAPSIZE);
m_Image[IMG_MAP].Output(m_Back, 0, 0, rcSour);
SetRect(&rcSour, 0, MAPSIZE + nY, nX + WINSIZEX, MAPSIZE);
m_Image[IMG_MAP].Output(m_Back, -nX, 0, rcSour);
SetRect(&rcSour, nX + MAPSIZE, 0, MAPSIZE, nY + WINSIZEY);
m_Image[IMG_MAP].Output(m_Back, 0, -nY, rcSour);
SetRect(&rcSour, 0, 0, nX + WINSIZEX, nY + WINSIZEY);
m_Image[IMG_MAP].Output(m_Back, -nX, -nY, rcSour);
break;
}
}
컴파일 실행환경
비주얼 씨뿔뿔 6.0
참고 자료
윈도우즈 API 완전정복 - 가남사