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

📄 gamez.cpp

📁 成熟的RPG引擎,Flysky发布. 斜视角引擎.
💻 CPP
字号:
#include "GameH.h"
//有限状态机
CFont fontv; //字体引擎
BOOL CEngine::Init()
{
	m_GameState=GAME_AVI;
	return TRUE;
}
void CEngine::GameLoop()
{
switch(m_GameState)
{
case GAME_AVI:
	Game_LOGO();
	break;

case GAME_LOADG:
	RunGame=false;  //表明不是游戏状态
	IsMouse=false;
	Clrscr(lpDDS[1],0);
	sprintf(tmpc,"%s%s",PicPath,MousePic); //格式化输出
	DDReLoadBitmap(lpDDS[3],tmpc); //鼠标指针
	sprintf(tmpc,"%s%s",PicPath,TileCPic); //格式化输出
	map.SetTileMouse(tmpc); //读取Tile鼠标
	sprintf(tmpc,"%s%s",PicPath,MenuPic); //格式化输出
	DDReLoadBitmap(lpDDS[6],tmpc);  //菜单图标
	tile.LoadForIni(TILE_INI); //读取图素INI文件
	RunMessage(MS_RUNSCRIPT,0,INIT_SCRIPT,0,0,0,0,NULL,0); //运行脚本
	m_GameState=GAME_BEGIN;
	break;

case GAME_BEGIN:
    BeginGame();
	break;

case GAME_RESTGAME:
	RunMessage(MS_RUNSCRIPT,0,START_SCRIPT,0,0,0,0,NULL,0); //运行脚本
    m_GameState=GAME_LOADMAP;
	break;
case GAME_LOADMAP:
	Clrscr(lpDDS[1],0);
	strcpy(tmpc,ScriptPath);
	strcat(tmpc,map.ScrFName);
	cscript.LoadScript(tmpc);
	XGameLoop(lpDDS[1]);
	RunGame=true;  //表明开始游戏了
	m_GameState=GAME_RUNGAME;
break;
case GAME_RUNGAME:
	RunGame=true;  //表明开始游戏了
	//if (KEYSTATE(VK_ESCAPE)==true){RunMessage(MS_Close,0,NULL,0,0,0,0,NULL,0);}
	if (KEYSTATE(VK_ESCAPE)==true){KeyClear(VK_ESCAPE);m_GameState=GAME_MENU;}
	if (role.GetActorNum()>0)
	{
		if (KEYSTATE(VK_RETURN)==true){ZeroMemory(tmpc,MAX_PATH);sprintf(tmpc,"%s%s",ScriptPath,role.GetRoleScriptName());cscript.LoadScript(tmpc);}
	    if (KEYSTATE(VK_SPACE)==true) {ZeroMemory(tmpc,MAX_PATH);sprintf(tmpc,"%s%s",ScriptPath,role.GetRoleScriptName());cscript.LoadScript(tmpc);}
	}
	if (KEYSTATE(VK_LEFT)==true){RunMessage(MS_KEYDOWN,LeftFace,NULL,0,0,0,0,NULL,0);}
	else if (KEYSTATE(VK_RIGHT)==true){RunMessage(MS_KEYDOWN,RightFace,NULL,0,0,0,0,NULL,0);}
	else if (KEYSTATE(VK_UP)==true){RunMessage(MS_KEYDOWN,UpFace,NULL,0,0,0,0,NULL,0);}
	else if (KEYSTATE(VK_DOWN)==true){RunMessage(MS_KEYDOWN,DownFace,NULL,0,0,0,0,NULL,0);}
	else if (KEYSTATE(VK_LBUTTON)==true){KeyClear(VK_LBUTTON);RunMessage(MS_MOUSEDOWN,0,NULL,0,0,0,0,NULL,0);}
	Clrscr(lpDDS[1],0);
	Tick();
	XGameLoop(lpDDS[1]);
	IsMouse=true;
break;

case GAME_MENU:
	RunGame=false;  //表明不是游戏状态
	SystemMenu();
	IsMouse=true;
	break;

case GAME_LOADLIST:
	RunGame=false;  //表明不是游戏状态
	GameLoadList();
    IsMouse=true;
	break;

case GAME_EXIT:
    IsMouse=true;
	break;
}
	PrintMouse(lpDDS[1],lpDDS[DDS_Mouse]); //画鼠标 必须
}

