一、 前言
慕课网的免费C++课已经看到封装篇,接下来看模板篇。然后就是数据结构。目标是刷完bobo老师的算法与数据结构课程。
这次的课后题是迷宫游戏。全部完成需要涉及二维数组,对象指针,函数递归等基础知识。最终代码量160行,完全自己编写。
课后题连接:https://www.imooc.com/video/8207
二、代码逻辑介绍
代码说明:参考网上现有代码逻辑。代码完全是自己独立思考后,编码调试完成。核心是遍历,重点是如何遍历。
无所谓左右手,只是顺时针转向和逆时针转向的问题。本质上都是遍历。
迷宫为5*5二维数组。走迷宫的人为指针对象,目的是保持走迷宫时候,人对象的X, Y值连续。
设定人的初始朝向为北。Dir为0。位置为入口,可以自己设定。注意数组从0开始。
1)游戏结束判断标准
出口设置在第一排,所以人的横坐标X为0时,认为游戏结束。
(设置为0只是为了方便判断,你也可以设置在最后一排。)
2)找到正确的方向
即前方有路。当行进前方前方有墙时,转向。这里设置成逆时针转向。
转向后还有墙,则继续转向。用递归函数实现重复/遍历。直到找到路的方向。
(但是仅仅依靠转向是无法走出迷宫的。因为无论是逆时针转向还是顺时针,都会在第2/3次转向时回到前一步方向。造成后退。
然后继续进行,继续后退。形成死循环。)
3向有路的方向前进一步
为了避免2中提到的死循环&