00:00
写代码一边说思路好,我一边写代码一边说思路啊,直接走代码。走代码,好的同学们。好,代码呢,我开始来玩了。首先我们这个整个代码是在后台完成的,所以说我先要构建一个地图。打开Vs code,我就在这这直接写了啊同学们。写一个main点歌。喂。好,我们先写一个文件,就叫main.go。OK,那么打一个包包,Package主包,然后import,注意听啊,这个大家听懂了还是非常有好处的啊,不要小看这个案例,其实还是包含很多东西在里边,包含很多东西在里边的案例看起来好像。呃,不是特别复杂,但是它包含的东西还是很多的啊,那么我们怎么做这个事情呢?首先第一步我们先。我们先整一个这个地图出来,因为你没有地图你就没办法嘛,所以说我们先用一个二维数组模拟这个理工明白这意思啊先。
01:03
先创建,先创建一个二维数组。二维数组模拟,这个二维数组就模拟了一个什么呢?模拟一个迷宫。哎,他就是一个迷宫。好,当然,为什么是用二维呢?因为行和列嘛,刚好好,那么现在我们先来创建一个这样的迷宫啊,那么就这样写了。叫VR。VR map map地图吗?地图,然后呢,地图,那么我们就按照刚才老师这个图来说,它一共是几行几列的,我们看一下啊,一行两行,三行四行五行六行七行八行12345677列,八行七列,好,那就八行七列没问题吧,八行七列,那么我们用int来表示。为为什么用int呢?因为int呢,我可以用不同的数字来表示不同的情况,比如说零表示什么,一表示什么,我们先定一下这个规则好,然后呢,我定几个规则啊,同学们注意听,呃,如果是一。
02:05
如果这个map的这个值,它的这个如果啊,我先我先做做一个规则吧,规则规则有这么几个规则,第一个如果这个元素的值为一,就代表一堵墙。注意听啊。如果。如果元素的值为一,就就干什么呢?就表示注意听就是一堵墙,就是墙啊,就是墙。那么墙就代表什么呢?就走走不了,因为你不设置,设置墙的话,这个迷宫到处通路,它它它不知道什么时候停下来,所以一定要设置一个墙啊,这是第一点,第二点呢,我要做一个规定,第二第二个规定,如果这个元素为零,就代表这个路还没有探过,就是它是一个什么路呢?就是还没有走过的一条路,不知道能不能走通,注意听啊,如果。如果元素的值。
03:00
元素的值,呃,为零呢,我们就代表这条路还没有探过,还没有探测过可以走,但是不知道能不能走得通,就说是是还没有走过的,还没有探测过的一个一个路径,是没有探过的探测。没有没有走过吧,没有走过的这个这个点OK。没有走点,那么我们还要定义一个,OK,注意听讲啊,第第三点,如果这个元素将来这个值变成了二,就代表它是一个通路,就是这条路是可以一直走下去的,就是它是一个通路,那么最后我们这个地图呢,会形成一个一个二,一个二指向的111条线,这条线就是一条通路啊,如果是二,因为我把这个要讲清楚啊,如果元素的值为二。为二表示这是一条通路,能够走通的一条路是通路表示是是什么呢?是一个通路。是一个通路。通路啊通路这点大家知道,还有一点呢,就是同学们要注意一点,就是第四点,如果将来这个元素我们走的时候有,有时候你会你你想啊,假设我们这个是一个圈,是一个包起来的,他进去过后,他发现走不了,他又退回来了。
04:17
你们想假设我们将来设计的是我我这里这里假设这个是这样写的啊,这有两个圈,然后呢,我在这,我在这地方再再搞一个,再搞一个块块。对吧,我在这再搞一个块,假设这个这个小球到这来了,他发现往这走走不了,他就回退回去了,那么这个这个点就是现在小圆圈点,它就是条死路,就就走过了,他插了一个旗子,在那标了一下说走过了,但是走不通。那还得有这个一个标识,这个标识呢,我们设计为山,这个山表示曾经走过,但是是实物啊,你得有这个思想在里边,所以说这个还是需要动脑筋的啊,还反正很有意思。
05:01
那么我还写第三个啊,如果元素。元素的值。元素的值。为多少呢?他为这个山,各位朋友就说这是走过的一条路,但是呢,走不通,这是走过的啊,是走过的。是走过的这个点,但是但是走不通,但是走不通。走不通。走不通啊,好了,有这么几个规则,过后呢,同学们,我们接着往下走。这个二位数字已经有了啊,二位数有了,下面接着玩。那你有了二位数组过后呢,先把墙给我建起来。先把墙建起,因为你首先得把墙初始化嘛,那我们现在墙呢,大家都看到了,很清楚的知道它是上面就是就就是这这些点,它是有规律的,大家看这这一排。最下面一排,还有最左边和最左右边全是墙了,所以我先初始化它,怎么怎么把它设成一呢,你不能一个一个设置啊,一个设置太累了,我们现在这样做for循环。
06:09
我这样子啊,先把最上面。啊,这个是逻辑,这个是。我写到这,先把先把这个地图的地图的最上。最上和最下。最下啊,设置为设置为一啊,就表示强了,那这个很简单呃,因为它这个设置的时候呢,它这个这样设置就行了,大家看一下就行啊啊我写个0I。I小于大家看清楚了啊,I小于7I加加。哎,佳佳,那我干什么嘞,我我这样写,大家看能不能看懂啊MAP0。I等于一,大家看清楚了,MAP77就代表是最最后那那一排嘛,就是最下面那一排嘛,然后呢,它也是I,那么也等于一好这样子呢,就就把它那个最上和最下设置好了,我们可以输出来看一下。
07:08
啊,因为到时也要打这个地图,所以说我们遍历一下就可以了啊,这也要输出一下这个地图。哦,对的好的好map,呃,那就叫你就叫my map吧,啊对。这样子啊,我把这个名字改一下卖卖。我地图。好,改一下名字。好同学们,我现在现在便利一下,把它输出来玩一把啊,先看看它现在变成什么样子了,输出一下输出地图,那这个很简单,负循环一下就可以了I。关于二位数组的遍历,同学们啊,我们是学过的啊,那么就是八。哀加加。哎,加加来再再来玩一把,下面这个勾勾呢也从零开始走,勾小于就就写七,我就写死了啊啊,其实大家可以用那个任函数来做,我这就没写了,然后呢勾然后输出,输出的时候呢,就PT啊先不要换行,因为一排嘛,一排先不要换行,那我就这样写了,就是my map走I。
08:15
然后勾,然后呢,这个地方我们来这样写一下,对。这样再给他输出一个。再给他输出一个这样的东西啊,输出一个空格。啊,这样这样是不是也可以直接加一下啊,这样空格看能不行。好,那我就。可以吧,相声可以吧?啊,可以可以的话,打完过后呢,我们就再换一下行。保存一下。啊,保存一下,我们来看一看现在地图长什么样子啊,就是说我打一个点要打打一个空格,这样呢,看起来会清楚一点啊,空格也不多,好,我来跑一下先。好CD点点CD到这个主主包,然后go让面点勾。
09:00
好,跑一下。好,同学们可以看到目前呢,目前我们已经把把这个最上边和最下边已经置为一了,好,我们接着把最左边和最右边也置为一啊,因为这样子呢,我们就就可以知道它是强了嘛,好接着再做一个动作。好,我把这个复制一下。啊,在这里面可以写是吧。啊,我就我就分开写吧,无所谓啊,我就分开写清晰一点,把最左。最左和最最右啊,最左和最右没问题,那最左和最右呢,它这个又发生了一点点变化,就是它是呃,相当于是对这个行行,那么这边呢,就得就得写八了。就得写八,然后这边做一个变化,这边做一个变化,呃,它这个行是列是不变的,就是这个地方写成I。这写成I,然后这边呢,把它写成这个零啊零列,然后这边也写成I,然后这边是第几列呢,是第六列啊,这样子呢,注意当然这有有几个点,我是重新设置了一下,就有会重复设置那四个点,但是无所谓啊,我也不去判断了,大家看一下,这样我执行一把。
10:16
同学们看到啊,同学们可以看到,那现在呢,大家可以看到,我已经把最最上边。最下边最左边和最右边全部设为一了。好,那中间呢,这个零就代表是呃,还没有探测过的,现在我们开始继续玩好,第一步咱们就算是搞定,地图算是做出来了啊,地图算是做出来了,好,我们先截一段小视频。
我来说两句