📄 tworld.h
字号:
// TWorld.h: interface for the TWorld class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_TWORLD_H__B7D4170F_52C9_439A_A000_FC78C9786D40__INCLUDED_)
#define AFX_TWORLD_H__B7D4170F_52C9_439A_A000_FC78C9786D40__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "TLink.h"
#include "TTank.h"
typedef BYTE TERRAIN_INDEX;
typedef BYTE OBSTACLE_ID;
#define MAP_ID 0x004D4757
#define TERRAIN_WIDTH 48
#define TERRAIN_HEIGHT 48
#define OBSTACLE_WIDTH 24
#define OBSTACLE_HEIGHT 24
class TWorld
{
//玩家对象
TPlayerTank * m_pPlayer[1];
//链表对象
TLink m_EnemyTankLink;
TLink m_BonusLink;
TLink m_ObstacleLink;
TLink m_BulletLink;
TLink m_ExplodeLink;
//游戏世界的高度与宽度
INT32 m_nWorldWidth;
INT32 m_nWorldHeight;
INT32 m_nMaxHorzTerrain; //游戏世界水平方向可容纳最大地形数
INT32 m_nMaxVertTerrain; //游戏世界垂直方向可容纳最大地形数
TERRAIN_INDEX * m_pTerrainMap ; //地形地图
OBSTACLE_ID * m_pObstacleMap; //障碍地图
//可视区左上角对应的设备坐标
INT32 m_nViewportOriginX;
INT32 m_nViewportOriginY;
//可视区左上角对应的游戏世界坐标
INT32 m_nViewportTop;
INT32 m_nViewportLeft;
//可视区大小
INT32 m_nViewportWidth;
INT32 m_nViewportHeight;
//地形图像对象
static EGroupPic m_grp_terrain;
//图标对象
static EPG m_epg_icon[3];
//关数
int m_nStage;
public:
//移动所有的精灵
//------------------------------------------
BOOL Move();
//逻辑坐标转换到设备坐标
//---------------------------------------------
void LPToDP(POINT& pt);
void LPToDP(RECT& rc);
//画出所有的精灵
//---------------------------------------------
void DrawWorld();
//设置可视区原点坐标
//-------------------------------------------------
void SetViewport(int x,int y);
//滚动可视区
//-------------------------------------------------
void ScrollViewport(int x,int y);
//取得可视区的逻辑坐标
//--------------------------------------------------
void GetViewportRect(RECT& rect);
//设置可视区位置、高度和宽度
//-----------------------------------------------------------
void SetupViewport(int origin_x,int origin_y,int width, int height);
//删除旧的游戏世界
//-------------------------------------------------------------
void DestroyWorld();
//创建一个新游戏世界
//------------------------------------------------------------
BOOL CreateWorld(EDataFile * pDat);
//加载一个新剧本
//-----------------------------------------------------------
BOOL LoadStage(int nStage,EDataFile * pDat);
BOOL NextStage(EDataFile * pDat) { return LoadStage((++m_nStage%4),pDat);}
//加载地形图像文件
//--------------------------------------------------------------
static BOOL LoadTerrainPicture(LPCSTR szGrpFile,EDataFile* pDat);
//加载图标文件
//--------------------------------------------------------------
static BOOL LoadIconPicture(LPCSTR szGrpFile,int nIndex,EDataFile* pDat);
//释放资源
//--------------------------------------------
static void DestroyResource();
//返回奖励对象链表
//----------------------------------------------------------------
TLink& BonusLink(){return m_BonusLink;}
//返回敌军坦克对象链表
//---------------------------------------------------------------
TLink& EnemyTankLink(){return m_EnemyTankLink;}
//返回障碍物对象链表
//--------------------------------------------------------------
TLink& ObstacleLink(){return m_ObstacleLink;}
//返回子弹对象链表
//---------------------------------------------------------------
TLink& BulletLink() { return m_BulletLink;}
//返回爆炸类链表
//----------------------------------------------------------
TLink& ExplodeLink() { return m_ExplodeLink;}
//返回障碍地图
//----------------------------------------------------------
OBSTACLE_ID * ObstacleMap(){return m_pObstacleMap;}
//返回障碍地图上指定坐标的障碍ID
//-----------------------------------------------------------
OBSTACLE_ID ObstacleMap(int x,int y){return m_pObstacleMap[x+y*2*m_nMaxHorzTerrain];}
//返回游戏世界的宽度和高度
//-------------------------------------------------------------
INT32 GetWidth(){return m_nWorldWidth;}
INT32 GetHeight(){return m_nWorldHeight;}
//返回指定的玩家对象
//-------------------------------------------------------------
TPlayerTank * Player(int i) { return m_pPlayer[i]; }
//构造函数与析构函数
//------------------------------------------------------------
TWorld();
virtual ~TWorld();
};
//============================================
//全局变量g_world声明
//--------------------------------------------
extern TWorld g_world;
#endif // !defined(AFX_TWORLD_H__B7D4170F_52C9_439A_A000_FC78C9786D40__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -