📄 fightinit.cpp
字号:
FightRole[i].Rstop[0].bottom=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"1静止的位图_y1");
FightRole[i].Rstop[1].left=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"2静止的位图_x");
FightRole[i].Rstop[1].top=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"2静止的位图_y");
FightRole[i].Rstop[1].right=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"2静止的位图_x1");
FightRole[i].Rstop[1].bottom=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"2静止的位图_y1");
FightRole[i].Rstop[2].left=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"3静止的位图_x");
FightRole[i].Rstop[2].top=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"3静止的位图_y");
FightRole[i].Rstop[2].right=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"3静止的位图_x1");
FightRole[i].Rstop[2].bottom=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"3静止的位图_y1");
FightRole[i].Rstop[3].left=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"4静止的位图_x");
FightRole[i].Rstop[3].top=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"4静止的位图_y");
FightRole[i].Rstop[3].right=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"4静止的位图_x1");
FightRole[i].Rstop[3].bottom=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"4静止的位图_y1");
//被攻击图片数据
FightRole[i].Rbruise.left=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"被攻击位图_x");
FightRole[i].Rbruise.top=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"被攻击位图_y");
FightRole[i].Rbruise.right=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"被攻击位图_x1");
FightRole[i].Rbruise.bottom=FightRoleInit.ReadInt(Hero[i]->Fight_Ini_Name,"被攻击位图_y1");
//读入声音
char* strSound1 = FightRoleInit.ReadText(Hero[i]->Fight_Ini_Name, "sound_Fight");
char* strSound2 = FightRoleInit.ReadText(Hero[i]->Fight_Ini_Name, "sound_Defend");
char* strSound3 = FightRoleInit.ReadText(Hero[i]->Fight_Ini_Name, "sound_Dead");
FightRole[i].sound_Fight.LoadSoundFX(hWnd, strSound1);
FightRole[i].sound_Defend.LoadSoundFX(hWnd, strSound2);
FightRole[i].sound_Dead.LoadSoundFX(hWnd, strSound3);
_FREE(strSound1);
_FREE(strSound2);
_FREE(strSound3);
}
else
FightRole[i].bLive=false;
//---------------------------------------------------------------
//***************************************************************
//---------------------------------------------------------------
// 敌人数据的读取部分
EnemyInit.Open("ini\\fight\\enemy.ini");
for(i=3; i>=0; i--)
{
Enemy[i].Hp = 0; //初始化成0
if( i==0 && enemy_1 || i==1 && enemy_2 || i==2 && enemy_3 || i==3 && enemy_4 )
{
EnemyRole[i].bLive=true;
char *enemy;
switch( i )
{
case 0: enemy=enemy_1; break;
case 1: enemy=enemy_2; break;
case 2: enemy=enemy_3; break;
case 3: enemy=enemy_4; break;
}
Enemy[i].Hp=EnemyInit.ReadInt(enemy, "Hp");
Enemy[i].MaxHp=EnemyInit.ReadInt(enemy, "MaxHp");
Enemy[i].Attack=EnemyInit.ReadInt(enemy, "Attack");
Enemy[i].Defend=EnemyInit.ReadInt(enemy, "Defend");
Enemy[i].MagicAct=EnemyInit.ReadInt(enemy, "MagicAct");
Enemy[i].MagicDef=EnemyInit.ReadInt(enemy, "MagicDef");
Enemy[i].Bp=EnemyInit.ReadInt(enemy,"Bp");
Enemy[i].Ip=EnemyInit.ReadInt(enemy,"Ip");
Enemy[i].Stamina=EnemyInit.ReadInt(enemy,"Stamina");
Enemy[i].Luck=EnemyInit.ReadInt(enemy,"Luck");
Enemy[i].Speed=EnemyInit.ReadInt(enemy,"Speed");
Enemy[i].Money=EnemyInit.ReadInt(enemy, "Money");
Enemy[i].Arms=EnemyInit.ReadInt(enemy, "Arms");
Enemy[i].Corselet=EnemyInit.ReadInt(enemy, "Corselet");
Enemy[i].Exp=EnemyInit.ReadInt(enemy, "Exp");
Enemy[i].Act=EnemyInit.ReadInt(enemy,"Act"); //动作图片数量
//角色的缺省攻击对象初始化成排在最前面的敌人
Command[0].kill_who=i;
Command[1].kill_who=i;
Command[2].kill_who=i;
strcpy(EnemyRole[i].name, enemy);
EnemyRole[i].use=1;
strTemp = EnemyInit.ReadText(enemy, "Role_Pic_File");
CreateBitmap(EnemyRole[i].surf, 0,0, strTemp);
_FREE(strTemp);
DDSetColorKey(EnemyRole[i].surf, ColorKey);
// 从资源文件里读取位图坐标数据
EnemyRole[i].Rstop[0].left=EnemyInit.ReadInt(enemy,"1静止的位图_x");
EnemyRole[i].Rstop[0].top=EnemyInit.ReadInt(enemy,"1静止的位图_y");
EnemyRole[i].Rstop[0].right=EnemyInit.ReadInt(enemy,"1静止的位图_x1");
EnemyRole[i].Rstop[0].bottom=EnemyInit.ReadInt(enemy,"1静止的位图_y1");
EnemyRole[i].Rstop[1].left=EnemyInit.ReadInt(enemy,"2静止的位图_x");
EnemyRole[i].Rstop[1].top=EnemyInit.ReadInt(enemy,"2静止的位图_y");
EnemyRole[i].Rstop[1].right=EnemyInit.ReadInt(enemy,"2静止的位图_x1");
EnemyRole[i].Rstop[1].bottom=EnemyInit.ReadInt(enemy,"2静止的位图_y1");
EnemyRole[i].Rstop[2].left=EnemyInit.ReadInt(enemy,"3静止的位图_x");
EnemyRole[i].Rstop[2].top=EnemyInit.ReadInt(enemy,"3静止的位图_y");
EnemyRole[i].Rstop[2].right=EnemyInit.ReadInt(enemy,"3静止的位图_x1");
EnemyRole[i].Rstop[2].bottom=EnemyInit.ReadInt(enemy,"3静止的位图_y1");
EnemyRole[i].Rstop[3].left=EnemyInit.ReadInt(enemy,"4静止的位图_x");
EnemyRole[i].Rstop[3].top=EnemyInit.ReadInt(enemy,"4静止的位图_y");
EnemyRole[i].Rstop[3].right=EnemyInit.ReadInt(enemy,"4静止的位图_x1");
EnemyRole[i].Rstop[3].bottom=EnemyInit.ReadInt(enemy,"4静止的位图_y1");
EnemyRole[i].Rbruise.left=EnemyInit.ReadInt(enemy,"被攻击位图_x");
EnemyRole[i].Rbruise.top=EnemyInit.ReadInt(enemy,"被攻击位图_y");
EnemyRole[i].Rbruise.right=EnemyInit.ReadInt(enemy,"被攻击位图_x1");
EnemyRole[i].Rbruise.bottom=EnemyInit.ReadInt(enemy,"被攻击位图_y1");
//读入声音
char* str1 = EnemyInit.ReadText(enemy, "sound_Fight");
char* str2 = EnemyInit.ReadText(enemy, "sound_Defend");
char* str3 = EnemyInit.ReadText(enemy, "sound_Dead");
EnemyRole[i].sound_Fight.LoadSoundFX(hWnd, str1);
EnemyRole[i].sound_Defend.LoadSoundFX(hWnd, str2);
EnemyRole[i].sound_Dead.LoadSoundFX(hWnd, str3);
_FREE(str1);
_FREE(str2);
_FREE(str3);
}
else
EnemyRole[i].bLive=false;
}
//魔法部分的初始化
for(i=0;i<CMagic::MAX_MAGIC;i++)
{
Role_Magic[i].Open(CMagic::MAGIC[i].MagicFileName);
}
FadeOut(2);
//开启记时器
SetTimer(hWnd, 2, 250, NULL);
CCursor::GetCursor(CCursor::CS_CHANGEMAP).pPic.SetShowCount(0);
//战斗——————————————————————————————
MSG msg;
while(RunGame)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (!GetMessage(&msg, NULL, 0, 0)) return 0;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else if(bActive)
{
//获取输入信息
GetInputData();
//主循环
switch( Loop(mouse, point) )
{
case 1: //逃跑成功
Script.SetValue("$FightRet", 1);
ret=1;
goto _Next;
case 2: //胜利
Script.SetValue("$FightRet", 2);
ret=2;
goto _Next;
case 3: //失败
Script.SetValue("$FightRet", 3);
ret=3;
goto _Next;
}
//显示鼠标
ShowMouseCursor(lpDDSBack, false);
//显示FPS
if( bShowFps)
{
nFrames++;
font.PrintText(lpDDSBack, 20, 460, "FPS:%d", CountSpeed());
}
_UpdateScreen();
}
else WaitMessage(); //等待消息
}
_Next:
//恢复音乐
FMusic.Stop();
Music.Resume();
g_ePlayState=PS_MAIN; //切换到主循环
return ret;
}
//踩地雷战斗
int CFight::RandomStart(int nFreq, bool bMouse)
{
int ret = 0;
//随机踩地雷
random(1200);
if( bRandomFight && nFreq && random(1200) < nFreq )
{
// 屏幕快速变白
FadeIn(2, 20, RGB16(255,255,255));
//主角站位
stRolePropertiy *rps[3];
rps[0]=&role[0].Propertiy;
if( RoleNum >1 )
rps[1]=&role[1].Propertiy;
else
rps[1]=NULL;
if( RoleNum >2 )
rps[2]=&role[2].Propertiy;
else
rps[2]=NULL;
//敌人选取
char *r1, *r2, *r3, *r4;
int num=random(100);
int EnemyNum = map.GetEnemyNum();
// 一个敌人
//敌人站位
// 1
// 3 2
// 4
//
if( num < 40 )
{
r1=NULL;
r2=NULL;
r3=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
r4=NULL;
}
// 两个敌人
else if( num < 70 )
{
r1=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
r2=NULL;
r3=NULL;
r4=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
}
// 三个敌人
else if( num < 90 )
{
r1=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
r2=NULL;
r3=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
r4=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
}
// 四个敌人
else
{
r1=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
r2=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
r3=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
r4=GetEnemyName( map.GetEnemyList(random(EnemyNum)) );
}
//可以逃跑
bLeave=true;
//站斗
ret=Start("ini\\fight\\background1.ini", rps[0], rps[1], rps[2], r1, r2, r3, r4);
if( ret==1 || ret==2 ) //Win
{
g_ePlayState=PS_Null;
FadeIn(2, 30);
map.ShowMap(true); //显示原来的地图,游戏继续
g_ePlayState=PS_MAIN;
}
if( ret==3 ) //GameOver
{
Music.Stop();
WCHAR* str = WChar("music\\BGM_lost.mid");
Music.LoadMusic(str);
_DELETE(str);
Music.Play();
g_ePlayState=PS_Null;
ColorIn(100, RGB16(0,0,0));
//读入背景页面
DDReLoadBitmap(lpDDSBackGround, "pic\\fight\\gameover.bmp");
Delay(500);
ColorOut(lpDDSBackGround, 100);
do
{
GetInputData();
}
while(!(A_UP||mouse == LB_UP));
ColorIn(100, RGB16(0,0,0));
//开始画面
Title.DoMenu(lpDDSBack);
g_ePlayState=PS_MAIN;
}
}
return ret;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -