数组迷宫AI自动寻路c

自动寻路递归寻找

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>


//数据层,存储数据
int a[10][10] = { 
	{1,0,2,0,0,0,0,0,0,0},
	{ 0,0,2,2,0,0,0,0,0,0 },
	{ 0,0,0,0,2,0,0,0,0,0 },
	{ 0,0,2,0,0,2,0,0,0,0 },
	{ 0,0,2,0,0,0,2,2,2,2 },
	{ 0,0,2,0,0,0,0,0,0,0 },
	{ 0,0,2,2,0,0,0,2,0,2 },
	{ 0,0,0,2,0,0,0,2,0,0 },
	{ 0,0,0,0,2,2,0,2,2,0 },
	{ 0,0,0,0,0,0,2,2,0,0 }
};
int iplayer=0;
int jplayer =0;
int  ci = 0;

//View 视图,显示数据
void show(int a[10][10]) {
	printf("%d-----------------------------\n",++ci);
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			printf("%2d", a[i][j]);
		}
		printf("\n");
	}
}

//控制层
void run(char ch) {	 //'w' 's'  'a' 'd'

	switch (ch)
	{
	case 'a':
		if (jplayer - 1 >= 0 && a[iplayer][jplayer - 1]<2) {
			int temp = a[iplayer][jplayer - 1];
			a[iplayer][jplayer - 1] = a[iplayer][jplayer];
			a[iplayer][jplayer] = temp; // 交换
			jplayer -= 1;
		}
		break;
	case 'd':
		if (jplayer + 1 <= 9 && a[iplayer][jplayer + 1] < 2) {
			int temp = a[iplayer][jplayer + 1];
			a[iplayer][jplayer + 1] = a[iplayer][jplayer];
			a[iplayer][jplayer] = temp; // 交换
			jplayer += 1;
		}
		break;
	case 'w':
		if (iplayer - 1 >= 0 && a[iplayer - 1][jplayer] < 2) {
			int temp = a[iplayer-1][jplayer];
			a[iplayer-1][jplayer] = a[iplayer][jplayer];
			a[iplayer][jplayer] = temp; // 交换
			iplayer -= 1;
		}
		break;
	case 's':
		if (iplayer + 1 <= 9 && a[iplayer + 1][jplayer] <2) {
			int temp = a[iplayer + 1][jplayer];
			a[iplayer + 1][jplayer] = a[iplayer][jplayer];
			a[iplayer][jplayer] = temp; // 交换
			iplayer += 1;
		}
		break;
	default:

		break;
	}
	show(a);//控制完成后,显示
	
}






//AI 层

void AIout(int a[10][10],int i,int j) {

	a[i][j] = 3;//走过的路
	show(a);
	//Sleep(1000);
	if (i == 9 && j == 9) {
		printf("小伙子恭喜走出来了");
		return;

	}
	else {
		//左,下,右,上
		if (j+1<=9 && a[i][j+1]<2) {
			AIout(a, i, j + 1);
		}
		if (i + 1 <= 9 && a[i + 1][j]<2) {
			AIout(a, i+1, j);
		}
		if (j - 1 >= 0 && a[i][j - 1]<2) {
			AIout(a, i, j - 1);
		}
		if (i - 1 >= 0 && a[i - 1][j]<2) {
			AIout(a, i - 1, j);
		}

	}


}








void main() {

	//show(a);
	AIout(a, iplayer, jplayer);
	
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值