走简单的迷宫

 

走迷宫:

数据分析:

  1. 定义二维字符数组作为迷宫地图

  2. 定义变量来记录角色的位置 x y

逻辑分析:

进入死循环:

  1. 显示地图

  2. 判断是否到达出口

    如果是:程序结束

  1. 获取方向键并处理

    判断前方是不是路' '

    如果是路:

    1、把旧位置编程' '

    2、把新位置变成'@'

    3、更新角色位置坐标 x y

下面是代码实例展示

#include <stdio.h>
#include <getch.h>
#include <stdlib.h>
#include <time.h>

int main(int argc,const char* argv[])
{
	char maze[10][10] = {
		{'#','#','#','#','#','#','#','#','#','#'},
		{'#',' ','#','#','#','#','#','#','#','#'},
		{'#','@','#','#','#','#','#','#','#','#'},
		{'#',' ','#','#','#','#','#','#','#','#'},
		{'#',' ','#','#','#','#','#','#','#','#'},
		{'#',' ','#',' ',' ',' ',' ','#','#','#'},
		{'#',' ','#',' ','#','#',' ','#','#','#'},
		{'#',' ','#',' ','#','#',' ','#','#','#'},
		{'#',' ',' ',' ','#','#',' ',' ',' ',' '},
		{'#','#','#','#','#','#','#','#','#','#'},
		};
	
	//	记录角色位置
	char man_x = 2,man_y = 1;

	//	记录游戏开始时间
	time_t start_time = time(NULL);
	for(;;)
	{
		//	清理屏幕
		system("clear");
		//	显示地图
		for(int i=0; i<10; i++)
		{
			for(int j=0; j<10; j++)
			{
				printf("%c ",maze[i][j]);	
			}
			printf("\n");
		}

		//判断是否到达出口
		if(8 == man_x && 9 == man_y)
		{
			printf("游戏胜利,过了%lu秒!\n",
				time(NULL)-start_time);
			return 0;
		}

		//	获取方向键处理
		switch(getch())
		{
			case 183:	//向上
				if(' ' == maze[man_x-1][man_y])
				{
					maze[man_x][man_y] = ' ';
					maze[--man_x][man_y] = '@';
				}
				break;
			case 184:	//下
				if(' ' == maze[man_x+1][man_y])
				{
					maze[man_x][man_y] = ' ';
					maze[++man_x][man_y] = '@';
				}
				break;
			case 186:	//左
				if(' ' == maze[man_x][man_y-1])
				{
					maze[man_x][man_y] = ' ';
					maze[man_x][--man_y] = '@';
				}
				break;
			case 185:	//右
				if(' ' == maze[man_x][man_y+1])
				{
					maze[man_x][man_y] = ' ';
					maze[man_x][++man_y] = '@';
				}
				break;
		}

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoyu1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值