C++游戏编程-走迷宫详解

大家肯定都玩过这样一个普遍的程序-走迷宫。今天我就要来为大家讲解一下走迷宫这个普遍的程序如何制作。

因为VC很难下载,所以这里讲解的是非图形化版本

首先,先定义一个地图

char _map[50][50]={//为了节省内存,定义一个小一些的字符数组
	//随便做一个地图
	"",//这里要留一行空格,一会输出是是从得一行开始的,也就是下一行开始的
	"##########",
	"#o #  ####",//o是主角的位置
	"##  #    #""#  #     #",
	"## #######"
}

地图定义完了,运行一下,发现什么也没有输出,所以,下一步我们要加上输出语句

for(int i=1;i<=5;i++){//小于等于的数就是你定义的迷宫的行数
	cout<<_map_[i]<<endl;
}

现在成功输出了,但是效果还是不够炫酷,所以我们为他加点料吧!

SetConsoleTitleA("[作者主页:](https://blog.csdn.net/qq_56187979?spm=1000.2115.3001.5343)");
//这段代码的用处是定义程序的标题

下面,就是最重要的部分了,操作系统!!!

我定义的是WSAD控制移动,下面是代码

int x=2,y=1;//主角位置
while(tf){//定义一个bool变量tf,如果主角成功tf归0,循环退出
	char ch;
	cin>>ch;
	if(ch=='W'||ch=='w'){
		_map_[x][y]=' ';//清除原主角位置
		x--;//向上移动,所以行数减1
		_map_[x][y]='o';//刷新主角位置
	}else if(ch=='S'||ch=='s'){//使用else if,加快效率
		_map_[x][y]=' ';
		x-++;
		_map_[x][y]='o';
	}else if(ch=='A'||ch=='a'){
		_map_[x][y]=' ';
		y--;
		_map_[x][y]='o';
	}else if(ch=='S'||ch=='s'){
		_map_[x][y]=' ';
		y++;
		_map_[x][y]='o';
	}
	if(x==5&&y==2){
		tf=0;//成功,退出循环
	}
	//最后别忘了加上刷新
	for(int i=1;i<=5;i++){
		cout<<_map_[i]<<endl;
	}
}

如果你认为这样刷新会闪烁的话,那就使用如下代码

```cpp
int x=2,y=1;//主角位置
while(tf){//定义一个bool变量tf,如果主角成功tf归0,循环退出
	char ch;
	cin>>ch;
	if(ch=='W'||ch=='w'){
		_map_[x][y]=' ';//清除原主角位置
		x--;//向上移动,所以行数减1
		_map_[x][y]='o';//刷新主角位置
	}else if(ch=='S'||ch=='s'){//使用else if,加快效率
		_map_[x][y]=' ';
		x-++;
		_map_[x][y]='o';
	}else if(ch=='A'||ch=='a'){
		_map_[x][y]=' ';
		y--;
		_map_[x][y]='o';
	}else if(ch=='S'||ch=='s'){
		_map_[x][y]=' ';
		y++;
		_map_[x][y]='o';
	}
	if(x==5&&y==2){
		tf=0;//成功,退出循环
	}
	//最后别忘了加上刷新
	
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//定义显示器句柄变量,并且这个只能在每个头文件中单独定义句柄和函数,否则无效
	void gotoxy(HANDLE hOut, int x, int y)//其中x,y是与正常理解相反的,注意区分
	{
		COORD pos;
		pos.X = x;             //横坐标
		pos.Y = y;            //纵坐标
		SetConsoleCursorPosition(hOut, pos);
	}
}

如果有不懂的问题,可以私信作者!!!

如果想要源代码,请QQ联系作者:2552972485。

本人第八次写文章,如有不足,请多多指教哦! 最后,动动小手,帮我点个赞吧!

如果认为作者的文章好的话,就打个赏吧!QQ号:2552972485

你可能感兴趣的:(#,C++游戏,游戏,c++)