魔塔

#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>

HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);

int F,X,Y,Money,HP,HP_max,DMG,HPcosts,DMGcosts,DEF,DEFcosts,Recover_costs,Crit,Crit_costs;
int tips=1; 

char m[10][20][20],c;

void SetColor(int x);
void Tips();
void DisP();
void Print();
int Fight(char x);
void up();
void down();
void left();
void right();
void shop();
void Play();

void SetColor(int x) {
	SetConsoleTextAttribute(hout,x);
}

void Tips() {
	if (tips==1) {
		system("cls");
		printf("欢迎来到 'collecting and fighting' !\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
	else if (tips==2) {
		system("cls");
		printf("因为作者很虚伪(装逼),所以本游戏使用中英文结合的方式。。。。\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
	else if (tips==3) {
		system("cls");
		printf("移动方式(wsad),行到怪物处即可自动开始攻击。\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
	else if (tips==4) {
		system("cls");
		printf("按 o 键即可召唤出商店大神!(好心的商店大神最开始赠送了一次免费回血)\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
	else if (tips==5) {
		system("cls");
		printf("地图中符号所代表的意思解释:\n\na~z:怪物(逐步变态)\t\t\t$ &:宝藏(+5/+20money)\n\n");
		printf("*:急救包(+200HP)\t\t\t%:大宝剑(+250DMG)\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
	else if (tips==6) {
		system("cls");
		printf("最开始的两关实在是太简单了,所以请谨慎把握住加点机会(合理花钱)。\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
	else if (tips==7) {
		system("cls");
		printf("作者:steven_cnyali\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
	else if (tips==8) {
		system("cls");
		printf("\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
	else if (tips==9) {
		system("cls");
		printf("\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
	else if (tips==10) {
		system("cls");
		printf("\n\n");
		system("pause");
		system("cls");
		Print();
		tips++;
	}
}

void DisP(){
	F=1; X=7; Y=8; HP=500; HP_max=500; DMG=150; HPcosts=3; DMGcosts=5; DEFcosts=10; Crit_costs=1;
	m[1][1][1]='#'; m[1][1][2]='#'; m[1][1][3]='#'; m[1][1][4]='#'; m[1][1][5]='#';
	m[1][1][6]='#'; m[1][1][7]='#'; m[1][1][8]='#'; m[1][1][9]='#'; m[1][1][10]='#';
	m[1][1][11]='#'; m[1][1][12]='#'; m[1][1][13]='#'; m[1][1][14]='#'; m[1][1][15]='#';
	m[1][2][1]='#'; m[1][2][2]='&'; m[1][2][3]='&'; m[1][2][4]='a'; m[1][2][5]='a';
	m[1][2][6]=' '; m[1][2][7]=' '; m[1][2][8]='a'; m[1][2][9]='a'; m[1][2][10]=' ';
	m[1][2][11]=' '; m[1][2][12]='a'; m[1][2][13]='$'; m[1][2][14]='$'; m[1][2][15]='#';
	m[1][3][1]='#'; m[1][3][2]='a'; m[1][3][3]='a'; m[1][3][4]=' '; m[1][3][5]=' ';
	m[1][3][6]='a'; m[1][3][7]=' '; m[1][3][8]=' '; m[1][3][9]=' '; m[1][3][10]='a';
	m[1][3][11]=' '; m[1][3][12]='a'; m[1][3][13]='#'; m[1][3][14]='#'; m[1][3][15]='#';
	m[1][4][1]='#'; m[1][4][2]='#'; m[1][4][3]='#'; m[1][4][4]='#'; m[1][4][5]='#';
	m[1][4][6]='#'; m[1][4][7]='#'; m[1][4][8]='#'; m[1][4][9]='#'; m[1][4][10]=' ';
	m[1][4][11]='#'; m[1][4][12]='#'; m[1][4][13]=' '; m[1][4][14]='a'; m[1][4][15]='#';
	m[1][5][1]='#'; m[1][5][2]=' '; m[1][5][3]='a'; m[1][5][4]=' '; m[1][5][5]=' ';
	m[1][5][6]=' '; m[1][5][7]=' '; m[1][5][8]=' '; m[1][5][9]=' '; m[1][5][10]=' ';
	m[1][5][11]=' '; m[1][5][12]=' '; m[1][5][13]='a'; m[1][5][14]='a'; m[1][5][15]='#';
	m[1][6][1]='#'; m[1][6][2]='$'; m[1][6][3]='a'; m[1][6][4]='#'; m[1][6][5]=' ';
	m[1][6][6]='!'; m[1][6][7]='!'; m[1][6][8]='!'; m[1][6][9]='!'; m[1][6][10]='!';
	m[1][6][11]=' '; m[1][6][12]='#'; m[1][6][13]='#'; m[1][6][14]='a'; m[1][6][15]='#';
	m[1][7][1]='#'; m[1][7][2]='$'; m[1][7][3]='$'; m[1][7][4]='#'; m[1][7][5]=' ';
	m[1][7][6]='!'; m[1][7][7]=' '; m[1][7][8]='@'; m[1][7][9]=' '; m[1][7][10]='!';
	m[1][7][11]=' '; m[1][7][12]='#'; m[1][7][13]='b'; m[1][7][14]='b'; m[1][7][15]='#';
	m[1][8][1]='#'; m[1][8][2]='$'; m[1][8][3]='$'; m[1][8][4]='#'; m[1][8][5]=' ';
	m[1][8][6]=' '; m[1][8][7]=' '; m[1][8][8]=' '; m[1][8][9]=' '; m[1][8][10]=' ';
	m[1][8][11]=' '; m[1][8][12]='#'; m[1][8][13]='b'; m[1][8][14]='#'; m[1][8][15]='#';
	m[1][9][1]='#'; m[1][9][2]='$'; m[1][9][3]='$'; m[1][9][4]='#'; m[1][9][5]='*';
	m[1][9][6]='*'; m[1][9][7]='*'; m[1][9][8]=' '; m[1][9][9]='*'; m[1][9][10]='*';
	m[1][9][11]='*'; m[1][9][12]='#'; m[1][9][13]='c'; m[1][9][14]='+'; m[1][9][15]='#';
	m[1][10][1]='#'; m[1][10][2]='#'; m[1][10][3]='#'; m[1][10][4]='#'; m[1][10][5]='#';
	m[1][10][6]='#'; m[1][10][7]='#'; m[1][10][8]='#'; m[1][10][9]='#'; m[1][10][10]='#';
	m[1][10][11]='#'; m[1][10][12]='#'; m[1][10][13]='#'; m[1][10][14]='#'; m[1][10][15]='#';
	m[2][1][1]='#'; m[2][1][2]='#'; m[2][1][3]='#'; m[2][1][4]='#'; m[2][1][5]='#';
	m[2][1][6]='#'; m[2][1][7]='#'; m[2][1][8]='#'; m[2][1][9]='#'; m[2][1][10]='#';
	m[2][1][11]='#'; m[2][1][12]='#'; m[2][1][13]='#'; m[2][1][14]='#'; m[2][1][15]='#';
	m[2][2][1]='#'; m[2][2][2]=' '; m[2][2][3]='c'; m[2][2][4]=' '; m[2][2][5]='c';
	m[2][2][6]='$'; m[2][2][7]='$'; m[2][2][8]='c'; m[2][2][9]='$'; m[2][2][10]='c';
	m[2][2][11]='&'; m[2][2][12]='c'; m[2][2][13]='&'; m[2][2][14]='c'; m[2][2][15]='#';
	m[2][3][1]='#'; m[2][3][2]=' '; m[2][3][3]='c'; m[2][3][4]=' '; m[2][3][5]='#';
	m[2][3][6]='*'; m[2][3][7]=' '; m[2][3][8]='#'; m[2][3][9]='$'; m[2][3][10]='&';
	m[2][3][11]='&'; m[2][3][12]='d'; m[2][3][13]='&'; m[2][3][14]='&'; m[2][3][15]='#';
	m[2][4][1]='#'; m[2][4][2]=' '; m[2][4][3]=' '; m[2][4][4]='*'; m[2][4][5]='#';
	m[2][4][6]='#'; m[2][4][7]='*'; m[2][4][8]='#'; m[2][4][9]='$'; m[2][4][10]='c';
	m[2][4][11]='$'; m[2][4][12]='c'; m[2][4][13]='$'; m[2][4][14]='c'; m[2][4][15]='#';
	m[2][5][1]='#'; m[2][5][2]=' '; m[2][5][3]='*'; m[2][5][4]='*'; m[2][5][5]='#';
	m[2][5][6]='d'; m[2][5][7]='d'; m[2][5][8]='#'; m[2][5][9]='#'; m[2][5][10]='#';
	m[2][5][11]='#'; m[2][5][12]='#'; m[2][5][13]='$'; m[2][5][14]='b'; m[2][5][15]='#';
	m[2][6][1]='#'; m[2][6][2]=' '; m[2][6][3]=' '; m[2][6][4]=' '; m[2][6][5]='#';
	m[2][6][6]='&'; m[2][6][7]='b'; m[2][6][8]='c'; m[2][6][9]='b'; m[2][6][10]='c';
	m[2][6][11]='&'; m[2][6][12]='#'; m[2][6][13]='#'; m[2][6][14]='b'; m[2][6][15]='#';
	m[2][7][1]='#'; m[2][7][2]='*'; m[2][7][3]='*'; m[2][7][4]=' '; m[2][7][5]='#';
	m[2][7][6]='&'; m[2][7][7]='c'; m[2][7][8]='b'; m[2][7][9]='c'; m[2][7][10]='b';
	m[2][7][11]='&'; m[2][7][12]='b'; m[2][7][13]='b'; m[2][7][14]='b'; m[2][7][15]='#';
	m[2][8][1]='#'; m[2][8][2]='*'; m[2][8][3]=' '; m[2][8][4]=' '; m[2][8][5]='#';
	m[2][8][6]='#'; m[2][8][7]='d'; m[2][8][8]='#'; m[2][8][9]='#'; m[2][8][10]='d';
	m[2][8][11]='#'; m[2][8][12]='#'; m[2][8][13]='#'; m[2][8][14]=' '; m[2][8][15]='#';
	m[2][9][1]='#'; m[2][9][2]='+'; m[2][9][3]=' '; m[2][9][4]='d'; m[2][9][5]='d';
	m[2][9][6]='e'; m[2][9][7]='f'; m[2][9][8]='&'; m[2][9][9]='h'; m[2][9][10]='h';
	m[2][9][11]='*'; m[2][9][12]='%'; m[2][9][13]='#'; m[2][9][14]='-'; m[2][9][15]='#';
	m[2][10][1]='#'; m[2][10][2]='#'; m[2][10][3]='#'; m[2][10][4]='#'; m[2][10][5]='#';
	m[2][10][6]='#'; m[2][10][7]='#'; m[2][10][8]='#'; m[2][10][9]='#'; m[2][10][10]='#';
	m[2][10][11]='#'; m[2][10][12]='#'; m[2][10][13]='#'; m[2][10][14]='#'; m[2][10][15]='#';
}
void Print(){
	printf("Level : %d\n\n",F);
	for (int i=1;i<=10;i++,puts("")) 
		for (int j=1;j<=15;j++) {
			if (m[F][i][j]=='$' || m[F][i][j]=='&') SetColor(14);
			else if (m[F][i][j]>='a' && m[F][i][j]<='z') SetColor(13);
			else if (m[F][i][j]=='%') SetColor(11);
			else if (m[F][i][j]=='*') SetColor(12);
			else if (m[F][i][j]=='+' || m[F][i][j]=='-') SetColor(9);
			else if (m[F][i][j]=='!') SetColor(10);
			printf("%c",m[F][i][j]);
			SetColor(15);
		}
	printf("HP:%d/%d DMG:%d DEF:%d Money:%d Critical chance:%d%\n\n",HP,HP_max,DMG,DEF,Money,Crit); 
	if (HP<=300) {
			SetColor(12);
			puts("You're dying!\n");
			SetColor(15);
	}
}
int Fight(char x){
	int HP_mon,DMG_mon,tmp;
	tmp=x-'a';
	HP_mon=300+tmp*200;
	DMG_mon=100+tmp*50;
	while (HP_mon>0 && HP>0) {
		system("cls");
		printf("  You   : HP:%d DMG:%d DEF:%d\n\n",HP,DMG,DEF);
		printf("Monster : HP:%d DMG:%d\n\n",HP_mon,DMG_mon);
		
		Sleep(1000);
		int tmp;
		tmp=rand()%100+1;
		if (tmp<=Crit) {
			HP_mon-=2*DMG; 
			if (DMG_mon>=DEF)
				HP-=DMG_mon-DEF;
			puts("Crit!!!");
			Sleep(500);
		}
		else {
			HP_mon-=DMG; 
			if (DMG_mon>=DEF)
				HP-=DMG_mon-DEF;
		}
	}
	if (HP<=0) {
		printf("GG!\n");
		system("pause");
		return 0;
	}
	else {
		Money+=2+tmp*2;
		return 1;
	}
}
void up(){
	m[F][X--][Y]=' ';
	if (m[F][X][Y]=='$') Money+=5;
	else if (m[F][X][Y]=='&') Money+=20;
	else if (m[F][X][Y]=='*') {
		HP+=200;
		if (HP>HP_max) HP=HP_max;
	}	 
	else if (m[F][X][Y]=='%') {
		DMG+=250;
	}
	else if (m[F][X][Y]=='+') {F++; X--;}
	else if (m[F][X][Y]=='-') {F--; X--;}
	else if (m[F][X][Y]=='!') Tips();
	else if (m[F][X][Y]>='a' && m[F][X][Y]<='z') 
		if (!Fight(m[F][X][Y])) {
			exit(0);	
		}
	
	m[F][X][Y]='@';
}
void down(){
	m[F][X++][Y]=' ';
	if (m[F][X][Y]=='$') Money+=5;
	else if (m[F][X][Y]=='&') Money+=20;
	else if (m[F][X][Y]=='*') {
		HP+=200;
		if (HP>HP_max) HP=HP_max;
	}	 
	else if (m[F][X][Y]=='%') {
		DMG+=250;
	}
	else if (m[F][X][Y]=='+') {F++; X--;}
	else if (m[F][X][Y]=='-') {F--; X--;}
	else if (m[F][X][Y]=='!') Tips();
	else if (m[F][X][Y]>='a' && m[F][X][Y]<='z') 
		if (!Fight(m[F][X][Y])) {
			exit(0);	
		}
	
	m[F][X][Y]='@';
}
void left(){
	m[F][X][Y--]=' ';
	if (m[F][X][Y]=='$') Money+=5;
	else if (m[F][X][Y]=='&') Money+=20;
	else if (m[F][X][Y]=='*') {
		HP+=200;
		if (HP>HP_max) HP=HP_max;
	}	 
	else if (m[F][X][Y]=='%') {
		DMG+=250;
	}
	else if (m[F][X][Y]=='+') {F++; X--;}
	else if (m[F][X][Y]=='-') {F--; X--;}
	else if (m[F][X][Y]=='!') Tips();
	else if (m[F][X][Y]>='a' && m[F][X][Y]<='z') 
		if (!Fight(m[F][X][Y])) {
			exit(0);	
		}
	
	m[F][X][Y]='@';
}
void right(){
	m[F][X][Y++]=' ';
	if (m[F][X][Y]=='$') Money+=5;
	else if (m[F][X][Y]=='&') Money+=20;
	else if (m[F][X][Y]=='*') {
		HP+=200;
		if (HP>HP_max) HP=HP_max;
	}	 
	else if (m[F][X][Y]=='%') {
		DMG+=250;
	}
	else if (m[F][X][Y]=='+') {F++; X--;}
	else if (m[F][X][Y]=='-') {F--; X--;}
	else if (m[F][X][Y]=='!') Tips();
	else if (m[F][X][Y]>='a' && m[F][X][Y]<='z') 
		if (!Fight(m[F][X][Y])) {
			exit(0);	
		}
	
	m[F][X][Y]='@';
}
void shop(){
	system("cls");
	printf("HP(press '1' to upgrade) : upgrade costs : %d (increase by 150)\n\n",HPcosts);
	printf("DMG(press '2' to upgrade) : upgrade costs : %d (increase by 40)\n\n",DMGcosts);
	printf("Recover(press '3') : costs : %d (recover by 100)\n\n",Recover_costs);
	printf("Critical chance(press '4' to upgrade) : upgrade costs : %d (increase by 5%)\n\n",Crit_costs);
	printf("DEF(press '5' to upgrade) : upgrade costs : %d (increase by 20)\n\n",DEFcosts);
	printf("You have money of %d\n\n",Money);
	printf("press anykey to back game\n\n");
	c=getch();
	if (c=='1' && Money>=HPcosts) {
		Money-=HPcosts;
		HPcosts+=2;
		HP_max+=150;
		HP+=150;
	}
	else if (c=='2' && Money>=DMGcosts) {
		Money-=DMGcosts;
		DMGcosts+=3;
		DMG+=40;
	}
	else if (c=='3' && Money>=Recover_costs) {
		Money-=Recover_costs;
		Recover_costs++;
		HP+=100;
	}
	else if (c=='4' && Money>=Crit_costs) {
		Money-=Crit_costs;
		Crit_costs*=2;
		Crit+=5;
	}
	else if (c=='5' && Money>=DEFcosts) {
		Money-=DEFcosts;
		DEFcosts+=6;
		DEF+=20;
	}
}
void Play(){
	c=getch();
	if ((c=='w' || c==72) && m[F][X-1][Y]!='#') up();
	else if ((c=='s' || c==80) && m[F][X+1][Y]!='#') down();
	else if ((c=='a' || c==75) && m[F][X][Y-1]!='#') left();
	else if ((c=='d' || c==77) && m[F][X][Y+1]!='#') right();
	else if (c=='o') shop();
	else if (c=='l') {F++; X=10; Y=15;}
	else if (c=='k') {F--; X=10; Y=15;}
	else if (c=='r') DisP();
}
int main(){
	DisP();
	Print();
	srand(time(0));
	while (1){
		Play();
		system("cls");
		Print();	
	}
	return 0;
}
/*
Signs in game
#:墙 a~z:怪(lv1~lv26) $:钱(+5) +-通向下(上)一层 *:加血 @:人 %:大宝剑(DMG+400) 
1F:
###############
#$$aa  aa  a$$#
#aa  a   a a###
######### ## a#
# a         aa#
#$a# !!!!! ##a#
#$$# ! @ ! #bb#
#$$#       #b##
#$$#*** ***#c+#
###############
2F:
###############
# c c$$c$c&c&c#
# c #* #$&&d&&#
#  *##*#$c$c$c#
# **#dd#####$b#
#   #&bcbc&##b#
#** #&cbcb&bbb#
#*  ##d##d### #
#+ ddef&hh*%#-#
###############
*/
/*
Notices in code
m[i][j][k]:m地图 i,j,k层数,行数,列数
F:当前层数 X:当前行数 Y:当前列数 Money:当前资产
*/
/*
Power of monsters and you
a:	HP:300 		DMG:100
b~z:HP:(+200)	DMG:(+50)
you:HP:500[+150]	DMG:150[+50]
*/
/*
Upgrading your abilities costs
HP:3(+2) DMG:5(+3) Cc:1(*2) DEF:10(+6)
*/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值