📄 game_grid.cpp
字号:
#include "runner_game.h"
BOOL GAME_GRID::Init(int bGridType ,
int iGridSizeX , int iGridSizeY ,
int iGridWidth , int iGridHeight)
{
m_bGridType = bGridType;
m_iGridSizeX = iGridSizeX;
m_iGridSizeY = iGridSizeY;
m_iGridWidth = iGridWidth;
m_iGridHeight = iGridHeight;
iAttrSize = m_iGridWidth * m_iGridHeight;
iWorldWidth = m_iGridWidth * m_iGridSizeX;
iWorldHeight = m_iGridHeight * m_iGridSizeY;
GetMemory(m_pbAttr , BYTE , iAttrSize);
if(m_pbAttr==NULL)
{
Out("ERR : %s\n" , "m_pbAttr Alloc Failed!");
return FALSE;
}
ClearAttr();
return TRUE;
}
VOID GAME_GRID::SetBorderValue(BYTE bValue)
{
if(m_pbAttr==NULL) return;
int x , y;
LPBYTE pbAttr;
// top
pbAttr = m_pbAttr;
for(x = 0 ; x < m_iGridWidth ; x++) *(pbAttr + x) = bValue;
// bottom
pbAttr = m_pbAttr + (m_iGridHeight - 1) * m_iGridWidth;
for(x = 0 ; x < m_iGridWidth ; x++) *(pbAttr + x) = bValue;
// left
pbAttr = m_pbAttr;
for(y = 0 ; y < m_iGridHeight ; y++) { *pbAttr = bValue; pbAttr+=m_iGridWidth; }
// right
pbAttr = m_pbAttr + m_iGridWidth - 1;
for(y = 0 ; y < m_iGridHeight ; y++) { *pbAttr = bValue; pbAttr+=m_iGridWidth; }
}
LPRECT GAME_GRID::WorldRectToGridRect(RECT rcWorld , LPRECT prcGrid)
{
RECT rcGridWorld;
rcGridWorld.left = 0;
rcGridWorld.top = 0;
rcGridWorld.right = iWorldWidth;
rcGridWorld.bottom = iWorldHeight;
RECT rcInter;
if(IntersectRect(&rcInter , &rcWorld , &rcGridWorld)==NULL)
{
prcGrid = NULL;
return NULL;
}
prcGrid->left = rcInter.left / m_iGridSizeX;
prcGrid->top = rcInter.top / m_iGridSizeY;
prcGrid->right = rcInter.right / m_iGridSizeX;
prcGrid->bottom = rcInter.bottom / m_iGridSizeY;
if(prcGrid->right==m_iGridWidth)
{
prcGrid->right-=1;
}
if(prcGrid->bottom==m_iGridHeight)
{
prcGrid->bottom-=1;
}
//Out("rcInter top = %d\n" , rcInter.top);
return prcGrid;
}
BOOL GAME_GRID::LoadAttrFromFile(TCHAR *strFileName)
{
if(m_pbAttr==NULL) return FALSE;
FILE *fp = fopen(strFileName , "rb");
if(fp==NULL)
{
Out("ERR : %s\n" , "Load Attr File Failed!");
return FALSE;
}
fread(m_pbAttr , iAttrSize , 1 , fp);
fclose(fp);
return TRUE;
}
VOID GAME_GRID::SaveAttrFile(TCHAR *strFileName)
{
if(m_pbAttr==NULL) return ;
FILE *fp = fopen(strFileName , "wb");
fwrite(m_pbAttr , iAttrSize , 1 , fp);
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -