开始 2024-08-19 00:00:00

8.19-8.24集训第一天

结束 2024-08-25 23:59:00
Contest is over.
当前 2024-12-22 14:06:28

校优秀

include<bits/stdc++.h>

include <conio.h>

include <windows.h>

using namespace std; const int N=1e2+10; const int INF=0x3f3f3f3f;

bool YOU_DIED=0,YOU_WON=0; int EXP_TO_LOVE[25]={0,20,25,30,40,50,60,70,80,94,115,120,130,150,167,189,190,200,200,230,1000000}; int Trophy[8][2]={ 0,0, 0,7, 0,7, 0,7, 0,7, 0,7, 0,7, 0,7};

struct Ploblems{

string pr;
int ans,spd;

}p[N]; struct Things{

string name;
int help_atk,help_def,help_hp;
int Much_Buy,G,Kind_Of;//1武器2防具3药 

}tg[N]; struct Monsters{

int Max_HP,ATK,HP,DEF,Mercy_Time,Shot;
string name,Speak;

}m[N]; struct Frisk{

int Max_HP,ATK,HP,DEF;
int LV,EXP,G,Stage;
int Drug_Bag[N],ATK_Bag[N],DEF_Bag[N];
int Have_Drug,Have_ATK,Have_DEF;
int knife,shield;
string name;

}y;

void slowsay(string a,int speed=39) {

int alen=a.size();
for(int i=0;i<alen;i++){
	Sleep(speed);
	cout<<a[i];
}

}

