#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)
*/