加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
GameMap.cpp 1.53 KB
一键复制 编辑 原始数据 按行查看 历史
Shaker 提交于 2014-08-12 21:17 . *提交到Git@OSC
#include "StdAfx.h"
#include "GameMir.h"
CGameMir::CGameMap::CGameMap(LPCTSTR mapfile) :
m_File(mapfile,CFile::modeRead|CFile::typeBinary|CFile::shareDenyWrite),
m_Maps(NULL),
m_MapData(NULL)
{
m_MapName.clear();
m_File.Seek(0,CFile::begin);
m_File.Read(&m_Head,sizeof(m_Head));
if(strcmp(m_Head.CopyRight,"#TurboMir#")!=0)
{
AfxMessageBox("華芞跡宒渣昫!");
throw "華芞跡宒渣昫!";
}
if(m_Maps!=NULL)
delete[]m_Maps;
m_Maps=new MAP_INDEX[m_Head.IdxCount];
m_File.Read(m_Maps,sizeof(MAP_INDEX)*m_Head.IdxCount);
}
CGameMir::CGameMap::~CGameMap(void)
{
if(m_Maps!=NULL)
delete[]m_Maps;
}
void CGameMir::CGameMap::LoadMap(LPCTSTR mapname)
{
for(unsigned long i=0;i<m_Head.IdxCount;i++)
{
if(strcmp(m_Maps[i].MapEnName,mapname)==0)
{
m_File.Seek(m_Maps[i].Offset,CFile::begin);
char Id[3];
m_File.Read(Id,3);
if((Id[0]=='S')&&(Id[1]=='H')&&(Id[2]=='K'))
{
m_File.Read(&m_MapWidth,4);
m_File.Read(&m_MapHeight,4);
long ds=(m_MapWidth*m_MapHeight+7)>>3;
if(m_MapData!=NULL)
delete[]m_MapData;
m_MapData=new BYTE[ds];
m_File.Read(m_MapData,ds);
m_MapName=mapname;
return;
}
else
{
AfxMessageBox("華芞跡宒渣昫!");
}
}
}
AfxMessageBox("華芞樓婥囮啖!");
}
bool CGameMir::CGameMap::TestMap(long x, long y)
{
if (m_MapData==NULL)
{
return false;
}
if ( x>0 && y>0 && x<m_MapWidth && y<m_MapHeight)
{
BYTE bits;
long index = y * m_MapWidth + x ;
bits = (~index) & 0x07;
index >>= 3;
BYTE d=m_MapData[index];
d>>=bits;
return (d&1)!=0;
}
return false;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化