⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emap.h

📁 一个另类的坦克大战源程序
💻 H
字号:
// EMap.h: interface for the EMap class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_EMAP_H__A45278C7_3D54_4FD7_8D59_B5D7BDE1613D__INCLUDED_)
#define AFX_EMAP_H__A45278C7_3D54_4FD7_8D59_B5D7BDE1613D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define MAP_ID							0x004D4757

#define TERRAIN_WIDTH					48
#define TERRAIN_HEIGHT					48
#define OBSTACLE_WIDTH					24
#define OBSTACLE_HEIGHT					24
#define DEFAULT_TERRAIN_INDEX			0
#define NOT_OBSTACLE					0

enum TILE_CORNER {
	CORNER_LEFT_TOP=3,	//左上角
	CORNER_RIGHT_TOP=2,	//右上角
	CORNER_LEFT_BOTTOM=1,	//左下角
	CORNER_RIGHT_BOTTOM=0	//右下角
};

typedef DWORD		TILE_ID;
typedef BYTE		TERRAIN_INDEX;
typedef BYTE		CORNER_ID;
typedef BYTE		OBSTACLE_INDEX;
typedef BYTE		OBSTACLE_ID;

#define INVALID_TERRAIN_ID			((TILE_ID)0X00)
#define INVALID_TERRAIN_INDEX		((TERRAIN_INDEX)0XFF)
#define INVALID_OBSTACLE_ID			((OBSTACLE_ID)0X00)
#define INVALID_OBSTACLE_INDEX		((OBSTACLE_INDEX)0xFF)

#define OBSTACLE_CORNER_FLAG		(0X80)
#define IS_OBSTACLE_CORNER(corner_id)  (corner_id&OBSTACLE_CORNER_FLAG)
#define MAKE_OBSTACLE_VALUE(corner_id) (corner_id|0X80)
#define IS_TERRAIN_OBSTACLE(obstacle_id) (obstacle_id&0x80)

union TERRAIN_ID
{
	TILE_ID	TileID;
	CORNER_ID CornerID[4];

	TERRAIN_ID(TILE_ID tile_id){TileID=tile_id;}
	TERRAIN_ID(){};
	friend BOOL operator == (TERRAIN_ID first,TERRAIN_ID second);
	friend BOOL operator == (TERRAIN_ID first,TILE_ID second);
	friend BOOL operator == (TILE_ID first,TERRAIN_ID second);

	friend BOOL operator != (TERRAIN_ID first,TILE_ID second);

};

class EMap
{
	DWORD	m_dwID;
	//____________________________________________
	//width & height of tiles map,But 
	//the width & height of obstacle map are double of it 
	INT32 m_nWidth,m_nHeight;

	TERRAIN_ID * m_pTerrain_map;
	OBSTACLE_ID * m_pObstacle_map;

public:
	EMap();
	virtual ~EMap();
	INT Width(){return m_nWidth;}
	INT Height(){return m_nHeight;}
	
	BOOL Create(int p_nWidth,int p_nHeight,TERRAIN_INDEX p_Terrain=DEFAULT_TERRAIN_INDEX);
	
	void Destroy();

	TERRAIN_ID * TerrainMap(){return m_pTerrain_map;}

	OBSTACLE_ID * ObstacleMap(){return m_pObstacle_map;}

	friend class CMapDoc;
};

#endif // !defined(AFX_EMAP_H__A45278C7_3D54_4FD7_8D59_B5D7BDE1613D__INCLUDED_)

⌨️ 快捷键说明

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