零根本入门用Excel 编写人工智能轨范:老鼠走迷宫_迷宫_行号
由于内容较多,操持用三篇讲完。本文是第一篇:软件编程的快速入门,同时完成走迷宫程序的根本事情。
学习的最低哀求是电脑中装有微软的Office办公软件,版本不限。只要你会Excel表格的基本操作,就OK了。不用安装任何编程措辞和开拓系统。
如果电脑中只有WPS Office,理论上也可以,但须要***一个插件才能用VBA编程。有须要请留言。
我们会从VBA编程措辞的入门讲起,让大家用最短的韶光编写出自己的第一个打算机程序。然后开始编写真实的人工智能程序,采取强化学习算法。
强化学习是谷歌的围棋AI阿尔法狗、OpenAI的红蓝小人捉迷藏以及ChatGPT等都用到的人工智能算法。
我们会在Excel表格中画一个小型迷宫,布局三个表格作为人工智能的“参数”,老鼠要学会走迷宫,便是通过这些参数得到“智能”的。
这个教程也非常适宜假期中的学生们,学习编程措辞和人工智能编程。
下面我们开始:
01 在Excel中编写和运行程序
微软的表格软件Excel自带编程措辞:VBA,这是一种可视化的BASIC措辞,特殊适宜初学者学习编程。
第一步:打开Excel的编程窗口
打开Excel软件,新建一个空缺表格。然后按 Alt+F11 组合键,打开编程窗口。组合键的按法是先按住Alt键不放,再按功能键F11。结果如下图:
右侧的窗口便是用来编写程序的界面,请按照上图所示,适当调度编程窗口的大小,使其在霸占屏幕的一半,同时露出一半的表格。
然后按照图中标示①②的顺序,点开小框中的“+”号变为“-”号,再双击“Sheet1”,把光标移到③处,就可以在里面写程序代码了。
第二步:编写第一个程序代码
每一个程序必须由“Sub”开头,空格,接『程序名称』及一对空括号,然后回车。『程序名称』可以用英文及汉字。用“End Sub”结束这段程序。例如:
Sub 初始化()End Sub
如下图:
特殊要强调的是,在程序中除了名称可以用汉字以外,其他的字符以及标点符号,都必须在英文状态下输入。否则会提示“无效字符”。最随意马虎出错的是标点符号,如逗号『,』、句点『.』、单引号『'』、双引号『""』、括号『()』等,都必须是英文符号。
在一个程序中,可以写多个以“Sub”开头,并以“End Sub”结尾的程序,这段程序称为一个“过程”或“子程序”。
在“Sub”与“End Sub”之间,写入自编的程序代码。
第三步:在过程内写程序代码
把光标移到Sub过程内部,写入第一条语句:
Cells(1,1)=1
这条语句的功能是,向指定的单元格中填写指定内容。格式如下:
例如:Cells(1,1)=1,这句话的意思是,向第1行第1列的单元格中写入数字1。
我们在这个Sub过程里写三个Cells()语句:
Sub 初始化()Cells(1,1)=1Cells(1,2)=2Cells(1,3)=3End Sub
把稳,程序语句常日要比Sub向右缩进4个空格,这样使程序看起来层次分明。按一下Tab键即可实现缩进功能。完全代码如下图:
下面我们看看怎么运行这段程序。
第四步:运行程序
把光标移到Sub过程内部,然后按功能键F8,可以看到 Sub语句的背景变成黄色,代表程序将从此处开始实行。
如果运行程序时提示缺点。请跳到第五步 设置安全级别。
F8键的功能是按顺序实行一句程序,专业名称叫“单步实行”。
再按F8键,让黄色背景移到下一句 Cells(1,1)=1 上,代表此句将被实行。
再按F8键,黄色背景又下移一行。此时上一句已经实行完毕,我们看当作果是什么:
我们看到表格中的第1行第1列的单元格中被填入数字1。
我们的第一句程序实行成功了。
再按两次F8键,让后两条语句也实行完毕。我们看到,表格的第1行第2列和第3列等分别被填入数字2和3,如下图:
至此,这段小小的程序全部实行完毕。我们编写的第一个程序大功告成了。
不过,这么一下一下地按F8实行程序也太累了吧,能不能一键实行到底呢?
当然可以!
按功能键F5可以一键实行程序。
之以是先讲F8单步实行,是为了能让大家能够直不雅观看到程序的实行顺序。往后在调试程序时,用单步实行也会非常方便。
把稳,如果我们编写了多个Sub过程,一定要把光标移到想要运行的Sub过程内部,再按F5,这个过程才会被实行。而其它过程则不会被实行,如下图:
末了总结一下,VBA编程常用的功能键如下图所示:
以上便是在Excel中用VBA措辞编写和运行程序的全部步骤。一点儿也不难吧?
第五步:设置安全级别
如果前四步统统正常,可以跳过这一步不看。
如果程序无法运行,提示程序被“禁止”,这是由于Excel的安全级别设置过高,不许可运行任何程序。须要重新设置“宏安全性”。
请按下图4个步骤,将安全级别设置为:“禁用所有宏,并发出关照”。
如果在Excel主菜单找不到步骤①中的“开拓工具”选项,不要焦急。
点击主菜单的“文件”→“选项”→“自定义功能区”,在“主选项卡”下,选中“开拓工具”复选框,“开拓工具”即可涌现。如下图所示4个步骤:
有些较低版本的Excel软件,安全性设置在:“工具”→“宏”→“安全性”选项下,请把安全级别设为“中”即可。
02 编程基本操作
我们已经写了3句代码,在表格第1行前三列填入了1、2、3三个数字。下面接着在后面依次填入4、5、6、……,直到20,一列填一个数字。
如果还用上面的方法,就得傻傻地写20条Cells()语句才能完成。我们利用循环语句,几句代码就可以实现。步骤如下:
(1)定义变量。我们在中学就学过代数,可用字母表示数字,如x=8,y=0.5等,这些字母在程序中称为变量。
在利用变量前,须要先定义变量的类型,方法如下:
例如:(注:以下程序代码显示不全时,可旁边滑动)
Dim 列号 As Integer '把变量『列号』定义为整型,只能表达整数Dim x As Single '把变量『x』定义为浮点型,可表达带小数点的数Dim 姓名 As String '把变量『姓名』定义为字符串,可表达“张三”等单词或汉字
常日把所有的定义变量的语句都集中在一起,放在Sub过程内的上方。
其余,我们看到在上面的Dim语句后面,还随着一段由英文的单引号『‘ 』开头的一段话,这是注释语句,显示为绿色。它是给阅读者看的,用于解释程序的功能,以方便理解。这种由单引号开头的注释语句不是程序,不会被实行。
(2)For循环语句For循环语句由For开头,Next结束。中间是循环体,如下图:
例如:
Dim 列号 As Integer '把变量 列号 定义为整型For 列号 = 1 To 20 '列号从1到20循环Cells(1, 列号) = 列号 '循环体,向指定单元格写入数据Next 列号 '每循环一次,列号加1,大于20退却撤退出循环
这段程序从『列号=1』开始实行,实行到『Next』语句后,自动给『列号』 加1,然后跳回到『For』语句重新判断『列号』。
如果『列号』没有超过20,则再次实行循环体中的代码。
一贯重复循环以长进程,直到当列号超过20后,退出循环,实行Next后的下一句程序。
完全的代码如下图。请把光标移到Sub过程内部,按F5实行这段程序。
结果是:在表格第1行的每一列,依次从1写到20,见下图。
这一串连续的数字便是表格的列号,我们留着它供往后利用。
如果你还没有搞明白循环语句的用法,建议按 F8键单步实行上面的程序,可以直不雅观看到循环语句是如何事情的,还能看到循环变量『列号』的值的变革过程。如下图:
(3)保存程序
程序编好后,要保存起来,以便下次利用。方法是:
点选主菜单的“文件”→“另存为”→“其他格式”。
然后点选“文件格式”,选择“Excel 启用宏的事情簿(.xlsm)”,输入文件名“老鼠走迷宫.xlsm”,再点“保存”按钮即可。如下图:
把稳,必须选用后缀为.xlsm的文件格式存盘,选用其他文件格式会导致程序丢失。
有些较低版本的Excel 没有.xlsm文件类型选项,那么就按照正常办法存盘即可。
(4)打开已保存的程序
在Excel中点选主菜单的“文件”→“打开”,选择刚才保存的“老鼠走迷宫.xlsm”。文件打开后,常日会有一个安全警告,如下图黄色背景部分:
这是为了防止未知文件中的宏病毒。我们已知这个文件是安全的,以是点击“启用内容”按钮即可。
对付较低版本的Excel,安全警告可能是个对话框,同样选择“启用宏”按钮。
启用后,请按组合键 Alt + F11 打开编程窗口,即可看到上次编写的程序了。考试测验运行一下程序,检讨是否正常。
如果打开程序或运行程序涌现问题,请跳回到上面的第五步:设置安全级别。
以上是Excel VBA编程的基本入门。下面我们进入本色编程阶段。
03 画迷宫
首先在Excel表格中,画一个三行三列的迷宫。
我们把迷宫的左上角,也便是出发点,放在整张表格的第4行,第2列。
由于这两个数字在后面的程序中会常常用到,我们定义两个常量代表这两个数字。定义常量的方法如下:
Const 迷宫头行 = 4 '迷宫左上角的行号Const 迷宫头列 = 2 '迷宫左上角的列号
这样定义完往后,只要在程序中利用[『迷宫头行』,就代表数字4,利用『迷宫头列』 就代表数字2。
我们把定义常量的代码放在Sub过程表面,编程窗口的最顶端。如下图所示。
这样做的缘故原由是:在Sub过程表面定义的常量或变量,所有Sub过程都可以利用。
然后,我们开始编写第二个过程“画迷宫”,写在第一个Sub 初始化()过程的下面(如上图):
Sub 画迷宫()End Sub
接着在这个新的Sub过程里面,写入以下代码:
Dim 迷宫行号 As Integer '迷宫内部的相对行号Dim 迷宫列号 As Integer '迷宫内部的相对列号Dim 迷宫编号 As Integer '迷宫内单元格的编号
这三条语句定义了三个变量,写在Sub过程内部,称为“局部变量”。它们与定义在Sub过程外部的变量不同,局部变量只在Sub过程内有效,别的Sub过程不能利用。另一方面,在不同的Sub过程内可以定义的相同名字的变量,它们之间互不影响。
变量的含义在后面的注释语句中已经写了。我们往后用到它们的时候再详细阐明。
接着写入以下代码:
'以下画迷宫边框,并设置迷宫区域的字体属性With Range(Cells(迷宫头行, 迷宫头列), Cells(迷宫头行 + 2, 迷宫头列 + 2)) .BorderAround LineStyle:=xlDouble '在迷宫四周画出双线边框.HorizontalAlignment = xlCenter '设字符居中显示.Font.ColorIndex = 15 '设字体为灰色.Font.FontStyle = "Bold" '设字体为粗体End With
以With开头的第一个语句中,Range()语句的功能是定义一个矩形区域,括号里的两个Cells()分别为矩形区域的左上角和右下角的单元格。
Cells()里利用了我们刚定义的两个常量『迷宫头行』和『迷宫头列』,分别代表4和2。也便是说,它的实际含义是:
Range(Cells(4, 2), Cells(6, 4))
即以第4行第2列的单元格为左上角,以第6行第4列的单元格为右下角,组成的3行3列的矩形方块。如下图:
可以看出,Cells()语句内的行号,列号可以写成数字、常量、变量或表达式,非常灵巧。这便是编程的特点,大部分代码都可以这样用。
有人会问:为什么在程序里不直接写Cells(4, 2), Cells(6, 4),而要用那么长的名字呢?
这样做是为了往后须要改变数字时,便于修正。
接着看With语句下面的4句代码,功能是画出这个矩形四个边框,并设置字体属性。个中的英笔墨符,都是Excel手册规定的,查出来利用即可,没必要记。
代码的开头或中间有一个或多个小句点,其含义是:小句点后面的工具属于前者。
比如,中国.北京,含义是:中国的北京。
如果写成“中国.华盛顿”,便是错的,由于中国没有这个工具。
每个工具还可以有自己的子工具,因此,可以用多个句点连着写多级。比如:
中国.北京.清华大学.法学院.某某班.某某人.年事=20。
末了一级的工具常日是前面对象的属性,比如某人的年事、身高、体重、学习成绩等等都是属性。
在VBA 中,单元格、矩形块、表格等都称为工具。这种“面向工具”的表达办法,使归属关系非常清晰,纵然有重名的工具也不会造成混乱。
常日,当一个工具有多个属性须要设置或利用时,就可以用With语句。
以With开头,以End With结束。用法如下:
把以上的代码复制或录入到Sub 画迷宫()过程内,然后按F5键运行,看看是否画出一个矩形边框。
再强调一遍,按F5键运行前,要把光标移到Sub过程内,才能运行该过程。
如果光标在Sub过程外部,按F5键后会弹出菜单,让你选择要运行哪个过程。如下图:
选择“画迷宫”,点击“运行”按钮即可实行。
下面4句代码画迷宫的内部的墙,方法是用Cells(行号,列号)语句指定某个单元格,然后画该单元格某一边的边框,一次画一条。
'以下画迷宫内部墙Cells(迷宫头行 + 0, 迷宫头列 + 0).Borders(xlEdgeRight).LineStyle = xlDouble '指定单元格右边画双线边框Cells(迷宫头行 + 1, 迷宫头列 + 0).Borders(xlEdgeBottom).LineStyle = xlDouble '指定单元格下边双线边框Cells(迷宫头行 + 1, 迷宫头列 + 2).Borders(xlEdgeBottom).LineStyle = xlDouble '指定单元格下边双线边框Cells(迷宫头行 + 1, 迷宫头列 + 1).Borders(xlEdgeTop).LineStyle = xlDouble '指定单元格上边双线边框
个中的行号,列号都因此常量『迷宫头行』和『迷宫头列』为基准的,即以第4行第2列为基准,分别+0、+1、+2来指定对应的单元格。
下一步画迷宫内部单元格的编号。
此处须要利用在Sub过程开头定义的三个局部变量。
个中『迷宫行号』和『迷宫列号』是迷宫内部相对付左上角的行号和列号,取值分别为0、1、2。即在迷宫内部的第0行、1行和2行,或第0列、1列或2列。
迷宫左上角的位置由常量『迷宫头行』和『迷宫头列』决定。
例如:迷宫内的第0行第1列,即:迷宫行号=0,迷宫列号=1。该单元格表示为:Cells(迷宫头行 + 迷宫行号, 迷宫头列 + 迷宫列号)
'以下画迷宫内部单元格的编号 迷宫编号 = 0 '设迷宫编号的初始值为0 For 迷宫行号 = 0 To 2 '迷宫当前行号=0,1,2 For 迷宫列号 = 0 To 2 '迷宫当前列号=0,1,2 Cells(迷宫头行 + 迷宫行号, 迷宫头列 + 迷宫列号) = 迷宫编号 '画迷宫内单元格的编号 迷宫编号 = 迷宫编号 + 1 '修正迷宫编号变为当前值+1 Next 迷宫列号 Next 迷宫行号
这是两个嵌套在一起的For循环语句。
外圈的For循环语句,一共循环三轮,『迷宫行号』分别取值0、1、2。
外圈的For语句每循环一轮,都要进入内圈For循环语句,并循环三轮,『迷宫列号』的取值分别为:0、1、2。
统共进行3x3=9轮循环。
『迷宫编号』初值为0,每循环一次加1,在9轮循环后,其值从0加到8 。
这两个For循环语句完全实行过程如下图的箭头所示:
蓝色箭头是内圈的列号循环,赤色箭头是外圈的行号循环。9次循环后。迷宫内的9个单元格依次被写入0~8。
末了,我们在迷宫左上角写“老鼠”,右下角写“食品”。
把稳,在单元格中所写的字符,必须用英文的双引号括起来,不能用中文的双引号:
'以下写"老鼠"和"食品" Cells(迷宫头行, 迷宫头列) = "老鼠" '在迷宫0号单元格写“老鼠” Cells(迷宫头行, 迷宫头列).Font.ColorIndex = 1 '字体设为玄色 Cells(迷宫头行 + 2, 迷宫头列 + 2) = "食品" '在迷宫8号单元格写“食品” Cells(迷宫头行 + 2, 迷宫头列 + 2).Font.ColorIndex = 3 '字体设为赤色
结尾 End Sub,画迷宫结束。
请把光标移到Sub 画迷宫() 的内部,按F5键运行此程序。
一个Sub过程除了可以直接运行之外,在别的Sub过程内部,写这个过程的名字,也可以调用此过程。调用时,不用写Sub,一样平常也不用写括号。
例如,我们在Sub 初始化()内部,加入俩行,如下所示:
Sub 初始化() Dim 列号 As Integer '把变量 列号 定义为整型 For 列号 = 1 To 20 '列号从1到20循环 Cells(1, 列号) = 列号 '循环体,向指定单元格写入数据 Next 列号 '每循环一次列号加1,大于20退却撤退出循环 Range(Cells(2, 1), Cells(26, 12)).Clear '清空指定矩形区域 画迷宫 '调用“画迷宫()”过程 End Sub
末了两句是新增的,第一句用于清空一块矩形区域,区域大小由左上角和右下角的单元格确定。第二句调用『画迷宫』过程。
这样,当我们运行『初始化』过程时,即可自动运行『画迷宫』过程。运行结果如下图:
请把上面的代码复制或录入到编程窗口中,按F5键运行一下,看看是否能画出同样的迷宫。
如果对这段程序有不明白的地方,建议按F8键单步实行,不雅观见地式的实行流程,可以帮助理解。
04 画参数表
迷宫画好后,我们要做的事情是让老鼠动起来。
怎么动呢?假设老鼠在迷宫内某一个单元格中,有上、下、左、右4个方向可以移动。但是,迷宫中有墙,被墙挡住的方向不能移动。
以是,须要让老鼠知道,往哪个方向可以移动,哪个方向不能移动。否则它可能会随意穿墙乱走。
为此,我们建一张表,把迷宫中每个单元格的4个方向都列出来,在有墙的方向写0,没有墙的方向写1。这样,老鼠根据表中的数值是1还是0,就知道这个方向是能走还是不能走。
迷宫一共有9个单元格,每个格有4个方向。以是我们建一张9行4列的表,就可以把所有可能的情形表示出来。这个表称为“动作参数表”。
在人工智能中,直接建表是处理参数最大略的办法。然而,不是所有的运用都可以直接建表的,或者是直接建表的参数过于巨大,不经济。这种情形下,常日用神经网络模型来表达,例如在处理笔墨、图形、措辞等繁芜情形时。ChatGPT处理自然措辞时,就利用了神经网络技能,个中包含大量的参数。
我们把动作参数表的左上角,放在表格的第4行,第8列,我们定义两个常量代表这两个数字。定义常量的代码如下:
Const 参数表头行 = 4 '动作参数表左上角行号Const 参数表头列 = 8 '动作参数表左上角列号
这两句代码与之前定义的两个迷宫常量要放在一起,放在全体程序的最上方,如下图:
然后我们创建一个新的过程:画动作参数表,并定义内部利用的局部变量。如下:
Sub 画动作参数表() '画动作参数表(θ) Dim 迷宫行号 As Integer '迷宫内部行号 Dim 迷宫列号 As Integer '迷宫内部列号 Dim 迷宫编号 As Integer '迷宫位置编号 Dim 参数表行号 As Integer '动作参数表当前行号 Dim 参数表列号 As Integer '动作参数表当前列号End Sub
接着,在Dim语句下面写“画表头”的语句,如下:
'画动作参数表表头 Cells(参数表头行 - 2, 参数表头列 + 1).Value = "动作参数表θ(动作表格化)" Cells(参数表头行 - 2, 参数表头列 - 1) = "迷宫编号/" Cells(参数表头行 - 1, 参数表头列 - 1) = "移动方向" Cells(参数表头行 - 1, 参数表头列 + 0) = "上" Cells(参数表头行 - 1, 参数表头列 + 1) = "右" Cells(参数表头行 - 1, 参数表头列 + 2) = "下" Cells(参数表头行 - 1, 参数表头列 + 3) = "左" '画动作参数表边框 With Range(Cells(参数表头行, 参数表头列), Cells(参数表头行 + 8, 参数表头列 + 3)) .BorderAround LineStyle:=xlContinuous '画参数表四边单线边框 End With
然后,我们向动作参数表中填数据。
方法是从『迷宫编号』为0的单元格开始,一贯到第8个迷宫单元格,依次判断该单元格的上、右、下、左四个方向有没有边框。
如果没有边框,代表可以通畅,则向对应的参数表中填数字1 。
如果有边框,代表不能通畅,则向对应的参数表中填数字0 。
如下图:
实现判断比较的功能须要利用IF分支语句,用法如下:
个中的『条件表达式』常日要比较两个常量或变量的大小,常用的比较运算符有:
比较运算符
描述
=
即是:前者的值是否即是后者的值?是则表达式为真。
<
小于:前者的值是否小于后者的值?是则表达式为真。
>
大于:前者的值是否大于后者的值?是则表达式为真。
<=
小于即是:前者的值是否小于即是后者的值?是则表达式为真。
>=
大于即是:前者的值是否大于即是后者的值?是则表达式为真。
<>
不即是:前者的值是否不即是后者的值?是则表达式为真。
表达式中也可以利用算数运算符,常用的如下:
算术运算符
描述
+
加:将两数相加,如a+b。
-
减:将两数相减,如a-b。
乘:将两数相乘,如ab。
/
除:将两数相除,如a/b。
^
幂:进行幂运算,如a^2表示a的2次方。
利用举例:
Sub 测试() '这是一个测试程序 Dim x As Integer '定义一个整型变量x x = 11 '给x赋值 If x <= 2 5 Then '如果x小于即是2乘以5(即10) Cells(2, 1) = "小" '则在第2行1列单元格中填入“小” 。 Else '其他情形,即x大于10 Cells(2, 1) = "大" '则在第2行1列单元格中填入“大”。 End If 'If语句结束End Sub
把这段代码复制或录入到编程窗口中,按F5或F8实行一下,看当作果如何。
试着修正 x=7 这句代码,把数字改成7以下的值,看见地式运行结果是否改变?
下面我们看往动作参数表中填写参数的代码:
'向表内填写动作参数 迷宫编号 = 0 For 迷宫行号 = 0 To 2 For 迷宫列号 = 0 To 2 参数表行号 = 参数表头行 + 迷宫编号 Cells(参数表行号, 参数表头列 - 1) = 迷宫编号 '动作参数表中左侧写迷宫编号 With Cells(迷宫头行 + 迷宫行号, 迷宫头列 + 迷宫列号) '指定迷宫某个单元格 '以下检讨单元格上方有无边框 If .Borders(xlEdgeTop).LineStyle = -4142 Then '如果上方无边框 Cells(参数表行号, 参数表头列 + 0) = 1 '动作参数值填1 Else Cells(参数表行号, 参数表头列 + 0) = 0 '动作参数值填0 End If '以下检讨单元格右方有无边框 If .Borders(xlEdgeRight).LineStyle = -4142 Then '如果右方无边框 Cells(参数表行号, 参数表头列 + 1) = 1 '动作参数值填1 Else Cells(参数表行号, 参数表头列 + 1) = 0 '动作参数值填0 End If '以下检讨单元格下方有无边框 If .Borders(xlEdgeBottom).LineStyle = -4142 Then '如果下方无边框 Cells(参数表行号, 参数表头列 + 2) = 1 '动作参数值填1 Else Cells(参数表行号, 参数表头列 + 2) = 0 '动作参数值填0 End If '以下检讨单元格左方有无边框 If .Borders(xlEdgeLeft).LineStyle = -4142 Then '如果左方无边框 Cells(参数表行号, 参数表头列 + 3) = 1 '动作参数值填1 Else Cells(参数表行号, 参数表头列 + 3) = 0 '动作参数值填0 End If End With 迷宫编号 = 迷宫编号 + 1 '迷宫编号+1 Next 迷宫列号 Next 迷宫行号
程序看起来很长,实在构造很大略。
程序的主体构造依然是两个嵌套在一起的For循环语句,用With语句依次选中迷宫中编号0到8的单元格,然后用4个IF分支语句分别判断该单元格的上、右、下、左四个方向有没有边框。
查手册得知,属性.LineStyle = -4142代表“无边框”。
把以上代码复制或录入到“Sub 画动作参数表()”过程中,完成该过程。
我们把调用“画动作参数表”的语句也加入到“Sub 初始化()”过程中。如下:
Sub 初始化() Dim 列号 As Integer '把变量 列号 定义为整型 For 列号 = 1 To 20 '列号从1到20循环 Cells(1, 列号) = 列号 '循环体,向指定单元格写入数据 Next 列号 '每循环一次列号加1,大于20退却撤退出循环 Range(Cells(2, 1), Cells(26, 12)).Clear '清空指定矩形区域 画迷宫 '调用“画迷宫()”过程 画动作参数表 '调用“画动作参数表()”过程End Sub
末了一句是新增的。然后运行“初始化()”过程,结果如下图:
图中左上部分为迷宫,右上部分为动作参数表。动作参数表共有9行4列。
个中,行的编号为0~8,每行代表迷宫内的一个单元格。每列代表一个移动方向,共4列,分别代表“上、右、下、左”。
我们看表中赤色方框圈住的第0行,它的四个参数值分别为:“0、0、1、0”,即“上、右、左”三个方向的参数为0 ,即不可移动。而向“下”方向的参数为1,可以移动。
这四个参数与左下方的赤色方框中“老鼠”的移动方向参数相同,如蓝色字所示。
迷宫中每个单元格的动作参数,以相同办法填入动作参数表中。
有了这张表,老鼠就知道往哪个方向能走,哪个方向不能走了。
下一篇我们讲如何编写代码让老鼠移动起来,请关注我,以便及时得到推送。
编程中有什么问题请不才面留言。
本文系作者个人观点,不代表本站立场,转载请注明出处!