bool tmp=false;
void CEngine::BeginGame()
{
int DMenu=-1;
RunGame=false;  //表明不是游戏状态
BltFast(lpDDS[1],0,0,lpDDS[6],NULL,SrcKey);
menu.ReInit(ScreenWidth>>1,ScreenHeight>>1);
menu.SetBTextFont(false,19,"新宋体");
menu.AddButton(-40,-60,"开 始 游 戏",Clicksound);
menu.AddButton(-40,-30,"读 取 进 度",Clicksound);
menu.AddButton(-40,0,"退 出 游 戏",Clicksound);
DMenu=menu.Show(lpDDS[1]);
if (DMenu==0) {m_GameState=GAME_RESTGAME;}
if (DMenu==1){m_GameState=GAME_LOADLIST;}
if (DMenu==2){ RunMessage(MS_Close,0,NULL,0,0,0,0,NULL,0);}
//Alpha 混合
Clrscr(lpDDS[DDS_Alpha],0);
if (tmp!=true) tmp=NTLight(lpDDS[1],lpDDS[DDS_Alpha],NULL);
if (KEYSTATE(VK_ESCAPE)==true){RunMessage(MS_Close,0,NULL,0,0,0,0,NULL,0);}
IsMouse=true;
}
void CEngine::Game_LOGO()
{
	RECT LogoPic1={0,0,377,297};
	RunGame=false;  //表明不是游戏状态
	Clrscr(lpDDS[1],RGB16(255,255,255));
	IsMouse=false;
	strcpy(tmpc,PicPath); strcat(tmpc,LogoPic);
	LoadBitmapSG(lpDDS[7],tmpc,&LogoPic1,&LogoPic1); //Logo 文件读取
	BltFast(lpDDS[1],((ScreenWidth-1)>>1)-(LogoPic1.right>>1),((ScreenHeight-1)>>1)-(LogoPic1.bottom>>1),lpDDS[7],&LogoPic1,NoKey); //Logo贴入
	//Alpha 混合
	CreateRect(tmpr,((ScreenWidth-1)>>1)-(LogoPic1.right>>1),((ScreenHeight-1)>>1)-(LogoPic1.bottom>>1),
		((ScreenWidth-1)>>1)+(LogoPic1.right>>1),((ScreenHeight-1)>>1)+(LogoPic1.bottom>>1)); //初始化部分Alpha
	if (NTLightTN(lpDDS[1],lpDDS[DDS_Alpha],&tmpr)==true) { m_GameState=GAME_LOADG;}
	if (LDown==true) { m_GameState=GAME_LOADG;}
}
void CEngine::GameLoadList()
{
Clrscr(lpDDS[DDS_Alpha],0);
//lpDDS[1]->BltFast(0,0,lpDDS[6],NULL,SrcKey);
BltFast(lpDDS[1],0,0,lpDDS[6],NULL,SrcKey);
fontv.SetFont(19,"新宋体");
fontv.SetColor(RGB(255,0,128));
fontv.PrintText(lpDDS[1],(ScreenWidth>>1)-40,(ScreenHeight>>1)-60,"开 始 游 戏");
fontv.PrintText(lpDDS[1],(ScreenWidth>>1)-40,(ScreenHeight>>1)-30,"读 取 进 度");
fontv.PrintText(lpDDS[1],(ScreenWidth>>1)-40,(ScreenHeight>>1),"退 出 游 戏");
if (RDown==true&&LDown==false) {m_GameState=GAME_BEGIN;}

}

void CEngine::SystemMenu()
{
  int DMenu=-1;
  const int Lx=58; //从58开始
  const int Rx=335; //从335开始
  //|-----------------|
  //|      |          |
  //|      |          |
  //|      |          |
  //|-----------------|
  Clrscr(lpDDS[1],0);
  DDReLoadBitmap(lpDDS[1],"pic\\MenuBGP.bmp");
  menu.ReInit(Lx,0);
  menu.SetBTextFont(false,19,"新宋体");
  menu.AddButton(0,235,"状  态",Clicksound);
  menu.AddButton(0,265,"物  品",Clicksound);
  menu.AddButton(0,295,"法  术",Clicksound);
  menu.AddButton(0,325,"特  殊",Clicksound);
  menu.AddButton(0,355,"帮  助",Clicksound);
  menu.AddButton(0,385,"返  回",Clicksound);
  menu.AddButton(0,415,"退  出",Clicksound);
  DMenu=menu.Show(lpDDS[1]);
    //判断
  if (DMenu==0) {i_SystemMenuValue=1;} //状态菜单
  if (DMenu==1) {i_SystemMenuValue=2;} //物品菜单
  if (DMenu==2) {i_SystemMenuValue=3;} //法术菜单
  if (DMenu==3) {i_SystemMenuValue=4;} //特殊菜单
  if (DMenu==5) {m_GameState=GAME_RUNGAME;}
  if (DMenu==6) {RunMessage(MS_Close,0,NULL,0,0,0,0,NULL,0);}
  //右面部分实现
  if (i_SystemMenuValue==1)
  {
	  fontv.SetFont(13,"宋体");
	  fontv.SetColor(RGB(255,0,128));
	  fontv.bChangeColor=true;
	  //fontv.PrintText(lpDDS[1],Rx,100,);

  }
 }

⌨️ 快捷键说明

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