乌龟编程精讲版-45

python玩与学 | 有你好看

公益教程 | 代码俱乐部 | 玩物励志

我们会用几期教程为大家做一个“迷宫”游戏。今天我们先试图画一个迷宫,什么样子的?请看下面:

至于迷宫里面怎么设置“弯弯绕”,代码都能按照你的要求改变。今天教大家怎么样画出这样的迷宫来。我们要在代码中先设计出上面迷宫的“草图”,然后通过寻找一种“映射”关系来将它“投射”到画布上。怎么弄呢?先来看下关于“列表”的准备知识:

列表里找“内容”

其实就是说的“索引”

上一节

《装东西的“容器”》

一文对“列表索引”有了介绍。其实最主要的就是要记住:索引是从0开始的——列表里的第一个东西是“***[0]”,其实对字符串的索引是和列表一样一样的。比如下面这个s字符串:

我想取到“y”这个字母,怎么弄呢?当然是s[1]就可以了。但如果是这样的一个字符串的列表呢?我还是想取“y”这个字母,怎么写?

首先先取到“python”这个字符串——a[0]是吧;a[0]里再取“y”,那就是a[0][1]了,理解了吗?

迷宫布局

盖房子之前都要先画图纸

画了张迷宫的局部图,下半部分没有画出来,最左上角的的方块的坐标我想设定为(-288,288)——为什么是它?因为我想这么设置的(整体是700*700大小,坐标系原点在中心位置,那一半就是300,再刨除边儿一点,就取了288);方块和方块之间的距离是24,上下都一样。

编写代码

用到好多知识

看了迷宫布局你该知道我想怎么画了!对了,一个方块一个方块的画——用class创造一个“方形”的乌龟,然后让他从左到右一步一步走,走一步stamp(跺脚踩个印儿)一下,走一步再stamp一下.......直到画完。我把代码分成了三部分,你把三部分连成一个整体执行就得到最后结果了。

第一部分代码

第一部分代码做了一些“背景”设置(bgcolor—背景颜色;title—标题;setup—大小)。像上面说的一样,我设置的大小是700*700。然后我设计了一个叫做“Pen”的class)。关于class的内容不知道的可以点击这里:

第二部分代码

第二部分代码我们建了一个叫做“level_1”的列表——呵呵,这个列表不错吧?已经被你给看出来了——我用"XXX"已经摆出来了一个“字符迷宫”(如果你不喜欢这个迷宫样式,你自己改吧,交给你了!),好像忘记告诉你一个查询列表长度的函数:len()——len(level_1)就是“level_1这个列表里装了多少个东西”。数一数上面的行数就知道了(25个)。

第三部分代码

第三部分代码是关键,如何将上面我们搭的“字符串迷宫”草稿给它一 一对应的画出来?建了一个函数叫“setup_maze”。基本想法就是——一个一个的取level_1列表里的内容,如果取到的内容是“X”,那就让乌龟走到那里面去stamp跺脚踩个印儿。还有就是有一个无形的坐标要一直跟着...要根据上面的迷宫草图写出一个公式:

screen_x = -288 + (x*24)

screen_y = 288 - (y*24)

里面有两个for循环,而且是嵌套的,外层的for循环的变量y依次取“从0到24”;里层的for循环的变量x依次取值也是:“从0到24”。想一想是这样吧?

三部分代码连起来执行一下,得出最终结果:

迷宫图

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180908G1BK2S00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券