00:00
各位,我们接着给大家来讲解一下波浪里边的二维数组,那么二维数组呢,它是多维数组的最简单的一种,我们前面讲的数组呢,都是一维数组,那现在呢,我们来看一下二维数组,好吧,嗯,二维数组其实应用场景非常的多,你比如说我们写一个五子棋游戏,大家看到没有五子棋游戏里面这个棋盘。大家们看到这个棋盘其实就是一个二维数组可以构成的,你再比如说我们以前,呃,以前我在讲这个Java的时候呢,我带同学们写了一个递归,基于递归的一个迷宫小游戏,你看这个地方他也用到了一个二维数组,因为这个这个迷宫大家看见没有这个迷宫。就看这个迷宫,它呢,其实也是一个二维数组构成的,对不对,所以说二维数组的应用场景还是比较多的,那我给大家看一个我以前写过的这个迷宫的小游戏,大家感受一下,这里面呢,二位数组呢,就用的。
01:07
就就用上了,就用上了,好我我打开以前我写的一个小游戏,OK,给大家欣赏一下,大家感受一下,呃,当然了,这个项目呢,它是用Java写的,就是很好久以前写的,大家看一看啊,体验一下,我们用Java运行一下。My frame。二跑。好,你们可以看到。这里面就出现一个小迷宫,那大家看这里边,从这开始到这儿就是一个二维数组,里边可以画上一些遮挡物体,看到没有,我可以画遮挡物体,把这个小球挡住,甚至我可以在这儿也画一个,那么最终当我一点走这个按钮的时候呢?这会儿这个地方会出现一个小球。这个小球出现过后呢,当我一点走,这个小球就会从这里最终找到这个位置,也就是说小球它会从这里出发。
02:07
最后到达这个角,如果小球到了这儿呢,就说明这个迷宫。走完了。那这里面它其实就用到了二维数组加我们前面讲的这个递归的回溯算法,那给大家演示一下走,你看。看到一个蓝色的小球没有,你看这小球很可爱的是不是,其实这个时候他为什么他诶看到找到了。因为这里面他用回溯,所以说他到这个地方的时候,有可能还回去一趟,他用的是回溯算法。这里边我们就用到了我们的二维,好大家体验一下就可以了,好吧,我先把它关闭掉,嗯,这个小游戏呢,到时也分享给大家。好,这是我们给大家体验了一下二位数组的应用场景,来,我们把笔记给大家补一下。二维对吧,二维数组的介绍。
03:03
OK,我们来一个二号标题。我们来一个二号标题。我的标题二,OK,那么刚才呢,我们说到二位数组,二位数组呢,我们这地方多维数组里面,我们只介绍二位数组,好吧,另外一个呢,就是刚才老师所说的二维数组的一个应用场景。应用场景呢,我也把它罗列到这里来,好,这是我们的我的标题二,然后比如我们在做游戏的时候,就会用到我们的这个二维数组,比如说你们玩的一些网游,它的地图其实里面就是一个二维数组,我把这个图呢给大家也截过来,大家有个印象好吧。OK,好,这是二维数组,那那么讲完这个二维数组过后呢,我们就按老规矩来一个二维数组的快速入门。对吧,我们来一个他的快速入门。体验一下它的用法。
04:01
来走一个啊同学们,那二位数组呢,怎么跟他讲呢?我们直接上一个案例说请使用二位数组输出下面这个图形,这个图形你看是不是,其实你可以看到,如果我们只看这一个,是不是这是一个,这是一个数组啊,再看这个地方是不是又是一个数组,再看这个是不是又是一个数组,再看下面是不是又是一个数组,其实这就是。二维数组,所谓二维数组其实就是一维数组里边的元素又是数组,这个就是二维数组,其实二维数组是在一维数组上扩展的,我们前面学的一维数组的元素就是就是基本数据类型,比如说int呀,Float呀,String呢,对不对?但是二位数组它是你可以这样理解,就是一位,它是一位数组,但是一位数组里边的元素呢,又是一个一位数组,从而就构成了二维数组。来吧,我们来给大家看一下二维数组是怎么使用的,好不好。
05:03
OK,二位数组快速入门来完成这个案例,这是这么一个东西,那我直接就给大家走代码了好吗?直接走代码比较简单。代码演示。好,跟上老师的思路。那还是打开我们的Vs code,好吧,打开Vs code,呃,因为它是讲的二维数组,所以说我们新建一个文件夹。我取个名字叫martty。Marty,然后。多维数组嘛,然后呢,我们新建一个文件叫main.go。好,前面这一部分呢,仍然可以拿来用一下,对不对。好,写完了,那么我们来做一个二维数组的演示案例。跟着老师思路啊,我们要做的这个功能,其实刚才老师已经讲了,就是输出这么一个图形,用二维数组来输出这么一个图形。
06:07
好,我先把它放到我们的Vs code里边去,好,整体往这边挪一下来吧,它的这个思路很简单,我就直接升代码了。首先第一步我们先定义。或者叫声明都可以,有些人喜欢叫声明,有些喜欢叫啊,定义都可以,声明一个二维数组。二维数组,那么二维数组怎么声明呢?非常的简单,前面还是VR,比如说我写个数组,好吧,他这样子的,你原先。你你首先看这是一个几个元素,这是124个,好,那么我可以先声明424。里边呢,又是你看啊,原先我们如果这样写的话,是不是就说代表这这个这是个int数组,数字里面有四个元素,但是它现在呢,每个里面不是一个int了,而是什么又是一个数组。
07:05
这样理解是不是就很好理解了,你把它看成这个。是是这个数组里边的,嗯,每一个元素放的是什么东西,它放的是什么呢?是不是123456啊六。看到没有,也就是说你可以这样理解说,这有一个一维数组,可以放四个元素,但是每个元素是什么呢?又是一个。一位数组。对吧,好这就完事了,然后呢,我们这个就写完了,就写完了。好,此时此刻,此时此刻大家都知道,当他写完了过后,这个数组呢,其实它有初始值全部都为零,对吧,它全部都为零,因此呢,我们给他付出值。付出子。好,付出值的话呢,零这块我们就不去改变它了,也就是说其实这个时候你要是不付出值的话,你直接输出,我们来看一下是什么样子的。
08:07
如果我现在不不付出时,其实很好理解,它就是什么呢?它就是全部为零。就是他有,他有。它这个二位数组,每一个元素呢,又是一个一位数组,它全部都是零,来看一下同学们。那走着,我把这个打开。点开它这个一输出,大家一看就明白了,一看就明白了,好进到code里边的。这个叫做marty。然后输入CMD,好吧,Go。Run什么呢?Test,哦,不是main,点够一输出,大家一目了然,大家看一下。是不是,诶大家看现在是不是看得很清楚了,你看。这是其中的一个元素,这是第二个元素,这是第三个元素,这是第四个元素。
09:01
是不是刚才符合我们前面定的那个中括号四只是它的每一个元素呢?不是一个基本数据类型,而是一个什么呀,而是一个数组。就说你你可以理解成。原先的那个基本数据类型变成了一个数组,那么这就叫二维数,看到没有,一共有四个数组,有四个一位数组,整个就构成了一个二维数组。OK,好,但是呢,大家也知道人家这的要求说的非常的明白,人家是要求这个元素为一,也就是说它的第二一个元素对应的这个一位数组的第几个元素呢?第三个元素要为一来怎么找到它是不是,首先你要看。这个地方就是这一组元素是。它的第几个元素呢?第几个一位数组实际上是它的第二个,是不是应该写一啊。是不是是不是这样写,如果这样输出的话,是不是这个现在老师高亮的部分就代表哪里,是不是就代表这个元素。
10:05
就代表这个一位数组,但是里面的第几个元素呢?第三个元素是不是写二。是不是这个就对应这个一这个位置了,然后你把它给我改成1O了,同样另外这两个我就不再多说,直接上代码。写一下这个是第第几个元素,是它的第三个元素,所以说这个地方你就应该写二。第三个元素是不是这第二,第二个的第几个,第二是是这个二代表几,是不是写一呀。写一给它负一个二,再看这个元素,这个元素是不是对应还是对应我们的第三个一位数组还是二。然后呢,第几列啊第几列。是不是?是不是他的第四列,第四列就应该写三,因为它的下标是从零开始编的嘛,所以写三好,当我这样一写完了过后呢,来朋友们,我们再来执行一把。
11:07
我们再来执行一把,请看效果。我们可以看到对应的这个一变了,二三变了,但是人家的输出呢,不要求不是让你横向输出,而是要像这样输出一个图形又怎么办,非常简单便利一下。遍历二维数组,二维数组按照要求,按照要求。要求输出输出图形没问题吧。那么首先,既然它是一个二维数组。既然它是一个二位数组,所以说我们先把它的每一个一位数组遍历出来,这个能理解吗?它一共有几个一位数组啊,这个这这个二位数组有几个一位数组是不是有四个呀,四个是不是我写四。小于4I。
12:01
A。佳佳。对不对,然后呢,我们是不是如果我这样便利的话,同学们想一想,如果我这样输出,它会出现一个什么情况来,同学们如果我这样输出。是不是就像下面我就不要了啊,是不是相当于我每一次就把就把就是遍历一次就把每一个一位数组输出来了,大家看是不是这样子的走。你看是不是横向就输出来了。是不是就输出来了。非常简单,但是呢,人家人家说你不要按照按照这个一维数组的方式输出,要一个一个的把一维数组里面的每个元素也输出来,那是不是就意味着我们还需要找到这个一位数组,再对它进行一个便利,依次取出里面的元素啊,因为它这里面是不是还多了一个中括号,这个中括号是不是按照整个数组一次性输出的呀?但人家是要求怎么样要求一个一个的输出,因此怎么办呢?非常的简单。
13:00
其实这个地方你可以再进行便利是不是?零。等于零啊,等于零,那高小于几呢?大家都知道它的每一个一位数字里面有几个元素,是不是有六个元素啊,那就写六,看到没有勾加加。包起来好,这个时候我们就可以输出了PT。这个呃,那这个时候我们就不要换行,好吧,我们就不要换行,因为人家是一排一排的输出嘛,那你输完一个过后再换行,因此这方应该写成二先生姐I。这一问是高,然后输完了过后呢,输完了过后我们应该给他来一个空格。是不是来个空格完事了,等到这个for循环走完以后,就把其中的一个一位数组给遍历完了,然后我们给它来一个换横幅,这样就满足这个题的要求了。来,朋友们,我们运行一小把看效果。
14:07
同学们可以看到,诶,是不是这样子就把中括号给去掉了,然后呢,也按照别人的要求,按照这个要求输出我们对应的图形呢。看到看到吗?所以说你们有注意到,老师在讲课的时候,始终在强调二维数组,其实本质就是一个一维数组,里面的元素又是一个一位数组。是不是这个道理啊,你只要理解这个的,那么其实下面的都不太难理解,因为它的本质就是在一位数组上进行了一个扩展而已,进行了一个扩展而已。好的同学们,那么这个快速入门案例呢,我们就给大家讲到这里,我把这里的东西进行一个板书。好的好的,我板书一下,注意听。下边呢,我把刚才写的代码进行一个板书处理。
15:02
好,这是我们的第26行,对不对。完成。把它放到这里了。没问题吧,比较简单。然后呢,接着我们继续往下截取第27行。27行到下面没几行了。OK。好,我把它也放在这里,对吧,整理一下。好的同学们,那关于我们二维数组的一个基本介绍和他的快速入门呢,就先给大家介绍到这里,下面呢,我们就会展开他的一些细节的讲讲解,OK,好,这块先说到这。
我来说两句