📄 header.cpp
字号:
//==================片头模块=================
void ShowMenu(int x, int y, int MenuIt, char *MainMenu[], int Num, DWORD FontColor=RGB(0,0,0), DWORD BackColor=RGB(255,255,0));
void InitGameData();
//****************
//游戏字幕
void GameHeader(char *chr, DWORD color=RGB(255,255,255))
{
char tmp[1000];
PressKey(VK_RETURN,1);
for(unsigned int i=0; i<strlen(chr); i++)
{
memset(tmp, 0, 1000);
memcpy(tmp, chr, i);
PrintText(lpDDSPrimary, 40,100,tmp, color);
Delay(80);
if( GetAsyncKeyState(VK_RETURN) ) return;
}
PressKey(VK_RETURN);
}
//*******************************************
//游戏片头
void GameTitle()
{
int MenuIt=0;
int flag=1;
int x=16,y=380;
char *MainMenu[]={"新游戏","读进度","退 出"};
//读取地图数据
if( !LoadMaps() )
{
MessageBox(GetActiveWindow(), "地图文件出错","error",MB_OK);
FreeDDraw();
return ;
}
//读取NPC数据
LoadNpcData(0);
//初始化游戏数据
InitGameData();
//显示片头
PressKey(VK_RETURN,1);
if( SoundAble==TRUE )
{
char buf[256];
mciSendString("close all", buf, sizeof(buf), NULL);
mciSendString("open voc\\title.mid",buf,sizeof(buf),NULL);
mciSendString("play voc\\title.mid", buf, sizeof(buf), NULL);
}
Clrscr();
lpDDPal->SetEntries(0,0,256,TitlePal);
DDReLoadBitmap(lpDDSBackGround,"pic\\title.bmp");
lpDDPal->SetEntries(0,0,256,NullPal);
rect=GetRect(0,0,ScreenX,ScreenY);
Blt(lpDDSPrimary, 0,0, lpDDSBackGround, rect, FALSE);
ChangePalette(NullPal, TitlePal, 1); //淡出
ShowMenu(x, y, MenuIt, MainMenu, 3, RGB(255,255,255));
while(flag)
{
if( GetAsyncKeyState(VK_DOWN) ) //下一项
{
PressKey(VK_DOWN,1);
MenuIt=(MenuIt+1)%3;
ShowMenu(x, y, MenuIt, MainMenu, 3, RGB(255,255,255));
}
if( GetAsyncKeyState(VK_UP) ) //上一项
{
PressKey(VK_UP,1);
if( MenuIt==0 ) MenuIt=2;
else MenuIt--;
ShowMenu(x, y, MenuIt, MainMenu, 3, RGB(255,255,255));
}
if( GetAsyncKeyState(VK_RETURN) ) //确定
{
while( GetAsyncKeyState(VK_RETURN) ) {}
switch( MenuIt )
{
case 0: //新游戏
flag=0;
break;
case 1: //读进度
if( LoadGame()==TRUE )
{
ChangePalette(TitlePal, NullPal, -1);
MainMove();
Flip();
ChangePalette(NullPal, MainPal, 1);
if( SoundAble==TRUE )
{
char buf[256];
mciSendString("close all", buf, sizeof(buf), NULL);
mciSendString("open voc\\back.mid",buf,sizeof(buf),NULL);
mciSendString("play voc\\back.mid", buf, sizeof(buf), NULL);
}
return;
}
else //取消
{
DDReLoadBitmap(lpDDSBackGround,"pic\\title.bmp");
ShowMenu(x, y, MenuIt, MainMenu, 3, RGB(255,255,255));
}
break;
case 2: //退出
ChangePalette(TitlePal,NullPal,-1);
PostMessage(hWnd, WM_CLOSE, 0, 0);
return;
break;
}
}
}
ChangePalette(TitlePal, NullPal, -1); //淡入
Clrscr(); //清屏
ChangePalette(NullPal, MainPal, 1); //淡出
GameHeader( GetTalk(99001,0) ); //游戏片头
ChangePalette(MainPal, NullPal, -1);
MainMove(); //生成地图
Flip();
ChangePalette(NullPal, MainPal, 1);
PressKey(VK_RETURN,1);
PressKey(VK_CONTROL,1);
if( SoundAble==TRUE )
{
char buf[256];
mciSendString("close all", buf, sizeof(buf), NULL);
mciSendString("open voc\\back.mid",buf,sizeof(buf),NULL);
mciSendString("play voc\\back.mid", buf, sizeof(buf), NULL);
}
ShowDialog(0, 10000, 0); //自言自语
}
//显示菜单(X,Y,当前项,菜单数组,数组的长度,字色,背景色)
void ShowMenu(int x, int y, int MenuIt, char *MainMenu[], int Num, DWORD FontColor, DWORD BackColor)
{
Blt(lpDDSBack, 0,0, lpDDSBackGround, GetRect(0,0,ScreenX,ScreenY), FALSE);
for( int i=0; i<Num; i++ )
{
DWORD T1=0,T2=0;
if( MenuIt == i )
{
T1=OPAQUE;
T2=BackColor;
}
//PrintText(lpDDSBack, x+2, y+12+i*24, MainMenu[i], RGB(0,0,0), T1, T2);
PrintText(lpDDSBack, x, y+10+i*24, MainMenu[i],FontColor, T1, T2);
}
Flip();
}
//初始化游戏数据
void InitGameData()
{
Scene=0; //所处场景标志
SX=0;
SY=0; //所处场景的左上坐标
old_SX=0;
old_SY=0;
DX=0;
DY=0; //生成场景时的左上坐标
old_DX=0;
old_DY=0;
Flag_OutCity=0; //出城的标志
Flag_GotoPalace=0; //进魔宫的标志
Role Temp={999,
999,
0,
0,
1,
1,
"小飞刀",
32,48,
180,164,
180,164,
0,
0,
1,
0,
50,
50,
10,
10,
8,
" ",
50,
lpDDSSpirit};
Hero=Temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -