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

📄 frame.cpp

📁 RPG小游戏
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	}
	else
	{
	    	DDraw_Draw_Surface(lpddsbackground[4],0,0,1024,768, lpddsback,0);
		
			if(mark==1)
			{
					HouYi.DrawPeople(a);
		        for(int i=0;i<2;i++)
				{
			    	if(kkp[i]->get_life())
				     	kkp[i]->free_walk(a);
				}
		    	int cc, dd;
		    	int num;
		    	for(num=0;num<2;num++)
				{
			    	cc = HouYi.get_x()-kkp[num]->get_x();
		        	dd = HouYi.get_y()-kkp[num]->get_y();
		        	cc= cc*cc+dd*dd;
	  	            if(kkp[num]->get_life())			
		             	if(cc<=10000)
						{
				
				        	rs=fight(lpddsbackground[0],lpddsbackground[2],lpddsbackground[2],*(kkp[num]));	
								PlaySound(MAKEINTRESOURCE(IDR_WAVE6),hinstance_app,SND_ASYNC|SND_RESOURCE|SND_LOOP);
					    	if (FAILED(lpddpal->SetEntries(0,0,MAX_COLORS_PALETTE,bitmap[1].palette)))
				    	    		return(0);
							mark=2;
							cx=0;
						}
			   	 	
				}
		     	if(!kkp[0]->get_life()&&!kkp[1]->get_life())
				{				
			  		char ** word1;
			    	word1 = (char**) malloc(12*sizeof(char*));
                    for(int i = 0;i<10 ;i++)
			    	   word1[i] = (char*)malloc(120);
				    	strcpy(word1[0],"众太阳神。。。");
						strcpy(word1[1],"大胆后羿,你竟敢擅闯太阳宫重地,该当何罪?");
						strcpy(word1[2],"你们十兄弟同时出现在太阳宫,民间已然是一片焦土。你们是何居心?");
						strcpy(word1[3],"。。。。看来你是存心来阻止我们。");
						strcpy(word1[4],"我奉玉帝令,要求你们立即悬崖勒马,否则天规论处。");
						strcpy(word1[5],"后羿,我们敬你是条汉子,不如加入我们,事成之后,上天下地,惟我独尊。");
						strcpy(word1[6],"住口!你们身为天神,为求权势却甘入魔道,受魔王指使,残害苍生,神人共怒!");
						strcpy(word1[7],"好吧,既然话都说到这份上了,我们只好成全你了,让你形神俱灭。");
						strcpy(word1[8],"那要看你们有没那个本事了。。。一起来吧!");
						strcpy(word1[9],"不愧为天庭第一猛将,好,我们痛快地决一死战!");
						tou=4;
						talk(lpddsbackground[4],houyitou,lpddsotherpeople[3],word1,10);
						mark=3;
				}
				
			}
	
	        if(mark==2)
			{
		    	if(!rs)
		    	mark=1;
		    	else
				{
			    	if(!HouYi.get_life())
		         	GameState = START_PICTURE;
			    	else mark=1;
				}			
			}


			if(mark==3)
			{
					HouYi.DrawPeople(a);
					cx++;
					if(cx%16<=4)
						cy=412;
					else if(cx%16<=8&&cx%16>4)cy=400;
					else if(cx%16<=12&&cx%16>8)cy=388;
					else cy=400;
					if(aboluo.get_life())
		 	    		DDraw_Draw_Surface(lpddsotherpeople[2],400,cy,172,224, lpddsback,1);
					int cc, dd;				
			    	cc = HouYi.get_x()-aboluo.get_x();
		    	    dd = HouYi.get_y()-aboluo.get_y();
		         	cc= cc*cc+dd*dd;
					if(cc<=10000)
					{
						rs=fight(lpddsbackground[0],NULL,NULL,aboluo);
							PlaySound(MAKEINTRESOURCE(IDR_WAVE6),hinstance_app,SND_ASYNC|SND_RESOURCE|SND_LOOP);
						if (FAILED(lpddpal->SetEntries(0,0,MAX_COLORS_PALETTE,bitmap[1].palette)))
				    	    		return(0);
						if(!rs)
						{
							mark=4;
							changer.set_xy(78,483);
						}
						else if(rs==1)
							GameState=START_PICTURE;
											
					}
			}
			if(mark==4)
			{
				static int k=0,kk=0;
				if(!k)
				{
						HouYi.DrawPeople(a);
					
					changer.free_walk(a);
					int 	cc = HouYi.get_x()-changer.get_x();
		    		int 	dd = HouYi.get_y()-changer.get_y();
					cc= cc*cc+dd*dd;
					if(cc<=10000)
					{

						char ** word1;
						word1 = (char**) malloc(2*sizeof(char*));
						for(int i = 0;i<2 ;i++)
							word1[i] = (char*)malloc(120);
						strcpy(word1[0],"一切终于都结束了。。。啊,嫦娥你怎么了。。。");
						strcpy(word1[1],"我感觉轻飘飘地,我身不由己,要飞起来了。。。看来预言要实现 了,将军,我们也要永别了。。。。");
			//	  strcpy(word1[2],"不——不——不——预言怎么会是真的,为什么要这样对我,我究竟做错了什么。。。");
			//	  strcpy(word1[3],"将军保重,嫦娥要走了");
				  
						 tou=1;
			
						talk(lpddsbackground[4],houyitou,lpddsotherpeople[1],word1,2);
						for (i=0;i<2;i++)
							free(word1[i]);
						free(word1);
						
					
						k=1;
					}
				}
				if(k==1)
				{
					cy-=3;
					changer.set_xy(changer.get_x(),cy);
					kk++;
					if(kk<20)
					{
						DDraw_Draw_Surface(changer.lpdds1[2][1],changer.get_x(),changer.get_y(),72,96,lpddsback,1);
					}
					else
					{
						k=2;
						
					}
					
				}
				if(k==2)
				{
					changer.position();
				//	Houyi.position();
					char ** word1;
					word1 = (char**) malloc(5*sizeof(char*));
					for(int i = 0;i<5 ;i++)
						word1[i] = (char*)malloc(120);
					strcpy(word1[0],"不——不——预言不会是真的!上天为什么要这样对我。。。嫦娥你别走,我不能没有你!");
					strcpy(word1[1],"啊,将军,我看到了双眸中的泪水。将军居然为嫦娥落泪了....");
					strcpy(word1[2],"我不相信这是真的,嫦娥,我要和你一起走,我拼死也要去月宫!");
					strcpy(word1[3],"不,将军,预言是不可违的。将军将对嫦娥的感情深放在心底,嫦娥已经觉得和幸福了。");
					strcpy(word1[4],"嫦娥你等等我,我不要你离开我!");
					talk(lpddsbackground[4],houyitou,lpddsotherpeople[1],word1,5);
					for (i=0;i<5;i++)
						free(word1[i]);
					free(word1);
					k=3;
					HouYi.set_xy(changer.get_x()+120,changer.get_y());
					cy=changer.get_y();

				}
				if(k==3)
				{
					if(cy>250)
					{
						cy-=3;
						HouYi.set_xy(HouYi.get_x(),cy);
						changer.set_xy(changer.get_x(),cy);
					}
					else
						k=4;
					HouYi.position();
					changer.position();

				}
			  if(k==4)
			  {
				  HouYi.position();
				  changer.position();
				  char ** word1;
				  word1 = (char**) malloc(4*sizeof(char*));
					for(int i = 0;i<4 ;i++)
						word1[i] = (char*)malloc(120);
					strcpy(word1[0],"啊,我感觉我体内的能量在急速流失,我快飞不动了,然道我真要成为凡人了?");
					strcpy(word1[1],"永别了,将军,嫦娥的心里,永远烙住将军的容颜。。。");
					strcpy(word1[2],"嫦娥,我要下落了,永别了,我的爱人。。。");
					strcpy(word1[3],"不——不——将军——");
					talk(lpddsbackground[4],houyitou,lpddsotherpeople[1],word1,4);
					for (i=0;i<4;i++)
						free(word1[i]);
					free(word1);
					k=5;
					kk=0;
				  
			  }
			  if(k==5)
			  {
				  kk++;
				  DDraw_Draw_Surface(HouYi.lpdds[0][0],HouYi.get_x(),HouYi.get_y()+kk*3,
					  120,120,lpddsback,1);
				  DDraw_Draw_Surface(changer.lpdds1[0][0],changer.get_x(),changer.get_y()-kk*3,
					  changer.get_W(),changer.get_H(),lpddsback,1);
				  if(kk>200)
				  {
					  Draw_Text_GDI("后羿用尽了最后一丝成为凡人前的能量,只通慢慢在下落,年轻的生命在急速地流失着.....!",150,150,255,lpddsback);
					  Sleep(500);
					  Draw_Text_GDI("他只能眼睁睁地看着嫦娥的远离",150,250,255,lpddsback);
					  Sleep(500);
					  Draw_Text_GDI("我们的英雄,天堂不是在上面吗,你为什么要往下飞呢?",150,350,255,lpddsback);
					  Sleep(500);
					  Draw_Text_GDI("他落到地面上了,手里握着嫦娥袖口上的一块布。。。。",150,450,255,lpddsback);
					  Sleep(500);
					  Draw_Text_GDI("他安然地笑了笑,闭上了双眼,曾经紧握的双手,终于无力地松开了。。。",150,550,255,lpddsback);
					  Sleep(500);
					  Draw_Text_GDI("风中,飘着那块布......",150,650,255,lpddsback);
					  if(KEYDOWN(VK_RETURN))
						  window_closed=1;
				  }

			  }
								
			}
		
					
		

	}

	for ( i=0;i<4;i++)
		free(a[i]);
	free(a);
	while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT)));

Sleep(50);

	return 0;
}


int talk(LPDIRECTDRAWSURFACE7 background,LPDIRECTDRAWSURFACE7 people1,LPDIRECTDRAWSURFACE7 people2,char **word,int n)
{
	int i;



	for(i=0;i<n;i++)
	{
	DDraw_Draw_Surface(background,0,0,SCREEN_WIDTH,SCREEN_HEIGHT,lpddsback,0);
	DDraw_Draw_Surface(talkbar,110,645,898,93,lpddsback,1);
	//	DDraw_Draw_Surface(people1,HouYi.get_x(,,)
	HouYi.position();
	if(tou==0)
	{
		for(int j=0;j<3;j++)
			if(kkp[j]->get_life())
	             kkp[j]->position();
	}
	if(tou)
	{
		if(tou!=4)
		changer.position();
     	if(tou==3)
		DDraw_Draw_Surface(lpddsotherpeople[0],500,350,73,137, lpddsback,1);
		if(tou==4)
		DDraw_Draw_Surface(lpddsotherpeople[2],400,500,172,224, lpddsback,1);
	}
		
	    if(i%2==0)
		{
			if(!tou)
		     	DDraw_Draw_Surface(people1,20,630,120,120,lpddsback,1);
			else
				DDraw_Draw_Surface(people1,20,630,101,130,lpddsback,1);
		}

		else
			DDraw_Draw_Surface(people2,20,630,toux[tou],touy[tou],lpddsback,1);
		Draw_Text_GDI(word[i],150,690,255,lpddsback);
		while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT)));
		while(1)
		{
			if(KEYDOWN(VK_SPACE))
			{
				Sleep(300);
				break;
			}
			
		}
	}
	return 0;
}


//return 0 怪死了,return 1 主人公死了
int fight(LPDIRECTDRAWSURFACE7 background,LPDIRECTDRAWSURFACE7 guai,
		  LPDIRECTDRAWSURFACE7 houyi,
		  people & guaiwu)
{
	int i=0,j=0,k=0,final=0,sound=0,jiaxue=0;
	int life=guaiwu.get_life();
	LPDIRECTDRAWSURFACE7 fight_state[4];
	
	if(FAILED(Load_Bitmap_File(&bitmap[3],"resource\\1.bmp")))
		return 0;
	for(i=0;i<4;i++)
	{
		fight_state[i] = DDraw_Create_Surface(106,183,0,0);
		Scan_Image_Bitmap(&bitmap[3],                
                      fight_state[i],
                      i, 0);    

	}
	Unload_Bitmap_File(&bitmap[3]);
	
	if(FAILED(Load_Bitmap_File(&bitmap[3],"resource\\effect.bmp")))
		return 0;
	for(i=0;i<1;i++)
	{
		fight_effect[i]=DDraw_Create_Surface(100,100,0,0);
		Scan_Image_Bitmap(&bitmap[3],fight_effect[i],i,0);
	}
	Unload_Bitmap_File(&bitmap[3]);

	
	if (FAILED(lpddpal->SetEntries(0,0,MAX_COLORS_PALETTE,bitmap[0].palette)))
			return(0);
	
	i=0;
	while(1)
	{
		i++;
		DDraw_Draw_Surface(background,0,0,SCREEN_WIDTH,SCREEN_HEIGHT,lpddsback,0);
		if(!final)
		{
			if(i%2==0)
			{
				if(KEYDOWN(VK_DOWN))j+=1;
				if(KEYDOWN(VK_UP))j-=1;
				if(j>3)j=3;
				if(j<0)j=0;
				if(KEYDOWN(VK_RETURN))
				{
					if(j==0)         
					{
						DDraw_Draw_Surface(fight_effect[0],0,0,100,100,lpddsback,1);
					//	DDraw_Draw_Surface(background,0,0,SCREEN_WIDTH,SCREEN_HEIGHT,lpddsback,0);
			            srand(time(NULL));
						HouYi.attack_fuction(guaiwu);
						Sleep(500);
						if(guaiwu.get_life()==0)
						{
							HouYi.set_experience(guaiwu.get_level());
							HouYi.levelup();

							final=1;
						}
						k=1;
					}
					if(j==3)
					{
						srand(time(NULL));
						
						int aa=rand()%10;
						if(aa<8)
						{
							HouYi.set_xy(1,300);
							return 2;
						}
						else
							k=1;

					}
				
			//	PlaySound(MAKEINTRESOURCE(IDR_WAVE1),hinstance_app,SND_ASYNC|SND_RESOURCE);

				}
				Sleep(50);
			}
			else
			{
				if(k==1)
				{
					guaiwu.attack_fuction(HouYi);
					if(HouYi.get_life()==0)
						final=2;
					k=0;
				}
				Sleep(50);	
			}
		
		}
		if(final==1) //怪死了
		{
			char a[10],b[30]="胜利了!得到血瓶生命值+";
			itoa(life,a,10);
			Draw_Text_GDI(strcat(b,a),275,370,150,lpddsback);
			if(!jiaxue)
			{
				HouYi.setlife(life);
				jiaxue=1;
			}
		
			if(!sound)
			{
				PlaySound(MAKEINTRESOURCE(IDR_WAVE2),hinstance_app,SND_ASYNC|SND_RESOURCE);
				sound=1;
			}
			Sleep(50);
			if(KEYDOWN(VK_RETURN))
				return 0;


		}
		if(final==2)  //后羿死了
		{
			Draw_Text_GDI("小子你挂了!",650,402,150,lpddsback);
			if(!sound)
			{
				PlaySound(MAKEINTRESOURCE(IDR_WAVE3),hinstance_app,SND_ASYNC|SND_RESOURCE);
				sound=1;
			}
			Sleep(50);
			if(KEYDOWN(VK_RETURN))
				return 1;
		}
		guaiwu.show();
		HouYi.show();
		DDraw_Draw_Surface(fight_state[j],459,485,106,183,lpddsback,1);
	//	DDraw_Draw_Surface(fight_effect[0],200,360,100,100,lpddsback,1);
		while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT)));
	
	//	Sleep(50);
	}

	return 0;

}


⌨️ 快捷键说明

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