Labyrinth
#include <bits/stdc++.h> #include<windows.h> #include<conio.h> #define ef else if using namespace std; #define Rint register int #define Lint long long int #define Uint unsigned long long enum CFC { FRed =FOREGROUND_INTENSITY |FOREGROUND_RED, FGreen =FOREGROUND_INTENSITY |FOREGROUND_GREEN, FBlue =FOREGROUND_INTENSITY |FOREGROUND_BLUE, FYellow =FOREGROUND_INTENSITY |FOREGROUND_RED |FOREGROUND_GREEN, FPurple =FOREGROUND_INTENSITY |FOREGROUND_RED |FOREGROUND_BLUE, FCyan =FOREGROUND_INTENSITY |FOREGROUND_GREEN |FOREGROUND_BLUE, FGray =FOREGROUND_INTENSITY, FWhite = FOREGROUND_RED |FOREGROUND_GREEN |FOREGROUND_BLUE, FHighWhite=FOREGROUND_INTENSITY |FOREGROUND_RED |FOREGROUND_GREEN |FOREGROUND_BLUE, FBlack =0, }; enum CBC { BRed =BACKGROUND_INTENSITY |BACKGROUND_RED, BGreen =BACKGROUND_INTENSITY |BACKGROUND_GREEN, BBlue =BACKGROUND_INTENSITY |BACKGROUND_BLUE, BYellow =BACKGROUND_INTENSITY |BACKGROUND_RED |BACKGROUND_GREEN, BPurple =BACKGROUND_INTENSITY |BACKGROUND_RED |BACKGROUND_BLUE, BCyan =BACKGROUND_INTENSITY |BACKGROUND_GREEN |BACKGROUND_BLUE, BWhite = BACKGROUND_RED |BACKGROUND_GREEN |BACKGROUND_BLUE, BHighWhite=BACKGROUND_INTENSITY |BACKGROUND_RED |BACKGROUND_GREEN |BACKGROUND_BLUE, BBlack =0, }; void SC(CFC foreColor=FWhite, CBC backColor=BBlack) { HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle, foreColor | backColor); } string _map[100]; void cursor(int x,int y) { HANDLE hout; COORD coord; coord.X=y; coord.Y=x; hout=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hout,coord); } char intoch(int x) { return x^48; } string LV1[100]; int money,key,atk,def,HP,gx; double score; bool Course=1,quit = 0; int Exprint; string intosnum(int x,int p) { string s=""; if (!x) s="0"+s; for (; x; s=intoch(x%10)+s,x/=10); for (; s.length()<p;) { s+=' '; if (s.length()<p) s=' '+s; } return s; } string intosloat(float x,int p) { string s="."; float y = (int)(x*10)/10.0-((int)x); int z=x; if (!z)s = "0."; for (; z!=0; s=intoch(z%10)+s,z/=10); s += intoch(y*10); for (; s.length()<p;) { s=s+" "; if (s.length()<p) s=" "+s; } return s; } void Change(int x,int y,char ch) { cursor(x,y); if (x == 6 && y == 54 && ch == 'K') SC(FBlue,BBlack), putchar('K'),SC(FWhite,BBlack); if (y > 35 && y<47 && x>4 && x<12) { if (ch == '%') SC(FCyan,BBlack), putchar('%'),SC(FWhite,BBlack); ef (ch == '#') SC(FRed,BBlack), putchar('#'),SC(FWhite,BBlack); ef (ch == '=') SC(FRed,BBlack), putchar('='),SC(FWhite,BBlack); ef (ch == '!') SC(FRed,BBlack), putchar('!'),SC(FWhite,BBlack); ef (ch == 'T') SC(FGray,BBlack), putchar('T'),SC(FWhite,BBlack); ef (ch == 'H') SC(FGreen,BBlack), putchar('H'),SC(FWhite,BBlack); ef (ch == 'K') SC(FBlue,BBlack), putchar('K'),SC(FWhite,BBlack); ef (ch == 'M') SC(FBlue,BBlack), putchar('M'),SC(FWhite,BBlack); ef (ch == '$') SC(FYellow,BBlack), putchar('$'),SC(FWhite,BBlack); else putchar(ch); } else putchar(ch); } void ChangeRow(int x,char ch,int rowllen,int rowlen) { for (Rint i=rowllen; i<rowlen; i++) Change(i,x,ch); } void ChangeMap(int kk,int k,int ll,int l) { _map[12]="| |Time:"+intosnum(clock()/1000,6)+"| | | "; ChangeRow(ll,'|',kk,k), Sleep(5), ChangeRow(ll,'|',kk,k), ChangeRow(ll+1,'*',kk,k), Sleep(5), ChangeRow(ll,'|',kk,k), ChangeRow(ll+1,'*',kk,k), ChangeRow(ll+2,'|',kk,k), Sleep(5); for (Rint i=ll; i<=l+3; i++) { while (_kbhit()) char ch = getch(); if (i+2<l) ChangeRow(i+1,'|',kk,k); if (i+3<l) ChangeRow(i+2,'*',kk,k); if (i+4<l) ChangeRow(i+3,'|',kk,k); for (Rint j=kk; j<k; j++) { Change(j,i,_map[j][i]); if (i-3>=0) Change(j,i-3,_map[j][i-3]); } if (i<=l) for (int j=kk; j<k; j++) if (!(rand()%3)) Change(j,i,'*'); Sleep(5); } } void pmp() { if (Exprint>0) { for (Rint i=3,j; i<13; i++) for (cursor(i,j=2); j<47; j++) if (j > 35 && j<47 && i>4 && i<12) { if (_map[i][j] == '%') SC(FCyan,BBlack), putchar('%'),SC(FWhite,BBlack); ef (_map[i][j] == 'T') SC(FGray,BBlack), putchar('T'),SC(FWhite,BBlack); ef (_map[i][j] == '#') SC(FRed,BBlack), putchar('#'),SC(FWhite,BBlack); ef (_map[i][j] == '=') SC(FRed,BBlack), putchar('='),SC(FWhite,BBlack); ef (_map[i][j] == '!') SC(FRed,BBlack), putchar('!'),SC(FWhite,BBlack); ef (_map[i][j] == 'H') SC(FGreen,BBlack), putchar('H'),SC(FWhite,BBlack); ef (_map[i][j] == 'K') SC(FBlue,BBlack), putchar('K'),SC(FWhite,BBlack); ef (_map[i][j] == 'M') SC(FBlue,BBlack), putchar('M'),SC(FWhite,BBlack); ef (_map[i][j] == '$') SC(FYellow,BBlack), putchar('$'),SC(FWhite,BBlack); else putchar(_map[i][j]); } else putchar(_map[i][j]); _map[3] ="| |HP:"+intosnum(HP,5)+" | ATK |Money| ", _map[4] ="| +-----+-----+-----+-----+ +-----------+ "+intosnum(atk,3)+" |"+intosnum(money,5)+"| ", _map[5] ="| |Q: |W: |E: |R: | | | +-----+ ", _map[6] ="| | Quit| Up | Shop|Agree| | | |K:"+intosnum(key,3)+"| ", _map[7] ="| +-----+-----+-----+-----+ | | DEF |K: 1 | ", _map[8] ="| +-----+-----+-----+-----+ | | "+intosnum(def,3)+" |K: 1 | ", _map[9] ="| |A: |S: |D: |F: | | | +-----+ ", _map[10]="| | Left| Down|Right| Help| | | |Score| ", _map[11]="| +-----+-----+-----+-----+ +-----------+ |"+intosloat(score,5)+"| "; _map[12]="| |Time:"+intosnum(clock()/1000,6)+"| | | "; } else for (Rint i=3,j; i<12; i++) for (cursor(i,j=36); j<47; j++) if (j > 35 && j<47 && i>4 && i<12) { if (_map[i][j] == '%') SC(FCyan,BBlack), putchar('%'),SC(FWhite,BBlack); ef (_map[i][j] == 'T') SC(FGray,BBlack), putchar('T'),SC(FWhite,BBlack); ef (_map[i][j] == '#') SC(FRed,BBlack), putchar('#'),SC(FWhite,BBlack); ef (_map[i][j] == '=') SC(FRed,BBlack), putchar('='),SC(FWhite,BBlack); ef (_map[i][j] == '!') SC(FRed,BBlack), putchar('!'),SC(FWhite,BBlack); ef (_map[i][j] == 'H') SC(FGreen,BBlack), putchar('H'),SC(FWhite,BBlack); ef (_map[i][j] == 'K') SC(FBlue,BBlack), putchar('K'),SC(FWhite,BBlack); ef (_map[i][j] == 'M') SC(FBlue,BBlack), putchar('M'),SC(FWhite,BBlack); ef (_map[i][j] == '$') SC(FYellow,BBlack), putchar('$'),SC(FWhite,BBlack); else putchar(_map[i][j]); } else putchar(_map[i][j]); cursor(12,41); cout<<intosnum(clock()/1000,6); } void stopp() { while (!_kbhit()); getch(); } int lv=1; string LV[100][100]; int LVX[100],LVY[100]; int LVN[100],LVM[100]; string Infor(int lv,int x,int y,int l) { if (lv == 0) { if (x == 0 && y == 0) if (l == 2) return " Are You Sure? "; ef (l == 3) return " If You Do this, "; ef (l == 4) return " Your Game Progress "; ef (l == 5) return " Will NOT Be SAVED !!! "; } if (lv == 1) { if (x == 6 && y == 2) if (l == 2) return " Hello "; ef (l == 3) return " Welcom to \" Labyrinth \" "; } if (lv == 2) { if (x == 3 && y == 5) if (l == 2) return " Pick Up Money "; ef (l == 3) return "And You Can Use Money To Shop "; } if (lv == 3) { if (x == 7 && y == 6) if (l == 2) return " Use The Key "; ef (l == 3) return " To Open The Door "; if (x == 5 && y == 12) if (l == 2) return " This Is The Door. "; ef (l == 4) return " Now,Use The Key To Open It "; } if (lv == 4) { if (x == 5 && y == 3) if (l == 2) return " Bypassing Traps "; ef (l == 3) return " It Will Reduce Your HP "; ef (l == 4) return " If Your HP Is Lower Than 0 "; ef (l == 5) return " Then You Die "; if (x == 5 && y == 7) if (l == 3) return " Pick Up \"H\" To Increase HP "; } if (lv == 5) { if (x == 2 && y == 5) if (l == 2) return " Press E To Open Shop "; ef (l == 4) return " In It, "; ef (l == 5) return " You Can Buy Keys Or HP "; } return " "; } void gotoshop() { _map[3] ="| +---------------------------+ |HP:"+intosnum(HP,5)+" | ATK |Money| "; _map[4] ="| | Welcome To MyShop | +-----------+ "+intosnum(atk,3)+" |"+intosnum(money,5)+"| "; _map[5] ="| +---------------------------+ | | +-----+ "; _map[6] ="| |K:$| 1:2 | 10:18 | 20:34 | | | |K:"+intosnum(key,3)+"| "; _map[7] ="| |---+=======+-------+-------| | | DEF |K: 1 | "; _map[8] ="| |K:$| 1:2 | 10:18 | 20:34 | | | "+intosnum(def,3)+" |K: 1 | "; _map[9] ="| |---+=======+-------+-------| | | +-----+ "; _map[10]="| |K:$| 1:2 | 10:18 | 20:34 | | | |Score| "; _map[11]="| +---------------------------+ +-----------+ |"+intosloat(score,5)+"| "; _map[12]="| |Time:"+intosnum(clock()/1000,6)+"| | | "; int nowx=1,nowy=1; bool flag=0; for (Rint i=3,j; i<13; i++) for (cursor(i,j=1); j<34; j++) putchar(_map[i][j]); for (;;){ while (!_kbhit()) cursor(12,41),cout<<intosnum(clock()/1000,6); char ch=getch(); for (Rint i=1; i<=7; ++i) LV[0][nowx*2+5][i+nowy*8-1] = '-', LV[0][nowx*2+3][i+nowy*8-1] = '-'; bool move = 1; Rint need=-1,ek=0,eh=0; switch (ch){ case 'w': nowx--; break; case 's': nowx++; break; case 'a': nowy--; break; case 'd': nowy++; break; case 'r': if (nowx<3) if (nowy==1) need=2,ek=1; else if (nowy==2) need=18,ek=10; else need=34,ek=20; if (need != -1 && need <= money) score+=(need/5.0+(nowy-1)*0.5),money -= need,cursor(4,54), cout<<intosnum(money,5)<<endl, _map[4] ="| +-----+-----+-----+-----+ +-----------+ "+intosnum(atk,3)+" |"+intosnum(money,5)+"| ", _map[11]="| +---------------------------+ +-----------+ |"+intosloat(score,5)+"| ", key += ek,cursor(6,56),cout<<intosnum(key,3)<<endl, _map[6] ="| | Quit| Up | Shop|Agree| | | |K:"+intosnum(key,3)+"| "; break; case 'q': _map[3] ="| |HP:"+intosnum(HP,5)+" | ATK |Money| ", _map[4] ="| +-----+-----+-----+-----+ +-----------+ "+intosnum(atk,3)+" | 0 | ", _map[5] ="| |Q: |W: |E: |R: | | | +-----+ ", _map[6] ="| | Quit| Up | Shop|Agree| | | |K:"+intosnum(key,3)+"| ", _map[7] ="| +-----+-----+-----+-----+ | | DEF |K: 1 | ", _map[8] ="| +-----+-----+-----+-----+ | | "+intosnum(def,3)+" |K: 1 | ", _map[9] ="| |A: |S: |D: |F: | | | +-----+ ", _map[10]="| | Left| Down|Right| Help| | | |Score| ", _map[11]="| +-----+-----+-----+-----+ +-----------+ |"+intosloat(score,5)+"| ", _map[12]="| |Time:"+intosnum(clock()/1000,6)+"| | | "; for (Rint i=3,j; i<13; ++i) for (cursor(i,j=2); j<34; ++j) putchar(_map[i][j]); return; } if (nowx<0) nowx=move=0; if (nowy<1) nowy=1,move=0; if (nowy>3) nowy=3,move=0; if (nowx>3) nowx=3,move=0; if (move){ for (Rint i=1; i<=7; ++i) LV[0][nowx*2+5][i+nowy*8-1] = '=', LV[0][nowx*2+3][i+nowy*8-1] = '='; for (Rint i=6,j; i<=10; ++i) for (cursor(i,j=4); j<=30; ++j) putchar(LV[0][i+nowx*2-4][j]); } } } void Labyrinth(){ char cmd[32]={0}; sprintf(cmd, "MODE CON: COLS=%d LINES=%d",63 ,18), system(cmd), money=0,HP=100,key=1,atk=5,def=5, _map[0] ="+----------------------------------------------------------+ ", _map[1] ="| Level 1 | ", _map[2] ="+----------------------------------+-----------+-----+-----+ ", _map[3] ="| |HP:100 | ATK |Money| ", _map[4] ="| +-----+-----+-----+-----+ +-----------+ 5 | 0 | ", _map[5] ="| |Q: |W: |E: |R: | | | +-----+ ", _map[6] ="| | Quit| Up | Shop|Agree| | | |K: 1 | ", _map[7] ="| +-----+-----+-----+-----+ | @ | DEF |K: 1 | ", _map[8] ="| +-----+-----+-----+-----+ | | 5 |K: 1 | ", _map[9] ="| |A: |S: |D: |F: | | | +-----+ ", _map[10]="| | Left| Down|Right| Help| | | |Score| ", _map[11]="| +-----+-----+-----+-----+ +-----------+ | 0 | ", _map[12]="| |Time: | | | ", _map[13]="+----------------------------------------------+-----+-----+ ", _map[14]="| This game is provided by HTJ. | ", _map[15]="+----------------------------------------------------------+ ", LV[0][1] =" +---------------------------+", LV[0][2] =" | Press R To Sure |", LV[0][3] =" +---+-------+-------+-------+", LV[0][4] =" |K:$| 1:2 | 10:18 | 20:34 |", LV[0][5] =" |---+-------+-------+-------+", LV[0][6] =" |K:$| 1:2 | 10:18 | 20:34 |", LV[0][7] =" |---+-------+-------+-------+", LV[0][8] =" |K:$| 1:2 | 10:18 | 20:34 |", LV[0][9] =" |---+-------+-------+-------+", LV[0][10]=" |H:$| 1:5 | 10:28 | 20:55 |", LV[0][11]=" |---+-------+-------+-------+", LV[0][12]=" | | | | |", LV[0][13]=" |---+-------+-------+-------+", LV[1][1]="###########==##", LV[1][2]="# ## ## #", LV[1][3]="!$## # ## == !", LV[1][4]="! ## ## ## ## #", LV[1][5]="! !# ## ## ## #", LV[1][6]="# %# !# ## ## #", LV[1][7]="# !# !#>#", LV[1][8]="##==###===#####", LVN[1]=8,LVM[1]=14,LVX[1]=LVY[1]=2, LV[2][1]="#####==#######.", LV[2][2]="#< # # # ##", LV[2][3]="## % $ # !", LV[2][4]="###==##==##== !", LV[2][5]=".#$ $## !", LV[2][6]=".##$ #### #= #", LV[2][7]="..### ##>#", LV[2][8]="....###########", LVN[2]=8,LVM[2]=14,LVY[LVX[2]=2]=1, LV[3][1]="###############", LV[3][2]="#<### ##", LV[3][3]="# ## #==# #$ #", LV[3][4]="# $! ##K## ## #", LV[3][5]="# ## ## $# #% #", LV[3][6]="# ## ### # ## #", LV[3][7]="# # !% # ##M#", LV[3][8]="# #### ##>#", LV[3][9]="###############", LVN[3]=9,LVM[3]=14,LVX[3]=2,LVY[3]=1, LV[4][1]="######====###########", LV[4][2]="#<# T #>#", LV[4][3]="# # ## # #$ ##M# #", LV[4][4]="! # ###=# ### #$$# #", LV[4][5]="! #% ##% ## M$$# #", LV[4][6]="# ## ##$ ###= ===## #", LV[4][7]="# # ## #$#$ #", LV[4][8]="# ##H H###==###$#", LV[4][9]="###############==####", LVN[4]=9,LVM[4]=20,LVX[4]=2,LVY[4]=1, LV[5][1]= "####################", LV[5][2]= "#< % # #", LV[5][3]= "# # # # # #", LV[5][4]= "#M###M###M## #M### #", LV[5][5]= "# # # # $# #", LV[5][6]= "# # #$$$# #$$# M#", LV[5][7]= "##M######M########M#", LV[5][8]= "# # #$ M #$$# #", LV[5][9]= "# M #$$$# M$$# >#", LV[5][10]="####################", LVN[5]=10,LVM[5]=20,LVX[5]=2,LVY[5]=1, LV[6][1]= "##########", LV[6][2]= "#< $$$$$$#", LV[6][3]= "#$ $#", LV[6][4]= "#$$$$$$ >#", LV[6][5]= "##########", LVN[6]=5,LVM[6]=10,LVX[6]=2,LVY[6]=1, LV[7][1]= "#####===#######################=====####", LV[7][2]= "#< M ##$$ $# #", LV[7][3]= "# # # #$ #==#$#M##M####===#==## #", LV[7][4]= "!M###M#= ##==#= #$$### # > M # #", LV[7][5]= "! #$$# M #$$ # ########## ! #", LV[7][6]= "# #$ # M #M#=M=# # # # #", LV[7][7]= "#= ####==M===#### # # ######===# # #", LV[7][8]= "# # # # $#$$ # > # # # # # #", LV[7][9]= "! M # M$ M$$ # # # # #=# # # #", LV[7][10]="! =#####==#===#####===# # #M#H# ! # #", LV[7][11]="! # #T# # #H# ! # #", LV[7][12]="#MM#######====######### # # #$# ! # #", LV[7][13]="# #H <# # # #M# T M # #", LV[7][14]="# #H # # # # ###===### #", LV[7][15]="# #$$ # M # # ## #", LV[7][16]="# #== #==============# # # # #==# ## #", LV[7][17]="# MM M M # # # #$$# ## #", LV[7][18]="# ####M#####======######==# # #K$# ## #", LV[7][19]="# M # #", LV[7][20]="####################====###########==###", LVN[7]=20,LVM[7]=40,LVX[7]=2,LVY[7]=1, LV[8][ 1]="##################################################", LV[8][ 2]="#<H#> $$# MMMMMM#", LV[8][ 3]="#MT####################-#############M########## #", LV[8][ 4]="#$M$$#MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM######$$$$$#", LV[8][ 5]="#MT$$MM#<##TT###############################M#####", LV[8][ 6]="######TTT###MMMM#$$$KM# HHHH$$$###########M#$$##", LV[8][ 7]="#$M$$#MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM######$$$$$#", LV[8][ 8]="#MT$$MM#<##T################################M#####", LV[8][ 9]="######TTT#>#MMMM#$$$KM# HHHH$$$#>#########M#$$##", LV[8][10]="#######$#$MMMMMM#$THM# $$$$#K# MM$$# # M$$#", LV[8][11]="##$$MMMH#######T#M$M M####### # #$#$#M# # M$#", LV[8][12]="#$$$MM#H#$$HK#$M#$$M #$$$#$$# # M$$#$K|M# # M#", LV[8][13]="####### #$M####$#### #$$$#M## # ###$$# # $ M #", LV[8][14]="#$|KH$# #$M # # #$$M#$$# # ##$# # M #", LV[8][15]="#HM$$T# #-# # ####M#KMKM$$## # # # M #", LV[8][16]="#MTMT$M #$T#### #$$$$$#M###### # ### # M # T#", LV[8][17]="####### !$$$$$$$#$$$$$| # #$$$### # T #", LV[8][18]="#$$M M ######## ### ########### #$MMM # # T ##", LV[8][19]="#$$# # M # M # #", LV[8][20]="#-T#M# #$####################M## ========##$# #", LV[8][21]="#MM# # ###KM M $# #H$M M$$#H#", LV[8][22]="# # # M #$M##########M #$M#M##########M######$##", LV[8][23]="#M# #### #$M# !!!$# #$M# # M M$$$# #", LV[8][24]="# # M$$$#=M #$M# =#># #$M# =# #===M M M$$# #", LV[8][25]="# # |$#M# = #$M# M# #$M# =$# #$$M M$M M$# #", LV[8][26]="# # |TH$#$ = #$M# #$M# M=$$# #$M M$M$M M# #", LV[8][27]="# # |=-=# $ = #$M# #$M# M-$$$# #T#MTMTMT#T# #", LV[8][28]="#H# |$HH#$ $ = #$M#$M# =$$$$# #HHH#$T$T#HHH# #", LV[8][29]="##< |$MM# H M = #$$M# =$$$$$# #MTM#H$H$#MTM# #", LV[8][30]="## |$$$#$ M T M #$# =$$$$$$# #$$$#$H$H#$$$# #", LV[8][31]="#$##M###$ H M T = # =$$$$$$$# #M# #### #M# M#", LV[8][32]="#$$$$$$$#$ $ M T = M =$$$$$$$$# MM#", LV[8][33]="######################M#########################M#", LV[8][34]="#$$$$$$$|$$$$$$$$MMMMM$$$$$MMMMMMMMMMMMMMMMMMMMMM#", LV[8][35]="#$$$$MMMMMMMM$$$$$$$MMMMMMMMM#MMMMMM$$$$$$$$MMMMM#", LV[8][36]="##################################################", LVN[8]=36,LVM[8]=50,LVX[8]=2,LVY[8]=1,lv=1; for (Rint move = 1;;){ _map[1]="| Level "+intosnum(lv,0)+" |"; for (Rint i=5; i<11; i++) for (Rint j=36; j<47; j++){ Rint nx=i-7+LVX[lv],ny=j-40+LVY[lv]; if (nx<1||nx>LVN[lv]||ny<0||ny>LVM[lv]) _map[i][j]='.'; else _map[i][j]=LV[lv][nx][ny]; } _map[7][40]='@', ChangeMap(0,16,0,59); for (;;){ for (Rint i=5; i<11; i++) for (Rint j=36; j<47; j++){ Rint nx=i-7+LVX[lv],ny=j-40+LVY[lv]; if (nx<1||nx>LVN[lv]||ny<0||ny>LVM[lv]) _map[i][j]='.'; else _map[i][j]=LV[lv][nx][ny]; } _map[7][40]='@'; if (move) pmp(),Exprint--,move=0; while (!_kbhit()) cursor(12,41),cout<<intosnum(clock()/1000,6), cursor(11,54),cout<<intosloat(score,5); char ch=getch(); int kx=LVX[lv],ky=LVY[lv]; switch (ch){ case 'w': kx--,move=1; break; case 's': kx++,move=1; break; case 'a': ky--,move=1; break; case 'd': ky++,move=1; break; case 'e': gotoshop(); continue; case 'q': _map[3] ="| +------------------------------+ |HP:"+intosnum(HP,5)+" | ATK |Money| ", _map[4] ="| | Information | +-----------+ "+intosnum(atk,3)+" |"+intosnum(money,5)+"| ", _map[5] ="| +------------------------------+ | | +-----+ ", _map[6] ="| |"+Infor(0,0,0,1)+"| | | |K:"+intosnum(key,3)+"| ", _map[7] ="| |"+Infor(0,0,0,2)+"| | | DEF |K: 1 | ", _map[8] ="| |"+Infor(0,0,0,3)+"| | | "+intosnum(def,3)+" |K: 1 | ", _map[9] ="| |"+Infor(0,0,0,4)+"| | | +-----+ ", _map[10]="| |"+Infor(0,0,0,5)+"| | | |Score| ", _map[11]="| |"+Infor(0,0,0,6)+"| +-----------+ |"+intosloat(score,5)+"| ", _map[12]="| +------------------------------+ |Time:"+intosnum(clock()/1000,6)+"| | | "; for (Rint i=3,j; i<13; i++) for (cursor(i,j=1); j<34; j++) putchar(_map[i][j]); quit = 1; continue; case 'r': if (quit) return; } if (move) { switch (LV[lv][kx][ky]){ case '!': case '=': case '-': case '|': case '#': move = 0; continue; case '%': _map[3] ="| +------------------------------+ |HP:"+intosnum(HP,5)+" | ATK |Money| ", _map[4] ="| | Information | +-----------+ "+intosnum(atk,3)+" |"+intosnum(money,5)+"| ", _map[5] ="| +------------------------------+ | | +-----+ ", _map[6] ="| |"+Infor(lv,kx,ky,1)+"| | | |K:"+intosnum(key,3)+"| ", _map[7] ="| |"+Infor(lv,kx,ky,2)+"| | | DEF |K: 1 | ", _map[8] ="| |"+Infor(lv,kx,ky,3)+"| | | "+intosnum(def,3)+" |K: 1 | ", _map[9] ="| |"+Infor(lv,kx,ky,4)+"| | | +-----+ ", _map[10]="| |"+Infor(lv,kx,ky,5)+"| | | |Score| ", _map[11]="| |"+Infor(lv,kx,ky,6)+"| +-----------+ |"+intosloat(score,5)+"| ", _map[12]="| +------------------------------+ |Time:"+intosnum(clock()/1000,6)+"| | | "; Exprint = 3; break; case '$': if (lv%6) score+=0.2; LV[lv][kx][ky]=' ',money++,cursor(4,54), cout<<intosnum(money,5)<<endl; _map[11]="| +-----+-----+-----+-----+ +-----------+ |"+intosloat(score,5)+"| ", _map[4] ="| +-----+-----+-----+-----+ +-----------+ "+intosnum(atk,3)+" |"+intosnum(money,5)+"| "; break; case 'K': LV[lv][kx][ky]=' ',key++,score+=0.3,cursor(6,56),cout<<intosnum(key,3)<<endl, _map[11]="| +-----+-----+-----+-----+ +-----------+ |"+intosloat(score,5)+"| ", _map[6]="| | Quit| Up | Shop|Agree| | | |K:"+intosnum(key,3)+"| "; break; case 'M': if (!key) { move=0; continue; } LV[lv][kx][ky]=' ',score+=0.1,key--;cursor(6,56),cout<<intosnum(key,3)<<endl, _map[11]="| +-----+-----+-----+-----+ +-----------+ |"+intosloat(score,5)+"| ", _map[6]="| | Quit| Up | Shop|Agree| | | |K:"+intosnum(key,3)+"| "; break; case 'T': { cursor(14,0), cout<<(_map[14]="| You steppend on a trap. | ")<<endl, LV[lv][kx][ky]=' ',HP-=20,score-=(0.2),cursor(3,39),cout<<intosnum(HP,gx=5)<<endl, _map[11]="| +-----+-----+-----+-----+ +-----------+ |"+intosloat(score,5)+"| ", _map[3]="| |HP:"+intosnum(HP,5)+" | ATK |Money| "; if(HP<=0){ system("cls"); puts("You lose"); system("pause"); return; } break; } case 'H': { cursor(14,0), cout<<(_map[14]="| HP++ | ")<<endl, LV[lv][kx][ky]=' ',HP+=10,score+=(0.1),cursor(3,39),cout<<intosnum(HP,gx=5)<<endl; _map[11]="| +-----+-----+-----+-----+ +-----------+ |"+intosloat(score,5)+"| ", _map[3]="| |HP:"+intosnum(HP,5)+" | ATK |Money| "; break; } } gx--; if (!gx) cursor(14,0),cout<<(_map[14]="| This game is provided by HTJ. | ")<<endl; if (LV[lv][kx][ky]=='>') { lv++, system("cls"); break; } else if (LV[lv][kx][ky]=='<') { lv--, system("cls"); break; } LVX[lv]=kx,LVY[lv]=ky; } else{ cursor(12,41); cout<<intosnum(clock()/1000,6); } } Sleep(500); } } int main() { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO CursorInfo; GetConsoleCursorInfo(handle, &CursorInfo); CursorInfo.bVisible = false; // CursorInfo.dwSize = 1; SetConsoleCursorInfo(handle, &CursorInfo); Labyrinth(); return 0; }