c++小游戏走出迷宫改良版

上期发的代码有些问题本问做出了改进:

1.修复了已知的bug

2.增加了自定义角色颜色

3.增加了大写字母输入移动

另外新增了几个地图

还有新增地图元素水和氧气值

上代码:

#include<bits/stdc++.h>
#include<windows.h>
#include<stdlib.h>
#include<cstdio>
#include<iostream>
#include<string>
#include<stdio.h>
#include<ctime>
#include<conio.h>
#include<time.h> 
using namespace std;
void JZ()
{
	system("cls");	
	for(int i=1;i<=100;i++)
	{
		if(i<100)
		{
			printf("数据加载中...\n");
		}
		else
		{
			printf("加载完毕"); 
		}		
		printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n                                                ");
		for(int j=1;j<=50;j++)
		{
			printf("_");
		}
		printf("\n                                               |");
		for(int j=1;j<=i/2;j++)
		{
			printf("▇");															
		}					
		printf("\n                                                                 当前加载进度:%d%\n",i);	
		Sleep(5);		       
		system("cls");				
	}
	system("cls");	
} 
void COLOR_PRINT(const char* s, int color)
{
 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | color);
 printf(s);
 SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | 7);
}
//puts("=============================================================================");
/*
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 10 = 淡绿色
3 = 浅绿色 11 = 淡浅绿色
4 = 红色 12 = 淡红色
5 = 紫色 13 = 淡紫色
6 = 黄色 14 = 淡黄色
7 = 白色 15 = 亮白色
*/
//COLOR_PRINT("", );
int x=1,y=1,jbx,jby,dt,g,xz,d,yq=5,js=4;
//地图数组 墙:0 空格:1 毒水:2 水:3 
int Map[7][10][20] =
{
	{
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
	},
	{
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
		{0,1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,0},
		{0,1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,0},
		{0,1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,0},
		{0,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,0},
		{0,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,0},
		{0,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,1,1,0},
		{0,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,1,1,0},
		{0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0},
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
	},
	{
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
		{0,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,0},
		{0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0},
		{0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0},
		{0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0},
		{0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0},
		{0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0},
		{0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0},
		{0,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1,1,0},
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
	},
	{
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0},
		{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
		{0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0},
		{0,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,2,2,1,0},
		{0,2,2,1,1,1,1,2,2,1,1,1,1,2,2,1,1,1,1,0},
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}						
	},
	{
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
		{0,1,1,1,3,3,3,1,1,1,3,3,3,1,1,1,3,3,3,0},
		{0,1,1,1,3,3,3,1,1,1,3,3,3,1,1,1,3,3,3,0},
		{0,1,1,1,3,3,3,1,1,1,3,3,3,1,1,1,3,3,3,0},
		{0,3,3,3,1,1,1,3,3,3,1,1,1,3,3,3,1,1,1,0},
		{0,3,3,3,1,1,1,3,3,3,1,1,1,3,3,3,1,1,1,0},
		{0,1,1,1,3,3,3,1,1,1,3,3,3,1,1,1,3,3,3,0},
		{0,1,1,1,3,3,3,1,1,1,3,3,3,1,1,1,3,3,3,0},
		{0,1,1,1,3,3,3,1,1,1,3,3,3,1,1,1,3,3,3,0},
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}		
	},
	{
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
		{0,3,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,0},
		{0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0},
		{0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0},
		{0,3,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,0},
		{0,3,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,0},
		{0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0},
		{0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0},
		{0,3,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,1,0},
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}		
	},
	{
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
		{0,1,1,1,2,2,2,3,3,3,3,1,3,1,2,3,1,1,2,0},
		{0,1,1,1,2,2,2,1,1,1,2,2,2,3,2,3,2,3,2,0},
		{0,3,3,3,2,2,2,3,3,3,2,2,2,1,2,1,2,1,2,0},
		{0,3,3,3,2,2,2,3,3,3,2,2,2,3,2,3,2,3,2,0},
		{0,3,3,3,2,2,2,3,3,3,2,2,2,3,2,3,2,3,2,0},
		{0,3,3,3,2,2,2,3,3,3,2,2,2,1,2,1,2,1,2,0},
		{0,1,1,1,2,2,2,1,1,1,2,2,2,3,2,3,2,3,2,0},
		{0,3,3,3,3,1,3,3,3,3,2,2,2,3,1,1,2,1,1,0},
		{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}		
	},
};
int main()
{
	printf("走迷宫");
	Sleep(2500);
	JZ();
ZJM: 
while(true)
{
	printf("1.游玩 2.查看地图 3.自定义角色颜色\n"); 
	cin>>xz;
	if(xz==1)
	{
		printf("请输入关卡序号(0-6)\n"); 
		cin>>d;
		if(d==0||d==2||d==4||d==5||d==6)
		{
			jbx=18;
			jby=8;
		}
		if(d==1)
		{
			jbx=18;
			jby=7;
		}
		if(d==3)
		{
			jbx=1;
			jby=7;
		}
		while(true)
		{
			printf("当前氧气值:%d\n",yq); 
			for(int i=0;i<10;i++)
			{
				for(int j=0;j<20;j++)
				{
					if(jbx==x&&jby==y)
					{
						system("cls");
						COLOR_PRINT("恭喜过关", 6);
						Sleep(2000);
						system("cls");
						x=1;
						y=1;
						yq=5;
						goto ZJM;						
					}
					if(yq<=0)
					{
						system("cls");
						printf("氧气值过低,你窒息死亡了");
						Sleep(1500);
						system("cls");
						COLOR_PRINT("Game Over", 6);
						Sleep(1500);
						system("cls");
						x=1;
						y=1;
						yq=5;
						goto ZJM;
					}
					if(Map[d][y][x]==2)
					{						
						system("cls");
						printf("你被毒死了");
						Sleep(1500);
						system("cls");
						COLOR_PRINT("Game Over", 6);
						Sleep(1500);
						system("cls");
						x=1;
						y=1;
						yq=5;
						goto ZJM;
					}
					if(i==y&&j==x)
					{
						COLOR_PRINT("█", js);
					}
					else if(i==jby&&j==jbx)
					{
						COLOR_PRINT("█", 6);
					}
					else if(Map[d][i][j]==0)
					{
						printf("█");
					}
					else if(Map[d][i][j]==1)
					{
						printf(" ");
					}
					else if(Map[d][i][j]==2)
					{
						COLOR_PRINT("█", 2);
					}
					else if(Map[d][i][j]==3)
					{
						COLOR_PRINT("█", 1);
					}
				}
			printf("\n");
			}
			printf("按wasd移动");
			char c = getch();	
			if(c=='w'||c=='W')
			{
				if(y>1)
				{
					y--;
				}				
			}	 
			if(c=='s'||c=='S')
			{
				if(y<8)
				{
					y++;
				}				
			}
			if(c=='a'||c=='A')
			{
				if(x>1)
				{
					x--;
				}				
			}
			if(c=='d'||c=='D')
			{
				if(x<18)
				{
					x++;
				}				
			}
			if(Map[d][y][x]!=3&&yq<5)
			{
				yq++;
			}
			if(Map[d][y][x]==3)
			{
				yq--;
			}
			system("cls");
		}
	}
	if(xz==2)
	{
		printf("请输入要查看的关卡序号(0-6)\n"); 
		cin>>d;
		for(int i=0;i<10;i++)
		{
			for(int j=0;j<20;j++)
			{
				if(Map[d][i][j]==0)
				{
					printf("█");
				}
				else if(Map[d][i][j]==1)
				{
					printf(" ");
				}
				else if(Map[d][i][j]==2)
				{
					COLOR_PRINT("█", 2);
				}
				else if(Map[d][i][j]==3)
				{
					COLOR_PRINT("█", 1);
				}
			}
		printf("\n");
		}
		system("pause");
		system("cls");
		goto ZJM;
	}
	if(xz==3)
	{	
		printf("请输入颜色编号:(0-15)\n");
		printf("颜色对应编号:\n0 = 黑色 8 = 灰色\n1 = 蓝色 9 = 淡蓝色\n2 = 绿色 10 = 淡绿色\n3 = 浅绿色 11 = 淡浅绿色\n4 = 红色 12 = 淡红色\n5 = 紫色 13 = 淡紫色\n6 = 黄色 14 = 淡黄色\n7 = 白色 15 = 亮白色\n");
		cin>>js;
		system("cls");
		goto ZJM;	
	} 
}
}

都看到这了点个赞吧!!!

求求了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值