UT复刻小游戏,耗时三个月CODE完!

凌艺樽  •  27天前


钢铸之魂(doge

#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("*防具  防御+20\n*不用担心防御,轻轻松松地战斗\n");  
	if(l==2)printf("*药品  HP+40\n*很好吃的三明治\n");  
	if(l==3)printf("*药品  HP+60\n*有奇效的蛋糕\n");  
	if(l==4)printf("*防具  防御+30,攻击+10\n*神器\n");  
	if(l==5)printf("*防具  防御+?\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=0;
	y.G=0;
	y.Have_Drug=0;
	y.HP=20;
	y.LV=1;
	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=40,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=180,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=260,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=500,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=1700,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=9999,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(int i=30;i<=100;++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+=5;
			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",tg[y.Drug_Bag[HREAT_LINE]].help_hp);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;
}

Comments:

欢迎改造:

  • LV,EXP的更新

凌艺樽  •  27天前

不如gotoxy加keydown


黄戈  •  12天前

great


黄卓  •  1天前