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

📄 fightinit.cpp

📁 国产的RPG源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -