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

📄 attack.h

📁 封魔录游戏代码,对游戏有研究的拿来参考还可以的
💻 H
字号:
void monster_blood(int i);
void map_1(int x,int y);
extern m1;
extern char a_1,a_2;
void enter(int i)
{
	int j;
	system("cls");
	system("color f4");
	gotoxy(29,13);
	monster_blood(i);
	printf("进入战斗,请等待...");
	gotoxy(25,16);
	printf("______________________________");
	gotoxy(25,18);
	printf("———————————————");
	for(j=0;j<30;j++)
	{
		dalay(0.05);
		gotoxy(25+j,17);
		printf(">");
	}
}
void monster_blood(int i)            //怪物死后的血值还原
{
	if(i==0)
	{
		monster[i].blood=20;
	}
	if(i==1)
	{
		monster[i].blood=35;
	}
	if(i==2)
	{
		monster[i].blood=50;
	}
	if(i==3)
	{
		monster[i].blood=80;
	}
	if(i==4)
	{
		monster[i].blood=120;
	}
	if(i==5)
	{
		monster[i].blood=250;
	}
	if(i==6)
	{
		monster[i].blood=450;
	}
	if(i==7)
	{
		monster[i].blood=400;
	}
	if(i==8)
	{
		monster[i].blood=500;
	}
	if(i==9)
	{
		monster[i].blood=800;
	}
	if(i==10)
	{
		monster[i].blood=500;
	}
}


void image(int i) //定义刷屏
{
	gotoxy(12,2);
	printf("%s",man.name);
	gotoxy(56,2);
	printf("%s",monster[i].name);
	gotoxy(11,4);
	printf("HP: %d / %d  ",man.d_blood,man.z_blood);
	gotoxy(11,6);
	printf("MP: %d / %d  ",man.d_magic,man.z_magic);
	gotoxy(55,5);
	printf("HP: %d  ",monster[i].blood);
	gotoxy(13,8);printf("%c",1);
	gotoxy(12,9);printf("|||%c",26);
	gotoxy(12,10);printf("%c %c",25,25);
	gotoxy(56,8);printf("%c",2);
	gotoxy(54,9);printf("%c|||",15);
	gotoxy(55,10);printf("%c %c",25,25);
}

void monster_attack(int i,int n)  //怪物攻击我
{
	int j;
    if(monster[i].blood<100&&i>5&& 2==rand()%2)
	{
		for(j=36;j>-4;j--)
		{
			gotoxy(17+j,10);printf("%c%c%c",15,15,15);
			gotoxy(17+j,8);printf("%c%c%c",15,15,15);
			gotoxy(17+j,9);printf("%c%c%c",15,15,15);
			dalay(0.05);
			gotoxy(17+j,8);printf("          ");
			gotoxy(17+j,9);printf("          ");
			gotoxy(17+j,10);printf("          ");
		}
		man.d_blood-=n+20;
		image(i);
		gotoxy(5,9);printf("- %d",n);
	}
	else
	{
		for(j=36;j>-4;j--)
		{
			gotoxy(17+j,9);printf("%c",15);
			dalay(0.05);
			gotoxy(17+j,9);printf(" ");
		}
		man.d_blood-=n;
		image(i);
		gotoxy(5,9);printf("- %d",n);
	}
	dalay(1.5);	
	gotoxy(5,9);printf("    ");
}

void skill_use(int n1,char ch1,int i)         //选择使用技能
{
	int j,k1,k2;
	k1=man.attack-monster[i].defense;
	if(k1<0)k1=0;
	k2=monster[i].attack-man.defense;
	if(k2<0)k2=0;
	gotoxy(10,15);printf(" ");
	gotoxy(36,13);printf("%c",16);
	gotoxy(38,13);printf("1.连环双击(消耗魔法值20点)");
	gotoxy(38,15);printf("2.破空一击(消耗魔法值40点)");
	gotoxy(38,17);printf("3.万箭之矢(消耗魔法值80点)");
	ch1=getch();
	while(ch1!=13)
	{
		if(ch1==a_2)
		{
			n1=n1+2;
			if(n1>4)n1=n1-2;
			gotoxy(36,n1+11);printf(" ");
			gotoxy(36,13+n1);printf("%c",16); 
		}
		if(ch1==a_1)
		{
			n1=n1-2;
			if(n1<0)n1=n1+2;
			gotoxy(36,15+n1);printf(" ");
			gotoxy(36,13+n1);printf("%c",16);
		}
		ch1=getch();
	}
	if(n1==0)                            //用第一个技能
	{
		if(man.d_magic<20)
		{
			gotoxy(35,23);printf("魔法值不足!");
			dalay(1);
			gotoxy(35,23);printf("              ");
			gotoxy(36,13);printf("                                  ");
			gotoxy(38,15);printf("                                   ");
			gotoxy(38,17);printf("                                   ");
		}
		else
		{
			gotoxy(36,13);printf("                                  ");
			gotoxy(38,15);printf("                                   ");
			gotoxy(38,17);printf("                                   ");
			gotoxy(17,9);
			printf("%c",26);
			dalay(0.05);
			for(j=0;j<37;j++)
			{
				gotoxy(17+j,9);printf("-->-->");
				dalay(0.05);
				gotoxy(17+j,9);printf("      ");
			}
			man.d_magic-=20;
			monster[i].blood-=k1+10;
			image(i);
			gotoxy(65,9);printf("- %d",k1+10);
			dalay(1);	
			gotoxy(65,9);printf("    ");
			monster_attack(i,k2); 
		}
	}
	if(n1==2)                    //用第二个技能
	{
		if(man.d_magic<40)
		{
			gotoxy(35,23);printf("魔法值不足!");
			dalay(1);
			gotoxy(35,23);printf("              ");
			gotoxy(36,13);printf("                                  ");
			gotoxy(36,15);printf("                                   ");
			gotoxy(36,17);printf("                                   ");
		}
		else
		{
			gotoxy(36,13);printf("                                  ");
			gotoxy(36,15);printf("                                   ");
			gotoxy(38,17);printf("                                   ");
			gotoxy(17,9);
			printf("%c",26);
			dalay(0.05);
			for(j=0;j<15;j++)
			{
				gotoxy(17+j,9);printf("-->");
				dalay(0.05);
				gotoxy(17+j,9);printf("   ");
			}
			for(j=0;j<22;j++)
			{
				gotoxy(32+j,9);printf("==>");
				dalay(0.05);
				gotoxy(32+j,9);printf("   ");
			}
			man.d_magic-=40;
			monster[i].blood-=k1+25;
			image(i);
			gotoxy(65,9);printf("- %d",k1+25);
			dalay(1);	
			gotoxy(65,9);printf("    ");
			monster_attack(i,k2);   
		}
	} 
	if(n1==4)                                 //用第三个技能
	{
		if(man.d_magic<80)
		{
			gotoxy(35,23);printf("魔法值不足!");
			dalay(1);
			gotoxy(35,23);printf("              ");
			gotoxy(36,13);printf("                                  ");
			gotoxy(36,15);printf("                                   ");
			gotoxy(36,17);printf("                                   ");
		}
		else
		{
			gotoxy(36,17);printf("                                   ");
			gotoxy(36,13);printf("                                  ");
			gotoxy(38,15);printf("                                   ");
			dalay(0.05);
			for(j=0;j<10;j++)
			{
				gotoxy(17+j,9);printf("-->");
				dalay(0.05);
				gotoxy(17+j,9);printf("   ");
			}
			for(j=0;j<10;j++)
			{
				gotoxy(27+j,9);printf("==>");
				dalay(0.05);
				gotoxy(27+j,9);printf("   ");
			}
			for(j=0;j<17;j++)
			{	
				gotoxy(37+j,8);printf("->->");
				gotoxy(37+j,9);printf("->->");
				gotoxy(37+j,10);printf("->->");
				dalay(0.05);
				gotoxy(37+j,8);printf("    ");
				gotoxy(37+j,9);printf("    ");
				gotoxy(37+j,10);printf("    ");
			}
			man.d_magic-=80;
			monster[i].blood-=k1+40;
			image(i);
			gotoxy(65,9);printf("- %d",k1+40);
			dalay(1);	
			gotoxy(65,9);printf("    ");
			monster_attack(i,k2);
		}
	}
}


void med_use(int i,char ch,int n2)            //使用药的函数
{
	int k1,k2;
	k1=man.attack-monster[i].defense;
	if(k1<0)k1=0;
	k2=monster[i].attack-man.defense;
	if(k2<0)k2=0;
	gotoxy(10,17);printf(" ");
	gotoxy(36,13);printf("%c",16);
	med(38,13);
	ch=getch();
	while(ch!=13)
	{
		if(ch==a_2)
		{
			n2=n2+2;
			if(n2>2)n2=n2-2;
			gotoxy(36,11+n2);printf(" ");
			gotoxy(36,13+n2);printf("%c",16);
		}
		if(ch==a_1)
		{
			n2=n2-2;
			if(n2<0)n2=n2+2;
			gotoxy(36,15+n2);printf(" ");
			gotoxy(36,13+n2);printf("%c",16);
		}
		ch=getch();
	}
	if(n2==0)
	{
		if(man.h_med==0)
		{
			gotoxy(35,23);
			printf("你没有金创药!");
			dalay(2);
			gotoxy(35,23);printf("                ");
			gotoxy(36,13);printf("                    ");
			gotoxy(36,15);printf("                     ");
		}
		else
		{
			if((man.d_blood+100)>man.z_blood)        //当前是满红时
			{
				man.d_blood=man.z_blood;
				man.h_med=man.h_med-1;
			}
			else                                     //没红时加50
			{
				man.h_med=man.h_med-1;
				man.d_blood=man.d_blood+100;
			}		
			med(38,13);
			image(i);
			dalay(1);
			gotoxy(36,13);printf("                    ");
			gotoxy(36,15);printf("                     ");
			monster_attack(i,k2);
			image(i);
		}
	}
	if(n2==2)
	{
		if(man.m_med==0)
		{
			gotoxy(35,23);
			printf("你没有魔法药!");
			dalay(2);
			gotoxy(35,23);printf("                ");
			gotoxy(36,13);printf("                    ");
			gotoxy(36,15);printf("                     ");
		}
		else
		{
			if((man.d_magic+100)>man.z_magic)        //当前是满蓝时
			{
				man.d_magic=man.z_magic;
				man.m_med=man.m_med-1;
			}
			else                                     //没满时加50
			{
				man.m_med=man.m_med-1;
				man.d_magic=man.d_magic+100;
			}			
			med(38,13);
			dalay(1);
			image(i);
			gotoxy(36,13);printf("                    ");
			gotoxy(36,15);printf("                     ");
			monster_attack(i,k2);
			image(i);
		}
	}
}

