主頁 >  其他 > 勇闖迷塔小游戲(c++)

勇闖迷塔小游戲(c++)

2021-10-18 15:56:25 其他

游戲背景:

在古老的傳說中,有一座五層妖塔,塔中住著魔王和他手下的妖精們,

一日,妖塔中的魔術師決定舉辦一次祭祀活動,以增強魔王的法力,他們抓來了一個可憐的流浪商人,關在第四層的一個房間里,他被魔術師施了魔法(魔化了),準備拿來當作祭品,

國王聽說此事后,派出了一位勇士(就是你),來到了妖塔下面,你的任務是干掉魔王,為國家除害,當然,你不是空手去的,你隨身攜帶一本怪物書(monster_book),每次殺掉怪物之后,你都會獲取與怪物相關的資料,在妖塔中,有很多妖怪散落的裝備或者藥水可以供你使用,還有一些商店(奸商)給你提供商品,

...好了,你自己玩吧...

------------------------------------------------丑不拉嘰的分割線---------------------------------------------------------

#include<algorithm>
#include<cmath>
#include<stdio.h>
#include<iostream>
#include<string>
#include<cstring>
#include<windows.h>
#include<conio.h>
#include<cstdlib>
#include<ctime>
#include<fstream>
using namespace std;
#define BNUM 17
#define TOWER 5
#define COLS 40
#define LINES 100 
#define RUNE 22
struct BLOCKS
{
	string name;
	int hp;
	int attack;
	int defence;
	bool go;
	bool monster;
	int xp;
	int number;
};
struct PLAYER
{
	string name;
	int hp;
	int attack;
	int defence;
	int tower;
	int x;
	int y;
	int xp;
	int level;
	int money;
};
unsigned long long uplevel[]={0,10,25,40,60,80,150,300,400,650,800,950,1100,1200,1500,1800,2000,3100,5000,6500,7900,8900,9700,10000,12000,14000,15860,17738,18939,20039,21950,25910,27830,29382,31829,33849,35939,36788,38193,41829,43829,45888,47361,49382,51853,54830};
BLOCKS map[BNUM][COLS][LINES];
string runec[RUNE]=
{
"魔王在進行一種祭祀儀式(最高機密,不可泄漏),只要集齊了日月的陰陽之力(眼熟吧),就可以召喚^&*!%!%@(字跡不清)",
"吼...",
"妖怪們最喜歡在一層的這個右側房間玩耍了,因為有衛兵和騎士把守,十分安全...",
"傳說中的儲物間中,存放著妖精們的武器和神秘藥水,不知有何作用...",
"真是個奇怪的騎士,還帶著假面,還是不要惹他為好...",
"長滿了青苔和雜草的樓梯間,上面還傳來了不明的低吼聲...",
"魔法師在這里布下重重迷陣,并制造了許多分身,防止有人破壞了祭祀儀式...\n", 
"只有通過了迷陣,才能找到下一個樓梯間...\n",
"無數的怪物在里面防守著,可見內部可能藏著什么東西...\n", 
"魔王允許一個人類在這里開設商店,并且高價賣破爛,就是為了坑錢...\n",
"迷宮,又是迷宮...\n",
"魔法師:&*#$^!...(消失不見)...\n",
"魔王將魔獸與人類生下的孩子在這里培養,這些孩子長得歪瓜裂棗(很丑),但好像很喜歡打架...\n",
"偽裝的魔王在這里等待著客人的來臨...\n",
"別想著走捷徑,傻瓜...\n",
"傳說中的英文字母表(不會的請回幼兒園重讀),不過好像并沒有那么簡單呢...\n",
"一塊石碑: 旅行者的血肉,魔術師的魔法,還有被感染的人類,可以召喚        (只有聰明的人才能看見那些東西)...\n",
"只要干掉魔王,就能終止祭祀儀式,        就不會出現...\n",
"陰之月符文: $&^%!!# 聚集月的陰之力...\n",
"陰之日符文:#%^&!$! 聚集日的陰之力...\n",
"陽之日符文:!$!&^%# 聚集日的陽之力...\n",
"陽之月符文:#!!%^&$ 聚集月的陽之力...\n",
};
int rtower[RUNE]={0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,3,4,4,4,4,4,4};
int rposx[RUNE]={2,17,7,6,31,37,1,9,31,1,2,38,3,33,39,2,1,1,16,19,19,22};
int rposy[RUNE]={1,1,3,9,59,97,1,10,1,31,42,97,2,98,92,2,2,3,36,34,40,46};bool DidFile=false;
bool monster_[BNUM]={0};
string sympol=" #shjlmdbzaSftg@";
string Name[BNUM]={"空地","墻","衛兵","騎士","假面騎士","小丑","魔術師","商店","流浪商人_魔化","治療藥水","戰斧","盾牌","魔王_假","魔王_真","小鬼","符文"};
int Hp[BNUM]=     {0,0,100,200,800,1500,1800,0,1200,0,0,0,3000,6000,500,0};
int Attack[BNUM]= {0,0, 30, 50,220,200, 570,0,400,0,0,0,600,1000,130,0};
int Defence[BNUM]={0,0, 10, 20, 80,120, 220,0,150,0,0,0,350,500,35,0};
bool Go[BNUM]=    {1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
bool monster[BNUM]={0,0,1,1,1,1,1,0,1,0,0,0,1,1,1,0};
int Xp[BNUM]={2,0,10,30,60,100,150,0,100,0,0,0,5000,20000,300,10};
PLAYER player;
int sudu=5;
unsigned long long Time,now;
char MAP[TOWER][40][102]=
{
	{
		"# ##################################################################################################",
		"# ##      s  s     #z    #a    #a       #                                                          #",
		"#@s#  a   #  #  h  #     #     #        #                                                          #",
		"#z ########hh#########s######s#####h#####                           a                              #",
		"#  #     @                              #                                                          #",
		"#  #     ##h##    ########################                  a    S     S   a                       #",
		"#  #    #h# #h#  #zzs                    #                          z                              #",
		"# s@   #       #  ###                    #                  a    S     S   a                       #",
		"#  ####         ##### #       #     #    #                                                         #",
		"#  #ah                 #     #      #    #                          a                              #",
		"#  #hh                  #   #       #    #                                                         #",
		"# ##        l lg         # #        #    #                                                         #",
		"# #         mgm           #         ### ##        #####                            hh              #",
		"# #        g   l          #         #    #        #   #                           hhhh             #",
		"# #                       #         #    #        # # #############################hh###############",
		"# #                       #         #    ########## #               #                              #",
		"# #                       #         #    #########  ##              #                              #",
		"#@#                     ##     ##s#       #     #    #              #                              #",
		"#f##                  ##   #   #jh#   #    #   # #   ##             #                              #",
		"#f  #                #     #   ####  #  #   # #   #   #             #                              #",
		"#    ######ss########     #         # # #   # #    #   #            #                              #",
		"#          hh        ## ##           #  ## #   #     #  #           #                              #",
		"#                                    #  ##      #     # #           #                              #",
		"#                                     #   #      #  # #  #          #                              #",
		"#                                     # ##### ####  #    ##         #                              #",
		"#                                      #   #        #  ##           #                              #",
		"#                                           ####### # #             #                              #",
		"######################################################              #                              #",
		"#                                                                   #                              #",
		"#                                                                   #                              #",
		"#################### ######################################h######################## ###############",
		"#                                                 #        @    j         #                        #",
		"#     #######      #####  #                       #                       #                        #",
		"#          #         #    #                       #                       #                        #",
		"#         #          #    #                       #                       #                        #",
		"#        #           #    #                       #                                                #",
		"#       #        #   #    #                       #                       #                        #",
		"#      #         #   #    #                       #                       #                      @j#",
		"#    ########     ####    #######                 #                       #                      j #",
		"####################################################################################################",
	},
	{
		"# ##################################################################################################",
		"#@#    jSaz#   #  dj  @                   #                                                        #",
		"# #   ######   #      #            #      @                                                        #",
		"#h             #  hs  #            #### ####   ##   #####  #   #### ###### #######                 #",
		"#z#            #####################      # # #  # #   #  # #  #   #   #  ##  #                    #",
		"#a#   z z             #            #      #  #    #   #  ##### ####    #   ######                  #",
		"# #    z       ###hs###     l hh   h      # # #   #  #  #     ##   #   #  ##  #                    #",
		"# #   z z      #  sh  #     l hh   #      #####################################################    #",
		"# #            #      #            #      #           #   #   #    #   #      #  ##             ## #",
		"##########@#########################      #     ###     #   #    #   #   #    ##      #  ###  # #  #",
		"#  ##    # #z         #            #      #   #    ######################## ##       #  #   # #  # #",
		"##    #  #z######### ##            #      # #  #  ##             #  ####      ##  ##  #  # #   #   #",
		"# #####  # #       #  #            l      #  #  #          ##   #  #    #      # #  ##       #  #  #",
		"#z  j #  #z#          #       S    #      #   #  ## #        # #    ####    ##       #         # # #",
		"#  #  z  # # #######  #            #      #  ### # m#      ## #     #            ##         #####  #",
		"# #   #  #z#z      # ##            #      #   #   # ######       ## ###### ##  #   # # # # # #   # #",
		"# #####  # ####### #zz##############      #    #     #    #       #     #    ##  ##  ##   #  # #   #",
		"# z  ##  #z        ## #            #      #     ######   #   # ##m       ####  #   #  ## #  #   #  #",
		"#  z# #z ##########z h#     S      j      j#               # #             f  ## #  #   #  #   #   #",
		"#    z#              ##            #      #                 ##             # #    # # # #     #    #",
		"# # # #################     S      #      #                   # #### ####     #      # #       #   #",
		"#  #   z           #  #            #      #                   #    #    #                      #   #",
		"#########z ############            #      #                   # ####  ###                     #    #",
		"#  z     # #    z     ##############      #                   # #       #                     #    #",
		"#  z    h   h   z     #           jj      j#                  # #### ####                      #   #",
		"#################### ##    a       #      #                   #                               #    #",
		"#   z h  zzzz  h z    #            #      #                   #  #   #####                   #     #",
		"## ####################a   S   a   #      #                #  #  #   #                        #    #",
		"#  zh   aaaaaa  hz    #            #      #               ### #  #   #####                     #   #",
		"#################### ##            #      #                #  #  #       #                    #    #",
		"# hz   SSSSSSSS  zh   # a    a     #      #                   #  #   #####                    f    #",
		"#@####################################  ############## ######################## ####################",
		"#shjjjzsjshjjjjjjhsjsslfjfjjjshljsh      ####          #   #### #### #####       zzzzzzzz          #",
		"#sajjjzazjjzSshsajsssh######## ### ######              #      #    # #   #       zaaaaaaz          #",
		"#hzzsjsjzsjSjsjhjzjjjjshshhhslshhsh   #a#              #   ####  ### #####       zSSSSSSz          #",
		"#sjzsSzSzsSjjhsahhhhSh######## ### ####a#              #   #       # #   #       zzzzzzzz          #",
		"#sjjsssSzajjjsSjjjsshj#sszhzjahhsms   #a#              #   #### #### #####                         #",
		"#hjhzjassssssjssssshjj###########################################################################m##",
		"#jjhsjssjjhsssssjjsssajjjljjjjjjjjj                                                              @ #",
		"####################################################################################################",
	},
	{
		"####################################################################################################",
		"#  #                                                                                               #",
		"##@g        g       g                            g    ggggggggggg                                  #",
		"#gg##g#g#g#g#g#######g##########################g###############g################################  #",
		"#  g        g         g                        g                g                                  #",
		"#gg##g#g#g#g#g#########g######################g#################g################################  #",
		"#  g        g           g                    g                  g                                  #",
		"#gg##g#g#g#g#g###########g##################g###################g################################  #",
		"#  g        g             g                g                    g                                  #",
		"#gg##g#g#g#g#g#############g##############g#####################g################################  #",
		"#  g        g               g            g                      g                                  #",
		"#gg##g#g#g#g#g###############g##########g#######################g################################  #",
		"#  g        g                 g        g                        g                                  #",
		"#gg##g#g#g#g#g#################g######g#########################g##########gggggggggg############  #",
		"#  g        g                   g    g                          g                                  #",
		"#gg##g#g#g#g#g###################g##g###########################g################################  #",
		"#  g        g                     gg                            g                                  #",
		"#gg##g#g#g#g#g####################gg############################g##########gggggggggg############  #",
		"#  g        g                    g  g                           g                                  #",
		"#gg##g#g#g#g#g##################g####g##########################g################################  #",
		"#  g        g                  g      g                         g                                  #",
		"#gg##g#g#g#g#g################g########g########################g################################  #",
		"#  g        g                g          g                       g                                  #",
		"#jj##g#g#g#g#g##############g############g######################g################################  #",
		"#  g        g              g              g                     g                                  #",
		"#jj##g#g#g#g#g############g################g####################g################################  #",
		"#  g        g            g                  g                   g                                  #",
		"#jj##g#g#g#g#g##########g####################g##################g################################  #",
		"#  g        g          g                      g                 g                                  #",
		"#gg##g#g#g#g#g########g########################g################g################################  #",
		"#  g        g        g                          g               g                                  #",
		"#gg##g#g#g#g#g######g############################g##############g################################  #",
		"#  g #     z      aaaaaa    s  a                                                                  @#",
		"## #  # zzzzzzz   a a a      sa                                                                 zzz#",
		"#  # #   z z z   a  aa a     zs                                                                 zzz#",
		"##    ##z zzz z    aaaa     z  s                                                                 #z#",
		"#  #    #  z       aaaaa                                                                         #z#",
		"#   #  ###########################################################################################f#",
		"#    #                                                                                      @mlfff #",
		"####################################################################################################",
	},
	{
		"####################################################################################################",
		"# j    a         #                     #                     #                   #                 #",
		"#j@   a a        #    bggg             #         zzz         #     mmmm          #                 #",
		"#    a   a       #    g   g            #        z   z        #     l   m         #    jjjjjj       #",
		"#   aaaaaaa      g    gggg             g       z             #     l    m        #    j            #",
		"#  a       a     #    g    g           #       z    z        l     l d   m       l    jjjjj        #",
		"# a         a    #    g    g           #        zzzz         #     l     m       #    j            #",
		"#                #    ggggg            #                     #     l    m        #    j            #",
		"#                #                     #                     #     mmmmm         #    jjjjjjj      #",
		"#                #                     #                     #                   #                 #",
		"##########################################################################################l#########",
		"#                #                     #                     #                   #                 #",
		"#                #                     #                     #                   #                 #",
		"#  #             #       jjjjjj        #   #    #            #                   #     ########    #",
		"#  #             #          j          #   #    #            #      gggggg       #     #           #",
		"#  #             #          j          #   #    #            #     g      g      #     #           #",
		"#  #   #         #          j          #   ######      #     #     g             #     #           #",
		"#  #  #                    j               #    #   #  #     j     g gggggg      g     ######      #",
		"#  ###           #     j  j            #   #    #      #     #     g     g       #     #           #",
		"#  # #           #      jj             #   #    #   #        #     g     g       #     #           #",
		"#  #  #          #                     #   #    #   #  #     #     ggggggg       #     #           #",
		"#  #   #         #                     #                     #                   #                 #",
		"#                #                     #                     #                   #                 #",
		"###### #############################################################################################",
		"#                #                     #                     #                   #                 #",
		"#   l            #                     #     #     #         #      jj           #     #####       #",
		"#   l            #                     #     ##    #         #     j  j          #     #    #      #",
		"#   l            #                     #     # #   #         #    j    j         #     #####       #",
		"#   l            #                           #  #  #         #    j    j               #           #",
		"#   l            #                     #     #   # #         #    j   j          #     #           #",
		"#   l      l     #                     #     #    ##         #     jjj           #     #           #",
		"#   llllllll     #                     #     #     #         #                   #                 #",
		"#                #                     #                     #                   #                 #",
		"######## ################# ##################### ##################### ################### #########",
		"#                #                     #       #m##          #      zzzz         #      lll        #",
		"#    g   g       #       #####         #      #    #                z  z         #     l   l       #",
		"#    g   g                 #           #      #              #      zzz          #     l  ll       #",
		"#    g   g       #         #           #       ####          #      z  z         #      llll       #",
		"#     ggg g      #         #           #     #    #          #                   #          l      #",
		"####################################################################################################",
	},
	{
		"####################################################################################################",
		"# @@                                 m                                  #                         ##",
		"###                                 mmm                                # #                         #",
		"#  #                               #   #                              #   #                      # #",
		"#   #                             #     #                            #     #                       #",
		"#    #                           #       #                          #       #                   #  #",
		"#     #                         #         #                        #         #                     #",
		"#      #                       #           #                      #           #                #   #",
		"#       #                     #a           a#                    #             #                   #",
		"#        #                   # aa         aa #                  #               #             #    #",
		"#         #                 #  aaa  aaaa aaa  #                #                 #                 #",
		"#          #               #        aaaa       #              #                   #          #     #",
		"#           #             #         aaaa        #            #                     #               #",
		"#            #           #z         aaaa        z#          #                       #       #      #",
		"#             #         #  z                   z  #        #                         #             #",
		"#              #       #    z                 z    #      #                           #    #       #",
		"#               #     #      z    ###@###    z      #    #                             #           #",
		"#                #   #      zzzz  #     #   zzzzz    #  #                               # #        #",
		"#                 m m       zzzz  # fff #  z zzzz     mm                                 #         #",
		"#                 mmm       zzzzz @ ftf @ z  zzzz     mm                                 mm        #",
		"#                 mmm       zzzz z# fff #z   zzzz     mm                                 mm        #",
		"#                 m m           a #     # a           mm                                 #         #",
		"#                #   #         a  ###@###  a         #  #                               # #        #",
		"#               #     #       a             a       #    #                             #           #",
		"#              #       #     a               a     #      #                           #    #       #",
		"#             #         #   a       zzzz      a   #        #                         #             #",
		"#            #           # aSSS     zzzz    SSSa #          #                       #       #      #",
		"#           #             # SS      zzzz     SS #            #                     #               #",
		"#          #               #S       zzzz      S#              #                   #          #     #",
		"#         #                 #                 #                #                 #                 #",
		"#        #                   #               #                  #               #             #    #",
		"#       #                     #             #                    #             #                   #",
		"#      #                       #           #                      #           #                #   #",
		"#     #                         #         #                        #         #                     #",
		"#    #                           #       #                          #       #                   #  #",
		"#   #                             #     #                            #     #                       #",
		"#  #                               #   #                              #   #                      # #",
		"# #                                 mmm                                # #                         #",
		"##                                   m                                  #                         ##",
		"####################################################################################################",
	},
};
int tower=0;
void addlevels();
int AttAck(int attack);
void AttackMonster();
void color(int x); 
void cls();
void coutwhat(int a,int b,int c,int d,string n);
void Die();
void game();
char getin(char x,char y);
void gotoxy(int y,int x);
void gs();
void hidden();
void init();
void monsterbook();
void PrintfMap(int x);
int random(int n,int m);
void rf();
void Sout(string n);
void wf(); 
void shop();
void bnm(); 
void monsterbook()
{
	cls();
	int i,j,k;
	for(i=0;i<BNUM;i++)
	  if (monster[i])
	  	if (monster_[i])
	  	  printf("%c\n%s\nattack:%d\nhp:%d\ndefence:%d\n-------------------------------\n",sympol[i],Name[i].c_str(),Attack[i],Hp[i],Defence[i]);
		else
		  printf("???\n-------------------------------\n");
	gs();
	PrintfMap(player.tower);
}
int AttAck(int attack)
{
	int i=0,j=1;
	gotoxy(10,0);
	cout<<"按空格攻擊\n";
	cout<<"Low                         High                         Low\n";
	cout<<"------------------------------------------------------------\n\n";
	cout<<"------------------------------------------------------------";
	float shang[60]=
	{0.1,0.1,0.1,0.2,0.2,0.2,0.2,0.3,0.3,0.3,0.3,0.5,0.5,0.5,0.6,0.6,0.6,0.7,0.7,0.7,0.7,0.7,0.8,0.9,0.9,1.0,1.2,1.5,2.0,1.5,1.2,0.9,0.9,0.8,0.8,0.7,0.7,0.7,0.7,0.6,0.6,0.6,0.5,0.5,0.5,0.4,0.4,0.4,0.3,0.2,0.2,0.2,0.2,0.1,0.1,0.1,0.6,0.4,0.4,0.1};
	while(1)
	  {
	  	gotoxy(13,i-j);
	  	cout<<"     ";
	  	gotoxy(13,i);
	  	cout<<"|#|";
	  	char m;
	  	if (kbhit())
	  	  {
	  	  	m=getch();
	  	  	if (m==' ')
	  	  	  return attack*(shang[i])+attack*0.3;
			}
	  	i+=j;
	  	if (i>=60)
	  	  j=-j;
	  	if (i<=0)
	  	  j=-j;
	  	Sleep(1);
	  }
}
void init()
{
	int i,j,k,I;
	Time=time_t();
	printf("初始化請稍等...");
	for(I=0;I<TOWER;I++)
	  for(i=0;i<40;i++)
	    {
	      for(j=0;j<100;j++)
	        {
	          k=sympol.find(MAP[I][i][j]);
	      	  map[I][i][j].name=Name[k];
			  map[I][i][j].attack=Attack[k];
			  map[I][i][j].hp=Hp[k];
			  map[I][i][j].defence=Defence[k];
			  map[I][i][j].go=Go[k];
			  map[I][i][j].monster=monster[k];
			  map[I][i][j].number=k;
			  map[I][i][j].xp=Xp[k];
	        }
	    }
	player.tower=0;
	player.hp=150;
	player.attack=35;
	player.defence=15;
	player.xp=1; 
	player.level=1;
	player.x=1;
	player.y=1;
	system("cls");
}
void coutwhat(int a,int b,int c,int d,string n)//輸出一些東西,從坐標(a,b)到(c,d)輸出n 
{
	int i,j;
	for(i=a;i<=c;i++)
	 {
	  gotoxy(i,b);
	  for(j=b;j<=d;j++)
	    {
	    	cout<<n;
		}
	 }
}
void gotoxy(int y,int x) //移動游標 
{
    COORD  coord;     
    coord.X=x;         
    coord.Y=y;
    HANDLE a=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(a,coord);    
}
void color(int x)//調顏色 
{
	switch(x)
	  {
	    case 0:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);break;
	    case 1:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);break;
		case 2:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_GREEN);break;
	    case 3:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_GREEN);break;
	  	case 4:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);break;
	  	case 5:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_RED);break;
		case 7:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);break;
		case 8:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);break;
		case 9:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_BLUE);break;
	    case 10:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);break;
	    default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_BLUE);break;
	  }
}
char getin(char x,char y)
{
	char l;
	do
	  l=_getch();
	while(l<x||l>y);
	return l;
}
int random(int n,int m)
{
	int s;
	s=rand()%(m-n+1);
	s+=n;
	return s;
}
void cls()
{
	system("cls");
}
void shop()
{
	cls();
	int much[10]={30,50,120,30,50,150,30,50,120};
	
	while(1)
	  {printf("歡迎,你想買些什么?");
	printf("1.銹跡斑斑的鐵劍 (attack+3) $30\n");
	printf("2.嶄新的鐵劍 (attack+5) $50\n");
	printf("3.銀光閃閃的寶劍 (attack+12) $120\n");
	printf("4.發霉的藥水 (hp+20) $30\n");
	printf("5.普通的藥水 (hp+40) $50\n");
	printf("6.高級藥水 (hp+500 attack+10) $150\n");
	printf("7.破爛盾牌 (defence+1) $30\n");
	printf("8.木頭盾牌 (defence+2) $50\n");
	printf("9.堅固的鐵盾(defence+4) $120\n");
	printf("0.離開 $0\n");
		char n=_getch();
		if (n=='0')
		  break;
		printf("確定買%c嗎?Y/N",n);
		char m=_getch();
		if (m=='N'||m=='n')
		  continue;
		if (player.money<much[n-'0'])
		  printf("錢不夠!");
		else
		  {
		  	printf("購買成功!");
			  player.money-=much[n-'0'];
			  switch(n)
			    {
			    	case '1':player.attack+=3;break;
			    	case '2':player.attack+=5;break;
			    	case '3':player.attack+=12;break;
			    	case '4':player.hp+=20;break;
			    	case '5':player.hp+=40;break;
			    	case '6':player.hp+=500,player.attack+=10;break;
			    	case '7':player.defence++;break;
			    	case '8':player.defence+=2;break;
			    	case '9':player.defence+=4;break; 
				 } 
		  }
		system("cls");
	  }
	PrintfMap(player.tower);
}
void Sout(string n)
{
	for(int i=0;i<n.size();i++)
	  {
	  	cout<<n[i];
	  	Sleep(sudu);
	  	if (kbhit())
	  	  if (getch()==' ')
		    {
		  	  cout<<n.substr(i+1,n.size()-i);
		  	  return;
		    }
	  }
} 
void hidden()
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(handle, &CursorInfo);
CursorInfo.bVisible = false;
SetConsoleCursorInfo(handle, &CursorInfo);
}
void gs()
{
	hidden();
	gotoxy(45,80);
	cout<<"按下任意鍵繼續_";
	_getch();
	system("cls");
}
void PrintfMap(int x)
{
	cls();
	gotoxy(0,0);
	int i,j;
	for(i=0;i<40;i++)
	  {
	  	for(j=0;j<100;j++)
	  	  {
	  	    printf("%c",MAP[x][i][j]);
	  	  }
	  	printf("\n");
	  }
	for(i=0;i<BNUM;i++)
	  if (monster[i]==false)
	    {
	      gotoxy(i+10,105);
	      printf("%c %s\n",sympol[i],Name[i].c_str());
	    }
}
void Die()
{
	cls();
	sudu=150;
	Sout("你\t死\t了");
	sudu=10;
	exit(0); 
	gs();
	rf();
}
void AttackMonster(int x,int y)
{
	cls();
	BLOCKS j;
	char l;
	int n,m;
	j=map[player.tower][player.x][player.y];
	n=player.attack;
	player.attack*=0.9;//考慮玩家不一定全部能正中 
	if (j.attack-player.defence>0)
	  {
		m=player.hp/(j.attack-player.defence);
		if (player.attack-j.defence<=0)
		  {
	  		printf("你現在可能還打不過他呢,是否繼續挑戰?Y.yes N.no");
	  		l=_getch();
	  		player.attack=n;
	  		if (l=='n'||l=='N')
	  		  {
	  		  	PrintfMap(player.tower);
	  		  	player.x=x,player.y=y;
	  	 	    return;
	  	 	  }
	  	  }
		m*=(player.attack-j.defence);
		if (m<=j.hp)
	  	  {
	  		printf("你現在可能還打不過他呢,是否繼續挑戰?Y.yes N.no");
	  		l=_getch();
	  		player.attack=n;
	  		if (l=='n'||l=='N')
	  		  {
	  		  	PrintfMap(player.tower);
	  		  	player.x=x,player.y=y;
	  	 	    return;
	  	 	  }
	  	  }
	  }
	player.attack=n;
	while(j.hp>0&&player.hp>0)
	  {
		cls();
		printf("敵人:%s\n",j.name.c_str());
		printf("敵人的血量:%d\n",j.hp);
		printf("敵人的攻擊:%d\n",j.attack);
		printf("敵人的防御:%d\n",j.defence);
		printf("你的血量:%d\n",player.hp);
		printf("你的攻擊:%d\n",player.attack);
		printf("你的防御:%d\n",player.defence); 
		printf("1.attack 2.run away\n");
		l=_getch();
		if (l=='2')
		  if (rand()%4==1&&j.name!="魔術師"&&j.name!="魔王_真")
		    {
		      map[player.tower][player.x][player.y].hp=j.hp;
		      return;
		    }
		  else
		    printf("逃跑失敗!");
		 n=AttAck(player.attack);
		 n-=j.defence;
		 j.hp-=n;
		 if (n<=0)
		   n=1;
		 printf("你發起了攻擊,%s受到了%d點傷害!\n",j.name.c_str(),n);
		 n=j.attack*random(9,12)/10.0;
		 n-=player.defence;
		 if (n<=0)
		   n=1;
		 player.hp-=n;
		 printf("%s發起了攻擊,你受到了%d點傷害!\n",j.name.c_str(),n);
		 gs();
	  }
	if (player.hp<=0)
	  Die();
	if (map[player.tower][player.x][player.y].name=="魔王_真")
	  {
	  	system("cls");
	  	Sout("你成功打敗了魔王,游戲結束,你贏了!");
	  	exit(0);
	  }
	if (map[player.tower][player.x][player.y].name=="流浪商人_魔化")
	  map[player.tower][player.x][player.y].name="流浪商人";
	map[player.tower][player.x][player.y].hp=0;
	map[player.tower][player.x][player.y].attack=0;
	map[player.tower][player.x][player.y].defence=0;
	map[player.tower][player.x][player.y].go=1;
	map[player.tower][player.x][player.y].monster=0;
	monster_[map[player.tower][player.x][player.y].number]=1;
	player.money+=Xp[map[player.tower][player.x][player.y].number];
	MAP[player.tower][player.x][player.y]=' ';
	PrintfMap(player.tower);
	return;
}
void addlevels()
{
	while(player.xp>uplevel[player.level])
	  player.level++,player.hp+=80,player.attack+=6,player.defence+=3;
}
void game()
{
	char l;
	int i,j,k,n,m;
	while(player.tower<TOWER)
	  {
		PrintfMap(player.tower);
		Time=clock();
		do
		  {
		  	l=',';
		  	hidden();
		  	int sx,sy;
		  	sx=player.x,sy=player.y;
		  	gotoxy(42,0);
		  	printf("LEVEL:%d XP:%d/%lld\n",player.level,player.xp,uplevel[player.level]);
		  	gotoxy(43,0);
		  	printf("HP:%d ATTACK:%d DEFENCE:%d\n",player.hp,player.attack,player.defence);
		  	gotoxy(44,0);
		  	printf("MONEY:%d\n",player.money);
			gotoxy(player.x,player.y);
			cout<<"O";
		  	if (kbhit())
		  	  l=getch();
		  	now=clock();
		  	gotoxy(0,105);
		  	k=now-Time;
		  	printf("%d:%d:%d.%d",k/3600000,k%3600000/60000,k%60000/1000,k%1000);
		  	switch(l)
		  	  {
		  	  	case 'w':if (player.x>0&&map[player.tower][player.x-1][player.y].go) player.x--;break;
		  	  	case 's':if (player.x<COLS&&map[player.tower][player.x+1][player.y].go) player.x++;break;
		  	  	case 'a':if (player.y>0&&map[player.tower][player.x][player.y-1].go) player.y--;break;
		  	  	case 'd':if (player.y<LINES&&map[player.tower][player.x][player.y+1].go) player.y++;break;
		  	  	case 'm':monsterbook();break;
		  	  	case '/':cin>>n;if (n<5)player.tower=n;else player.hp+=n,player.attack+=n,player.defence+=n,player.money+=n*100;
			  }
			if (sx!=player.x||sy!=player.y)
			  {
			  	gotoxy(sx,sy);
			  	cout<<" ";
			  	gotoxy(player.x,player.y);
			  	cout<<"O";
			  }
			if (map[player.tower][player.x][player.y].monster) 
			  if (MessageBox(NULL,TEXT("是否挑戰此怪物?"),TEXT("?"),MB_YESNO)==IDYES)
			    AttackMonster(sx,sy);
			  else
			    {
			      gotoxy(player.x,player.y);
			      printf("%c",MAP[player.tower][player.x][player.y]);
			      player.x=sx,player.y=sy; 
			    }
			gotoxy(45,0);
			printf("位置:%d,%d,%d",player.x,player.tower+1,player.y);
			if (map[player.tower][player.x][player.y].hp<=0)
			  player.xp+=map[player.tower][player.x][player.y].xp;
			addlevels();
			map[player.tower][player.x][player.y].xp=0;
			if (map[player.tower][player.x][player.y].number==9)
			  player.hp+=50,MAP[player.tower][player.x][player.y]=' ',map[player.tower][player.x][player.y].number=0;
			if (map[player.tower][player.x][player.y].number==10)
			  player.attack+=10,MAP[player.tower][player.x][player.y]=' ',map[player.tower][player.x][player.y].number=0;
			if (MAP[player.tower][player.x][player.y]=='S')
			  player.defence+=4,MAP[player.tower][player.x][player.y]=' ',map[player.tower][player.x][player.y].number=0;
			if (MAP[player.tower][player.x][player.y]=='d'||map[player.tower][player.x][player.y].name=="流浪商人")
			  {
			    shop(); 
			    gotoxy(player.x,player.y);
			    printf("%c",MAP[player.tower][player.x][player.y]);
			    player.x=sx,player.y=sy; 
			  }
			if (MAP[player.tower][player.x][player.y]=='@')
			  {
			  	gotoxy(46,0);
			  	for(i=0;i<RUNE;i++)
			  	  if (player.tower==rtower[i]&&player.x==rposx[i]&&player.y==rposy[i])
			  	    break;
			  	printf("石碑內容:%s",runec[i].c_str());
			  } 
			else
			  {
			  	gotoxy(46,0);
			  	printf("                                                                                                                                                   ");
			  }
		  }
		while(!((player.x==COLS-2&&player.y==LINES-2)||(player.x==0&&player.y==1&&player.tower>0)));
		if (player.x==COLS-2&&player.y==LINES-2)
		  player.tower++,player.x=1,player.y=1;
		else if (player.tower>0)
		  player.tower--,player.x=38,player.y=98;
		//wf();
	  }
}
int main()
{
	char l;
	int i,j,k;
	hidden();
	init();
	game();
	return 0;
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/321470.html

標籤:其他

上一篇:Python之深入決議如何使用Python Kivy實作一個“乒乓球”游戲

下一篇:【LeetCode 動態規劃專項】跳躍游戲(55)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more