mymap.cpp

来自「一款45度2D游戏地图编辑器和大家一起分享啊!」· C++ 代码 · 共 105 行

CPP
105
字号
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//                 保存地图信息的类,很简单,只做演示
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

#include "stdafx.h"
#include "45MapMaker.h"
#include "MyMap.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMyMap::CMyMap()
{
	height = width = 0;
	arr1 = NULL;
	arr2 = NULL;
}
void CMyMap::set(int x,int y,int a,int b)//地图宽度,地图高度,图块宽度,图块高度
{
	height =y;
	width =x;
	blockw = a;
	blockh = b;
	arr1 = new short int[width*height];
	arr2 = new short int[width*height];
	for(int i=0;i<width*height;i++)
	{
		*(arr1+i)=1;
		*(arr2+i)=0;
	}
}

bool CMyMap::LoadMap(CString file) //读取文件
{
	CFile pf;
	short int w,h;

	if(!pf.Open(file,CFile::modeRead))//只读
	{
		AfxMessageBox("打开文件失败");
		return 0;
	}
	pf.Read(&w,sizeof(short int));
	pf.Read(&h,sizeof(short int));
	pf.Read(&blockw,sizeof(short int));
	pf.Read(&blockh,sizeof(short int));
	width = w;
	height = h;
	if(arr1!=NULL)
		delete[] arr1;
	if(arr2!=NULL)
		delete[] arr2;
	arr1 = new short int[width*height];
	arr2 = new short int[width*height];
	pf.Read((arr1),width*height*sizeof(short int));
	pf.Read((arr2),width*height*sizeof(short int));
	pf.Close();	
	return true;
}

bool CMyMap::SaveMap(CString file)
{
	CFile pf;
	if(!pf.Open(file,CFile::modeCreate|CFile::modeWrite)){
		AfxMessageBox("保存失败!");
		return 0;
	}
	pf.Write(&width,sizeof(short int));
	pf.Write(&height,sizeof(short int));
	pf.Write(&blockw,sizeof(short int));
	pf.Write(&blockh,sizeof(short int));
	pf.Write(arr1,height*width*sizeof(short int));
	pf.Write(arr2,height*width*sizeof(short int));
	pf.Close();
	return true;
}

CMyMap::CMyMap(CMyMap& a)
{
	height = a.height;
	width = a.width;
	blockw = a.blockw;
	blockh = a.blockh;
	arr1 = new short int[width*height];
	arr2 = new short int[width*height];
	memcpy(arr1,a.arr1,height*width*sizeof(short int));
	memcpy(arr2,a.arr2,height*width*sizeof(short int));
}


CMyMap::~CMyMap()
{
	if(arr1!=NULL)
		delete[] arr1;
	if(arr2!=NULL)
		delete[] arr2;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?