void attack(int i)                    //攻击怪物的函数
{
	time_t t;
	char ch,ch_1=0,ch_2=0;   //ch为第一个选择 ch_1为技能选择 ch_2为药品选择
	int n=0,j,k1,k2,n1=0,n2=0,level_1,level_2;//n为第一个选择 n1为技能选择 n2为药品选择 
    srand(time(&t));
	level_1=man.level;
	k1=man.attack-monster[i].defense;
	if(k1<0)k1=0;
	k2=monster[i].attack-man.defense;
	if(k2<0)k2=0;
	system("cls");
	system("color fc");
	while(man.d_blood>0&&monster[i].blood>0)
	{
		image(i);
		gotoxy(10,13);printf("%c",16);
		gotoxy(12,13);printf("1.攻击");
		gotoxy(12,15);printf("2.技能");
		gotoxy(12,17);printf("3.道具");
		ch=getch();
		while(ch!=13)
		{
			if(ch==a_2)
			{
				n=n+2;
				if(n>4)n=n-2;
				gotoxy(10,11+n);printf(" ");
				gotoxy(10,13+n);printf("%c",16);
			}
			if(ch==a_1)
			{
				n=n-2;
				if(n<0)n=n+2;
				gotoxy(10,15+n);printf(" ");
				gotoxy(10,13+n);printf("%c",16);
			}
			ch=getch();
		}
		if(n==0)                                      //选择直接攻击
		{
			gotoxy(10,13);printf(" ");
			gotoxy(17,9);
			printf("%c",26);
			dalay(0.05);
			for(j=0;j<37;j++)
			{
				gotoxy(17+j,9);printf("-->");
				dalay(0.05);
				gotoxy(17+j,9);printf("   ");
			}
			monster[i].blood-=k1;
			image(i);
			gotoxy(65,9);printf("- %d",k1);
			dalay(1);	
			gotoxy(65,9);printf("    ");
			monster_attack(i,k2); //怪物攻击 
		}
		if(n==2)                                              //用技能攻击
		{
			skill_use(n1,ch_1,i);
		}
		if(n==4)                         //选择吃药
		{
            med_use(i,ch_2,n2);
		}
		n=0;
	}
	if(man.d_blood<=0)
	{
		system("cls");
		system("color fc");
		gotoxy(25,13);
		printf("出师未捷生先死,长使英雄泪满襟!");
		gotoxy(25,16);
		printf("______________________________");
		gotoxy(25,18);
		printf("———————————————");
	    for(j=0;j<30;j++)
		{
	    	dalay(0.05);
			gotoxy(25+j,17);
			printf(">");
		}
		man.d_blood=20;
		m1=1;
		map_1(35,15); 
	}
	if(monster[i].blood<=0)
	{
	    gotoxy(35,18);
		printf("你杀死了%s!",monster[i].name);
		dalay(1);
		gotoxy(35,18);
		printf("你得到了%d经验值!  ",monster[i].exp);
		man.exp=man.exp+monster[i].exp;
		level_2=level(man.exp);
		if(level_1<level_2)
		{
			gotoxy(35,18);
			printf("恭喜你,你升级了!   ");
			man.z_blood+=20;
			man.d_blood=man.z_blood;
			man.z_magic+=10;
			man.attack+=1;
			man.defense+=1;
			man.level=level_2;
		}
		dalay(1);
		gotoxy(35,18);
		printf("你得到了%d金钱!  ",monster[i].menoy);
		man.menoy=man.menoy+monster[i].menoy;
		if(8==rand()%20)
		{
			dalay(1.5);
			gotoxy(35,18);
			save(man.weapon,monster[i].weapon);
			printf("你得到了武器! ");
		}
		if(8==rand()%20)
		{
			dalay(1);
			gotoxy(35,18);
			save(man.cloth,monster[i].cloth);
			printf("你得到了衣服!  ");
		}
		if(8==rand()%15)
		{
			dalay(1);
			gotoxy(35,18);
			man.h_med+=1; 
			printf("你得到了金创药!  ");
		}
		if(8==rand()%15)
		{
			dalay(1);
			gotoxy(35,18);
			man.m_med+=1;
			printf("你得到了魔法药! ");
		}
	}
	dalay(1.5);
}


⌨️ 快捷键说明

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