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

📄 main.h

📁 圣剑二完整的游戏代码。附作者写的三篇文章。游戏的开发过程
💻 H
字号:
//********************************************
//	主模块 相关函数
//  创建于2000年4月10日
//********************************************
#include <ddraw.h>

#define ScreenWidth	640		//游戏区宽度
#define ScreenHeight 480	//游戏区高度
#define CellWidth 32		//单个格子的宽度
#define CellHeight 32		//单个格子的高度

//#define _grid_x(x)	((x)/CellWidth)	//计算x点所处的格子
//#define _grid_y(y)	((y)/CellHeight)	//计算y点所处的格子
//#define _point_x(x)	((x)*CellWidth)	//计算X格子的绝对坐标
//#define _point_y(y) ((y)*CellHeight)	//计算Y格子的绝对坐标

#define _grid_x(x)	((x)>>5)	//计算x点所处的格子
#define _grid_y(y)	((y)>>5)	//计算y点所处的格子
#define _point_x(x)	((x)<<5)	//计算X格子的绝对坐标
#define _point_y(y) ((y)<<5)	//计算Y格子的绝对坐标

//游戏当前状态
enum ePLAYSTATE{
	PS_Null=0,		//空循环
	PS_MAIN=1,		//主循环
	PS_DIALOG,		//对话
	PS_SCROLLMAP,	//卷动地图
	PS_EDIT,		//编辑器主循环
	PS_FIGHT,		//战斗
};

//显示状
enum eDISPLAYSTATE{
	DS_NORMAL=0,	//正
	DS_NIGHT		//夜晚
};

/////////////////////////////////
//通用变量
/////////////////////////////////
class CMouse;
class CKey;

extern enum ePLAYSTATE g_ePlayState;		//当前状态
extern enum eDISPLAYSTATE g_eDisplayState;	//当前显示模式

extern LPDIRECTDRAWSURFACE lpDDSSour, lpDDSTemp;
extern LPDIRECTDRAWSURFACE lpDDSTools;		// 编辑器专用图素页面
extern LPDIRECTDRAWSURFACE lpDDSBackGround;	// 背景页面
extern LPDIRECTDRAWSURFACE *lpDDSMap;		// 地图地面页面

extern bool bShowFps;				//是否显示FPS
extern POINT point;					//鼠标坐标
extern int cx,cy;					//鼠标格子

extern int StartX,StartY;			//主区起始坐标
extern int EndX,EndY;				//主区结束坐标
extern int MainWidth,MainHeight;	//主区大小
extern int ShowCellW, ShowCellH;	//显示区域格子数

class CScript;
class CMessage;
class CEvents;
class CTitle;
class CMenu;
class CMap;
class CGpFont;
class CRole;
class CTalk;
class CEmote;
class CIniSet;
class CMsgWindow;
class CFight;

extern int RoleNum;				//主角数量(1-4)

extern CIniSet GameIni;			//游戏配置文件
extern CScript Script;			//游戏脚本机
extern CMessage Message;		//消息处理机
extern CEvents Events;			//特殊事件
extern CTitle Title;			//封面
extern CMenu Menu;				//菜单
extern CMap map;				//地图
extern CGpFont font;			//字体对象
extern CRole role[4];			//人物
extern CTalk talk;				//对话
extern CEmote emote;			//表情
extern CMsgWindow GameMessage;	//游戏消息框
extern CSound Sound;			//音效
extern CMusic Music;			//背景音乐
extern char CurrentPath[MAX_PATH];		//当前工作目录
extern unsigned mouse, key, joystick;	//鼠标、键盘和手柄的缓冲区数据接受
extern bool bControl;			//是否可控制
extern CFight Fight;			//战斗

extern int NowTick, OldTick, DelayTick;	//控速
extern int CurrentNpc;					//当前鼠标指向的NPC编号(-1=NULL)

///////////////////////////////////////////////////
//函数列表
///////////////////////////////////////////////////
void NewGame();					//新游戏初始化数据
void GetInputData();			//获取输入信息
void GameLoop();				//游戏主循环
void UpdateScreen_Dialog(LPDIRECTDRAWSURFACE);				//更新屏幕-对话
void ShowMouseCursor(LPDIRECTDRAWSURFACE lpSurf=lpDDSBack, bool Normal=true);	//画鼠标光标
void GetPrimarySurface(LPDIRECTDRAWSURFACE surf);			//把当前屏幕复制到后台表面
void GetGameSurface(LPDIRECTDRAWSURFACE surf);				//把游戏画面复制到一个表面上(不画鼠标和FPS等)

⌨️ 快捷键说明

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