void Shop_Draw(int l) {

printf("-----------------------------------\n");
l==1?printf(">>牛逼薄片      40G\n"):printf("  牛逼薄片      40G\n");
l==2?printf(">>传说英雄      280G\n"):printf("  传说英雄      280G\n");
l==3?printf(">>屎      400G\n"):printf("  屎      400G\n");
l==4?printf(">>平底锅        500G\n"):printf("  平底锅        500G\n");
l==5?printf(">>智障盔甲!!  1700G\n"):printf("  智障盔甲!!  1700G\n");
l==6?printf(">>脑残片套餐    9999G\n"):printf("  脑残片套餐    9999G\n");
l==7?printf(">>退出商店\n"):printf("  退出商店\n"); 
printf("-----------------------------------\n");
if(l==1)printf("*防具  防御+114514\n*担心尼玛防御,轻轻松松地战斗\n");  
if(l==2)printf("*药品  HP+40\n*很好吃的三明治(awa)\n");  
if(l==3)printf("*药品  HP+60\n*有奇效的蛋糕\n");  
if(l==4)printf("*防具  防御+30,攻击+10\n*神器\n");  
if(l==5)printf("*防具  防御-114514\n*你等着瞧叭,看看它多纸张!\n");  
if(l==6)printf("*??  \n*傻逼!!!\n"); 
if(l==7)printf("*按'k'键退出\n"); 
printf("-----------------------------------\n");

} void Buy_Things_From_Shop() {

system("cls");
slowsay("*你吼,我素傻逼!欢迎来到TEMMY SHOP!!\n");
Sleep(200);
BUY_AGAIN:
system("cls");
printf("*你吼,我素傻逼!欢迎来到TEMMY SHOP!!\n");
int HREAT_LINE=1;
Shop_Draw(HREAT_LINE);
while(1)
{
	Sleep(10);
	if(kbhit())
	{
	    char x=_getch();
	    if(x=='k' && HREAT_LINE==7)
	    {
	    	system("cls");
			slowsay("欢银下次光临!"); 
			Sleep(300); 
			return;
		}
		else if(x=='w')
		{
			system("cls");
			printf("*你吼,我素傻逼!欢迎来到TEMMY SHOP!!\n");
			Shop_Draw(HREAT_LINE==1?1:--HREAT_LINE); 
		}
		else if(x=='s')
		{
			system("cls");
			printf("*你吼,我素傻逼!欢迎来到TEMMY SHOP!!\n");
			Shop_Draw(HREAT_LINE==7?7:++HREAT_LINE); 
		}
		else if(x=='k')
		{
			system("cls");
			if(y.G>=tg[HREAT_LINE].G && tg[HREAT_LINE].Much_Buy>=1)
			{
				slowsay("*购买成功!\n");
				if(HREAT_LINE==6)
				{
					Sleep(1000);
					slowsay("*傻逼偷偷嗦:介个家伙素不素有钱没地方花..."); 
				}
				y.G-=tg[HREAT_LINE].G;
				tg[HREAT_LINE].Much_Buy-=1;
				if(tg[HREAT_LINE].Kind_Of==1)
				{
					y.ATK_Bag[++y.Have_ATK]=HREAT_LINE;
				}
				if(tg[HREAT_LINE].Kind_Of==2)
				{
					y.DEF_Bag[++y.Have_DEF]=HREAT_LINE;
				}
				if(tg[HREAT_LINE].Kind_Of==3)
				{
					y.Drug_Bag[++y.Have_Drug]=HREAT_LINE;
				}
			}
			else if(y.G<tg[HREAT_LINE].G)
			{
				slowsay("*你好像没有足够哒钱钱\n");
			}
			else if(tg[HREAT_LINE].Much_Buy<1)
			{
				slowsay("*啊哦,今天售罄了...\n");
			}
			Sleep(500);
			goto BUY_AGAIN;
		}
	}
}
return;

} void Main_Draw(int l) {

printf("-----------------------------------\n");
l==1?printf(">>商店\n"):printf("  商店\n");
l==2?printf(">>存档\n"):printf("  存档\n"); 
l==3?printf(">>查看\n"):printf("  查看\n"); 
l==4?printf(">>战斗\n"):printf("  战斗\n"); 
l==5?printf(">>退出\n"):printf("  退出\n");
printf("-----------------------------------\n");
printf("操作方式:w上 s下 k确认\n");
printf("-----------------------------------");
return; 

} void File() {

system("cls"); 
int c=y.G;
int atk=y.ATK;
int def=y.DEF;
int mh=y.Max_HP;
int hp=y.HP;
int exp=y.EXP;
int lv=y.LV;
int hd=y.Have_Drug,ha=y.Have_ATK,hde=y.Have_DEF;

FILE*fp=fopen("./undertale_cundang.txt","w");
fprintf(fp,"%d %d %d %d %d %d %d %d %d %d %d ",c,atk,def,mh,hp,exp,lv,hd,ha,hde,y.Stage);
for(int i=1;i<=y.Have_Drug;++i)
{
	fprintf(fp,"%d ",y.Drug_Bag[i]);
}
for(int i=1;i<=y.Have_ATK;++i)
{
	fprintf(fp,"%d ",y.ATK_Bag[i]);
}
for(int i=1;i<=y.Have_DEF;++i)
{
	fprintf(fp,"%d ",y.DEF_Bag[i]);
}
fclose(fp);

for(int i=1;i<10;i++)
{
	system("cls");
	if(i%3==0)cout<<"正在存档中...";
	if(i%3==1)cout<<"正在存档中.";
	if(i%3==2)cout<<"正在存档中..";
	Sleep(300);
}
system("cls");
cout<<"存档成功!";
Sleep(2000);
system("cls");
return;

} void Frisk_Define() {

y.ATK=18;
y.DEF=0;
y.EXP=1145;
y.G=0;
y.Have_Drug=0;
y.HP=10000;
y.LV=1145;
y.Max_HP=20;
y.name="Frisk";
y.Stage=1;

} void Monster_Define() {

m[1].ATK=19,m[1].DEF=0,m[1].HP=25,m[1].Max_HP=25,m[1].name=" 小花 ";m[1].Speak="*杀比或被杀\n"; 
m[2].ATK=6,m[2].DEF=8,m[2].HP=20,m[2].Max_HP=20,m[2].name=" 蛙吉特 ";m[2].Speak="*第一个对手\n";
m[3].ATK=10,m[3].DEF=3,m[3].HP=18,m[3].Max_HP=18,m[3].name=" 独眼怪 ";m[3].Speak="*样子怪怪的\n";
m[4].ATK=8,m[4].DEF=5,m[4].HP=30,m[4].Max_HP=30,m[4].name=" 小幽灵 ";m[4].Speak="*时常哭泣\n";
m[5].ATK=12,m[5].DEF=2,m[5].HP=31,m[5].Max_HP=31,m[5].name=" 爵士虫 ";m[5].Speak="*飘渺的对手\n"; 
m[6].ATK=9,m[6].DEF=8,m[6].HP=50,m[6].Max_HP=50,m[6].name=" 蛙吉特 ";m[6].Speak="*再见面\n";
m[7].ATK=2,m[7].DEF=10,m[7].HP=180,m[7].Max_HP=180,m[7].name=" 托丽尔 ";m[7].Speak="*亲爱的守护者\n";
m[8].ATK=19,m[8].DEF=32,m[8].HP=320,m[8].Max_HP=320,m[8].name=" 盾狗 ";m[8].Speak="*憨憨的模样\n";
m[9].ATK=46,m[9].DEF=41,m[9].HP=1020,m[9].Max_HP=1020,m[9].name=" 帕派瑞斯 ";m[9].Speak="*小天使\n";
m[10].ATK=5,m[10].DEF=184,m[10].HP=10089,m[10].Max_HP=10089,m[10].name=" 不灭的安黛因 ";m[10].Speak="*真正的女英雄\n";
m[11].ATK=1,m[11].DEF=1,m[11].HP=1,m[11].Max_HP=1,m[11].name=" 衫斯 ";m[11].Speak="*最简单的敌人\n*只能承受1点伤害\n";  

} void Things_Define() {

tg[1].help_atk=0,tg[1].help_def=20,tg[1].help_hp=0,tg[1].Much_Buy=1,tg[1].name="牛逼薄片",tg[1].G=4,tg[1].Kind_Of=2;
tg[2].help_atk=0,tg[2].help_def=0,tg[2].help_hp=40,tg[2].Much_Buy=INF,tg[2].name="传说英雄",tg[2].G=1,tg[2].Kind_Of=3;
tg[3].help_atk=0,tg[3].help_def=0,tg[3].help_hp=60,tg[3].Much_Buy=INF,tg[3].name="屎",tg[3].G=2,tg[3].Kind_Of=3;
tg[4].help_atk=10,tg[4].help_def=30,tg[4].help_hp=0,tg[4].Much_Buy=1,tg[4].name="平底锅",tg[4].G=5,tg[4].Kind_Of=2;
tg[5].help_atk=0,tg[5].help_def=0,tg[5].help_hp=0,tg[5].Much_Buy=1,tg[5].name="智障盔甲",tg[5].G=1,tg[5].Kind_Of=2;
tg[6].help_atk=0,tg[6].help_def=0,tg[6].help_hp=0,tg[6].Much_Buy=INF,tg[6].name="脑残片套餐",tg[6].G=10,tg[6].Kind_Of=3;
tg[7].help_atk=0,tg[7].help_def=0,tg[7].help_hp=15,tg[7].Much_Buy=INF,tg[7].name="肉桂屁包",tg[7].G=10,tg[7].Kind_Of=3;

} void Ploblems_Define() {

p[1].pr="1&1",p[1].ans=1,p[1].spd=2;
p[2].pr="1|1",p[2].ans=1,p[2].spd=3;
p[3].pr="1^1",p[3].ans=0,p[3].spd=3;
p[4].pr="0&1",p[4].ans=0,p[4].spd=3;
p[5].pr="0&0",p[5].ans=0,p[5].spd=3;
p[6].pr="1|0",p[6].ans=1,p[6].spd=2;
p[7].pr="0^0",p[7].ans=0,p[7].spd=3;
p[8].pr="1^0",p[8].ans=1,p[8].spd=3;
p[9].pr="1&1^1",p[9].ans=0,p[9].spd=2;
p[10].pr="0|1|0",p[10].ans=1,p[10].spd=2;

} void Get_File() {

system("cls");
FILE *fp=fopen("./undertale_cundang.txt","r");
Monster_Define();
Things_Define();
Ploblems_Define();
if(fp)
{
	slowsay("检测到有存档,是否读档?(1/0):\n");
	int aorpo;
	cin>>aorpo;
	if(aorpo)
	{
		for(int i=1;i<10;i++)
		{
			system("cls");
			if(i%3==0)cout<<"正在读取存档中...";
			if(i%3==1)cout<<"正在读取存档中.";
			if(i%3==2)cout<<"正在读取存档中..";
			Sleep(300);
		}
		int c,atk,def,mh,hp,exp,lv,st,hd,ha,hde;
		fscanf(fp,"%d%d%d%d%d%d%d%d%d%d%d",&c,&atk,&def,&mh,&hp,&exp,&lv,&hd,&ha,&hde,&st);
		for(int i=1;i<=hd;++i)
		{
			fscanf(fp,"%d",&y.Drug_Bag[i]);
		}
		for(int i=1;i<=ha;++i)
		{
			fscanf(fp,"%d",&y.ATK_Bag[i]);
		}
		for(int i=1;i<=hde;++i)
		{
			fscanf(fp,"%d",&y.DEF_Bag[i]);
		}
		fclose(fp);
		y.ATK=atk,y.DEF=def,y.EXP=exp,y.G=c,y.Have_Drug=hd;y.Have_ATK=ha;
		y.LV=lv,y.Max_HP=mh,y.name="Frisk";y.HP=hp;y.Stage=st;y.Have_DEF=hde;
		slowsay("读取成功!");
		Sleep(1000);
		return;
	}
}
Frisk_Define();

} void Check_Kit_Draw(int li,int lj) {

printf("-----------------------------------\n\n");
bool flag=0;
if(li==1)
{
	printf("[武器]      防具\n\n");
	for(int i=1;i<=y.Have_ATK;++i)
	{
		lj==i?printf(">>"):printf("  ");
		cout<<tg[y.ATK_Bag[i]].name<<'\n';
	}
	lj==y.Have_ATK+1?printf(">>退出\n"):printf("  退出\n");
}
else
{
	flag=1;
	printf(" 武器      [防具]\n\n");
	for(int i=1;i<=y.Have_DEF;++i)
	{
		lj==i?printf(">>"):printf("  ");
		cout<<tg[y.DEF_Bag[i]].name<<'\n';
	}
	lj==y.Have_DEF+1?printf(">>退出\n"):printf("  退出\n");
}
printf("-----------------------------------\n");
if((!flag && lj!=y.Have_ATK+1)||(flag && lj!=y.Have_DEF+1))
{
	li==1?printf("*武器\n"):printf("*防具\n"); 
	printf("*攻击+%d  防御+%d  血量+%d\n",tg[y.DEF_Bag[lj]].help_atk,tg[y.DEF_Bag[lj]].help_def,tg[y.DEF_Bag[lj]].help_hp);
	printf("*输入k确认装备\n"); 	
}
printf("-----------------------------------\n");
return;

} void Drug_Draw(int lj) {

printf("-----------------------------------\n");
int  d=y.Have_Drug;
for(int i=1;i<=d;++i)
{
	lj==i?printf(">>"):printf("  ");
	cout<<tg[y.Drug_Bag[i]].name<<endl;
}
lj==d+1?printf(">>退出\n"):printf("  退出\n");
printf("-----------------------------------\n");
printf("*药品  血量+%d\n",tg[y.Drug_Bag[lj]].help_hp);
printf("按k键丢弃\n");
printf("-----------------------------------\n");
return;

} void Check_Yourself() {

system("cls");
printf("-----------------------------------\n");
printf("Frisk:\n");
printf("LV(等级):%d         EXP(经验):%d\n",y.LV,y.EXP);
printf("Max_HP(血量上限):%d\n",y.Max_HP);
printf("ATK(攻击):%d\n",y.ATK);
printf("DEF(防御):%d\n",y.DEF);
printf("HP(当前血量):%d\n",y.HP);
printf("CN(金币):%d\n",y.G);
cout<<"武器:"<<tg[y.knife].name<<"        防具:"<<tg[y.shield].name<<endl;
printf("BAG(背包):%d/10\n",y.Have_Drug);
for(int i=1;i<=y.Have_Drug;++i)
{
	cout<<tg[y.Drug_Bag[i]].name<<"  "; 
}
printf("\n-----------------------------------\n输入1查看装备,2查看背包,3退出:");
int Your_Choose;
cin>>Your_Choose;
if(Your_Choose==1)
{
	CHECK_AGAIN:
	system("cls");
	int HREAT_LINE=1,HREAT_ROW=1;
	Check_Kit_Draw(HREAT_ROW,HREAT_LINE);
	while(1)
	{
		Sleep(10);
		if(kbhit())
		{
		    char x=_getch();
			if(x=='w')
			{
				system("cls");
				Check_Kit_Draw(HREAT_ROW,HREAT_LINE==1?1:--HREAT_LINE); 
			}
			else if(x=='s')
			{
				system("cls");
				Check_Kit_Draw(HREAT_ROW,HREAT_ROW==1?(HREAT_LINE==y.Have_ATK+1?y.Have_ATK+1:++HREAT_LINE):(HREAT_LINE==y.Have_DEF+1?y.Have_DEF+1:++HREAT_LINE)); 
			}
			else if(x=='a')
			{
				system("cls");
				HREAT_LINE=1;
				Check_Kit_Draw(HREAT_ROW==1?1:--HREAT_ROW,1); 
			}
			else if(x=='d')
			{
				system("cls");
				HREAT_LINE=1;
				Check_Kit_Draw(HREAT_ROW==2?2:++HREAT_ROW,1); 
			}
			else if(x=='k' && ((HREAT_ROW==1&&HREAT_LINE==y.Have_ATK+1)||((HREAT_ROW==1&&HREAT_LINE==y.Have_DEF+1))) )
			{
				return;
			}
			else if(x=='k')
			{
				system("cls");
				cout<<"装备成功!\n";
				Sleep(1700);
				if(HREAT_ROW==1)y.knife=y.ATK_Bag[HREAT_LINE];
				if(HREAT_ROW==2)y.shield=y.DEF_Bag[HREAT_LINE];
				goto CHECK_AGAIN;
			} 
		}
	}
}
if(Your_Choose==2)
{
	CHECK_AGAIN2:
	system("cls");
	int HREAT_LINE=1;
	Drug_Draw(HREAT_LINE);
	while(1)
	{
		Sleep(10);
		if(kbhit())
		{
		    char x=_getch();
			if(x=='w')
			{
				system("cls");
				Drug_Draw(HREAT_LINE==1?1:--HREAT_LINE); 
			}
			else if(x=='s')
			{
				system("cls");
				Drug_Draw(HREAT_LINE==y.Have_Drug+1?HREAT_LINE:++HREAT_LINE); 
			}
			else if(x=='k' && HREAT_LINE==y.Have_Drug+1 )
			{
				return;
			}
			else if(x=='k')
			{
				system("cls");
				cout<<"丢弃成功!\n";
				Sleep(1700);
				y.Drug_Bag[HREAT_LINE]=0;
				for(int i=HREAT_LINE+1;i<=y.Have_Drug;++i)
				{
					y.Drug_Bag[i-1]=y.Drug_Bag[i];
				}
				y.Have_Drug--;
				goto CHECK_AGAIN2;
			} 
		}
	}
}
else 
{
	return;
}

} void ITEM_Draw(int lj) {

system("cls");
printf("-----------------------------------\n");
int  d=y.Have_Drug;
for(int i=1;i<=d;++i)
{
	lj==i?printf(">>"):printf("  ");
	cout<<tg[y.Drug_Bag[i]].name<<endl;
}
lj==d+1?printf(">>退出\n"):printf("  退出\n");
printf("-----------------------------------\n");

} void M_FIGHT() {

system("cls");
cout<<"*怪物攻击!"<<endl; 
Sleep(500); 
int k=m[y.Stage].ATK,r=rand()%5+1;
while(r--)
{
	int a=rand()%10+1;
	int t=p[a].spd*1000,flag=0;
	cout<<endl<<p[a].pr<<endl; 
	while(t>0)
	{
		t-=100;
		Sleep(100);
		if(kbhit())
		{
			char x=_getch();
			int my_ans=x-'0';
			if(my_ans!=p[a].ans)
			{
				flag=2;
				cout<<"回答错误!\n";
				Sleep(200);
				break;
			}
			else 
			{
				flag=1; 
				cout<<"回答正确!\n";
				Sleep(200);
				break;
			}
		}
	}
	if(flag!=1)
	{
		if(flag==0)cout<<"超时!\n";
		y.HP-=(k<=5?k:k-y.DEF-tg[y.shield].help_def);
	}
	Sleep(1000);
}

} void FIGHT() {

double k=y.ATK+tg[y.knife].help_atk+tg[y.shield].help_atk;
system("cls");
bool flag=0;
//for循环1~100再到1攻击力 
for(long long i=100000;i<=1000000;++i)
{
	cout<<i;
	Sleep(5);
	system("cls");
	if(kbhit())
	{
		char x=_getch();
		cout<<i<<"%伤害!\n";
		Sleep(500);
		int sum=k*i/100.0+1-m[y.Stage].DEF;
		printf("你对怪物造成了 %d 点伤害!",max(sum,0) ); 
		m[y.Stage].HP-=max(sum,0);
		flag=1;
		break;
	}
} 
if(flag==0)
{
	for(int i=99;i>=30;--i)
	{
		cout<<i;
		Sleep(5);
		system("cls");
		if(kbhit())
		{
			char x=_getch();
			cout<<i<<"%伤害!\n";
			Sleep(500);
			int sum=k*i/100.0+1-m[y.Stage].DEF;
			printf("你对怪物造成了 %d 点伤害!",max(sum,0) ); 
			m[y.Stage].HP-=max(sum,0);
			flag=1;
			break;
		}
	} 	
}
if(flag==0)
{
	cout<<"30%伤害!\n";
	int sum=k*0.3+1-m[y.Stage].DEF;
	printf("你对怪物造成了 %d 点伤害!",max(sum,0) ); 
	m[y.Stage].HP-=max(sum,0);
}
Sleep(1000);
cout<<endl; 
if(m[y.Stage].HP<=0)
{
	YOU_WON=1;int s=rand()%30+10,w=rand()%30+15;
	Sleep(500);
	slowsay("\n*你胜利了!");
	printf("\n*你获得了 %d 点EXP和 %d 金币!\n",s,w); 
	Sleep(100);
	slowsay("\n\n*你还获得了:\n");
	for(int i=1;i<=1;++i)
	{
		Sleep(200);
		cout<<tg[Trophy[y.Stage][i]].name<<endl; 
		y.Drug_Bag[++y.Have_Drug]=Trophy[y.Stage][i];
	}
	Sleep(200);
	y.EXP+=s;y.G+=w;
	if(y.EXP>=EXP_TO_LOVE[y.LV])
	{
		y.EXP-=EXP_TO_LOVE[y.LV];
		y.LV++;
		Sleep(200);
		slowsay("\n*你升级了!\n"); 
		y.Max_HP+=100000;
		y.ATK+=2;
		y.DEF+=1;
	}
}
Sleep(1500);

} void ACT() {

system("cls");
printf("-----------------------------------\n");
slowsay("*");slowsay(m[y.Stage].name);slowsay(" ");cout<<m[y.Stage].ATK;
slowsay(" ATK ");cout<<m[y.Stage].DEF;slowsay(" DEF\n");
slowsay(m[y.Stage].Speak);
printf("-----------------------------------\n");
Sleep(500);
printf("按任意键继续:");
char o;
cin>>o;
return;

} void ITEM() {

system("cls");
int HREAT_LINE=1;
ITEM_Draw(HREAT_LINE);
while(1)
{
	Sleep(10);
	if(kbhit())
	{
	    char x=_getch();
		if(x=='w')
		{
			system("cls");
			ITEM_Draw(HREAT_LINE==1?1:--HREAT_LINE); 
		}
		else if(x=='s')
		{
			system("cls");
			ITEM_Draw(HREAT_LINE==y.Have_Drug+1?HREAT_LINE:++HREAT_LINE); 
		}
		else if(x=='k' && HREAT_LINE==y.Have_Drug+1)
		{
			return;
		}
		else if(x=='k')
		{
			system("cls");
			slowsay("*你吃掉了 ");slowsay(tg[y.Drug_Bag[HREAT_LINE]].name);
			slowsay(" !\n*你恢复了");printf("%d",10000);slowsay("点HP!");
			Sleep(1700);
			y.HP=min(y.Max_HP,y.HP+tg[y.Drug_Bag[HREAT_LINE]].help_hp);
			y.Drug_Bag[HREAT_LINE]=0;
			for(int i=HREAT_LINE+1;i<=y.Have_Drug;++i)
			{
				y.Drug_Bag[i-1]=y.Drug_Bag[i];
			}
			y.Have_Drug--;
			system("cls");
			return;
		} 
	}
}

} void MERCY() {

system("cls");
int y=rand()%4+1;
if(y==4)
{
	slowsay("你胜利了!");
	slowsay("\n你获得了 0 点EXP和 0 金币!"); 
	Sleep(1000);
	YOU_WON=1;
}
else
{
	slowsay("怪物拒绝了!");
	Sleep(1000);
}
return;

} void Fight_Draw() {

YOU_WON=0;
system("cls");
int s=y.Stage,hl;
slowsay("*");slowsay(m[s].name);slowsay("发起战斗!\n"); 
Sleep(300);
FIGHT_AGAIN:
if(YOU_WON==1)
{
	y.Stage++;
	return;
}
if(y.HP<=0)
{
	system("cls");
	printf("*(心碎)\n");
	Sleep(2200);
	slowsay("GAME   OVER\n");
	Sleep(2000);
	slowsay("*你是我们的希望...\n");
	Sleep(1000);
	slowsay("*Frisk,保持你的决心!");
	Sleep(2000);
	YOU_DIED=1;
	return; 
}
system("cls");
cout<<m[s].name<<"   "<<m[s].HP<<"/"<<m[s].Max_HP<<endl;
printf("-----------------------------------\n");
slowsay("*尽管攻击!\n");
printf("FRISK %d / %d\n",y.HP,y.Max_HP);
printf("-----------------------------------\n");
hl=1;
hl==1?printf(">>[战斗]  "):printf("  [战斗]  "); 
hl==2?printf(">>[行动]  "):printf("  [行动]  "); 
hl==3?printf(">>[物品]  "):printf("  [物品]  "); 
hl==4?printf(">>[仁慈]  "):printf("  [仁慈]  ");  
while(1)
{
	Sleep(10);
	if(kbhit())
	{
	    char x=_getch();
		if(x=='a')
		{
			system("cls");
			hl==1?hl=1:hl--;
			cout<<m[s].name<<"   "<<m[s].HP<<"/"<<m[s].Max_HP<<endl;
			printf("-----------------------------------\n");
			printf("*尽管攻击!\n");
			printf("FRISK %d / %d\n",y.HP,y.Max_HP);
			printf("-----------------------------------\n");
			hl==1?printf(">>[战斗]  "):printf("  [战斗]  "); 
			hl==2?printf(">>[行动]  "):printf("  [行动]  "); 
			hl==3?printf(">>[物品]  "):printf("  [物品]  "); 
			hl==4?printf(">>[仁慈]  "):printf("  [仁慈]  "); 
	
		}
		else if(x=='d')
		{
			system("cls");
			hl==4?hl=4:hl++;
			cout<<m[s].name<<"   "<<m[s].HP<<"/"<<m[s].Max_HP<<endl;
			printf("-----------------------------------\n");
			printf("*尽管攻击!\n");
			printf("FRISK %d / %d\n",y.HP,y.Max_HP);
			printf("-----------------------------------\n");
			hl==1?printf(">>[战斗]  "):printf("  [战斗]  "); 
			hl==2?printf(">>[行动]  "):printf("  [行动]  "); 
			hl==3?printf(">>[物品]  "):printf("  [物品]  "); 
			hl==4?printf(">>[仁慈]  "):printf("  [仁慈]  "); 
		}
		else if(x=='k')
		{
			if(hl==1)FIGHT();
			if(hl==2)ACT();
			if(hl==3)ITEM();
			if(hl==4)MERCY();
			if(YOU_WON!=1)
			{
				M_FIGHT();
			} 
			goto FIGHT_AGAIN;
		}
	}
}

} void Start_Fight() {

system("cls");
cout<<"当前关数:"<<y.Stage<<"     "<<m[y.Stage].name<<endl;
Sleep(200);
slowsay("\nENTER K TO START!:");
char ys;
cin>>ys;
if(ys=='k' || ys=='K')
{
	Fight_Draw();
} 
else
{
	return;
}

} int main() {

srand(time(0));
Get_File();
system("cls");
Sleep(3000);
slowsay("U N D E R T A L E");
Sleep(1000);
slowsay("\nby lingzai\n");
Sleep(2000);
cout<<"按任意键开始:";
char cin_to_start;int HREAT_LINE=1;
cin>>cin_to_start;
AGAIN:
if(YOU_DIED)
{
	return 0;
}
system("cls");
Main_Draw(HREAT_LINE); 
while(1)
{
	Sleep(10);
	if(kbhit())
	{
	    char x=_getch();
		if(x=='w')
		{
			system("cls");
			Main_Draw(HREAT_LINE==1?1:--HREAT_LINE); 
		}
		else if(x=='s')
		{
			system("cls");
			Main_Draw(HREAT_LINE==5?5:++HREAT_LINE); 
		}
		else if(x=='k')
		{
			if(HREAT_LINE==1)Buy_Things_From_Shop();
			else if(HREAT_LINE==2)File();
			else if(HREAT_LINE==3)Check_Yourself();
			else if(HREAT_LINE==4)Start_Fight(); 
			else if(HREAT_LINE==5)
			{
				system("cls");
				Sleep(3000);
				slowsay("U N D E R T A L E");
				Sleep(1000);
				slowsay("\n感谢游玩!\n");
				return 0;
			}
			goto AGAIN;
		}
	}
}
return 0;

}


Biandingxi  •  4个月前

比赛已结束。