c语言---手动迷宫实现01

c语言---手动迷宫实现01

前言

很多人感觉迷宫实现比较难,自动寻路更是摸不着头脑,现在我们就从0开始实现一个手动实现迷宫的过程,认真理解后过几天我再总结一个AI自动寻路的迷宫算法供大家参考。

思路

首先为了使思路更加的清晰,我使用了一个9x9的数字矩阵代表迷宫,0代表有路-可以通过,1代表人物,2代表障碍-不能通过。
在这里插入图片描述
Alt

  1. 输入字符实现迷宫中人物移动(例如:w-向上走 a-向左走 s-向下走 d-向右走)
  • 下面这段代码可以实现输入一个字符回车后,显示输入的字符。(第二个getchar()是为了消除回车,因为在c语言中回车也算一个字符,比如我输入w 回车,其实是2个字符。)
char ch = getchar();
getchar();
printf("%c\n", ch);
  • 人物的移动其实就是交换数据,比如,现在我是 a[0][0] 输入d,也就是向右走1个单位,其实就是a[0][0] 与a[0][1] 交换数据。(现在不考虑障碍,对于二维数据,a[][],后边的[]代表同一行,前边的[]代表同一列)
  • [重点]:那么如果现在我的位置是a[x][y]:
    w-向上走 :a[x][y] 与a[x-1][y]交换位置,向上走一步,x的值减1
    a-向左走: a[x][y] 与a[x][y-1]交换位置,向左走一步,y的值减1
    s-向下走: a[x][y] 与a[x+1][y]交换位置,向下走一步,x的值加1
    d-向右走: a[x][y] 与a[x][y+1]交换位置,向右走一步,y的值加1
  • 如何检测输入的字符是wasd的哪一个字符? if switch都可以,我用的switch

int main(){
   
	// 可以连续输入字符,进行移动
	while (1)
	{
   
		move();
	}
	return 0;
}
void move(){
   
	char ch = getchar();
	getchar();
	printf("%c\n", ch);
	int temp = -1; //
	switch (ch){
   
	case 'w':
		temp = a[x][y];
		a[x][y] = a[x-1][y];
		a[x-1][y] = temp;
		x--;
		break;
	case 'a':
		temp = a[x][y];
		a[x][y] = a[x][y-1];
		a[x][y-1] = temp;
		y--;
		break;
	case 's':
		temp = a[x
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值