当前位置:首页>python>python趣味编程--迷宫大冒险

python趣味编程--迷宫大冒险

  • 2026-10-11 10:55:06
python趣味编程--迷宫大冒险
今天我们的python课堂给大家带来一个迷宫大冒险。
先看视频,然后我们还是按照我们的习惯,用拆解思维去拆解分析这个作品的具体任务流程(先自己拆解再看我后续的内容)
我们可以观察到有这样的任务:
1、有多个不同的迷宫背景
2、有一个小猫受到我们控制可以前后左右移动
3、小猫的行动路线会形成轨迹,并且每一关的颜色都不一样
4、每次换迷宫的时候小猫会回到迷宫入口,并且会清空所有轨迹
现在任务已经分析出来了,那应该从哪开始下手呢?
或者说我问各位同学一个问题,我最先应该完成什么才能让我的迷宫冒险能够开始玩,又有哪一部分属于扩展优化的项目呢?
还是先自己想一想,然后有一定想法和思路了再继续看下去。
我们的迷宫任务,肯定是先要完成一次迷宫挑战,也就是先添加一张迷宫背景图,然后让小猫动起来,并且留下轨迹,看能否完成第一次迷宫挑战。
如果我们顺利完成了第一次挑战,那么就可以再添加新的迷宫,添加颜色变化的任务了。
所以接下来我们就按照我们分析的开始程序的编写(背景和角色图片可以在文末的链接自取哈)。
一、添加背景和小猫
今天我们用的还是海龟绘图模块,所以我们还是导入海龟,并且起一个名字叫t。
接下来我们要添加背景和我们的小猫角色。
添加背景的函数叫做bgpic(),这个函数用来从本地的文件中导入一张图片当做背景。
这里要注意,程序保存的位置要和我们的图片在同一个文件夹里,要不然会出现找不到文件的错误。
就像我想安排张三同学去给我拿一根粉笔,我得确保张三在教室里,我才能让他去拿粉笔,我们的程序也必须和图片在一个文件夹才行。
今天的角色也不是用的海龟默认的箭头,而是使用的小猫角色,那怎么把我们的角色修改成小猫的样子呢?
这里分为两步,
第一步是需要先把我们想用的图片放到我们的程序里,
然后第二步就是使用这张图片当做我们海鬼的形状。
我们的图片名字叫做“p1.gif”,所以可以用register_shape()函数就可以把我们本地的图片拿到程序里。
register其实是注册的意思,我们注册游戏账号,就可以登录游戏了,同样的,把图片注册到程序中,就可以在程序中使用了。
然后shape()这个函数就可以改变角色的形状,我们导入哪张图片就把形状改成哪张图片的样子就可以了。
二、让小猫移动到初始位置
导入了背景和角色以后,那我们就要让角色移动到一个初始位置,什么初始位置?
也就是迷宫的起点。
移动的逻辑还是先抬笔避免留下痕迹,然后把笔移到指定位置,然后落笔,因为我们要通过落笔来形成海龟的轨迹,从而判断角色是否按照我们正常的迷宫在行走的。
那在这里还要添加一个speed函数,让速度变得快一些,让游戏更加流畅,速度也要在移动之前设置。
三、小猫移动
然后背景图也有了,角色也有了,下一步是什么呀?
下一步就是让我们的角色动起来,我们用键盘上的上下左右键控制角色移动。
我们需要一直检测哪个键按下去了,哪个键没按下去,并且要给某一个指定键按下去了以后要干什么事情做一个设定。
我们可以使用t.listen()的函数来监听键盘,这个函数可以获取到键盘上哪一个按键有没有按下去。
那接下来就要定义一下我按下去哪个键要干什么事儿了。
这里就要用到我们之前学过的自定义函数了。
我们想让人往前走,就定义一个函数叫做“shang”,表示向上。
然后函数内容就是面向上方,然后移动20步。
这里setheading()是设置朝向的意思,forward()我们之前学过,让角色向前移动一定的步数。
我们的海龟朝向是这么设定的,一开始进入海龟模块面向的最右方是0°方向,正上方是90°方向,左方是180°,下方是270°。
所以上面两行代码的作用就是让小猫面向上方,然后移动20步。
那角色移动的功能已经设置好了,怎么把按键和这个移动函数对应起来呢?
就要用到t.onkey()函数,这个函数可以把我们已经写好的函数绑定给我们规定的按键,用在这里就是把“shang”这个函数绑定给键盘上的“上按键”。
要注意的就是上下左右键对应着up,down,left,right,这几个单词的首字母是要大写的,这是程序设计的时候已经规定好的。
那一个按键绑定好了以后,向下和左、右的按键,各位就可以根据向上移动的功能,自己去尝试编写了,参考代码如下:
那基本功能有了,我们已经可以来玩迷宫游戏了
四、切换背景
那接下来就是优化扩展的任务了,我们可以让游戏里添加多个图片当做背景,逻辑就和角色移动很像了。
先定义切换背景的函数,然后绑定给某一个按键就可以了,在这里我用1、2、3、4键来控制四张背景图的切换,因为我只找了4张图,如果想要更多的关卡,可以自己再去找迷宫背景然后用上就可以了。
那我们按下“1”键以后要干什么呢?
清空屏幕上已经有的画笔痕迹,然后抬笔,移动到起点位置,再落笔,之后就是改变颜色,和改变背景。
这里换颜色和换背景的代码可以在函数最前面,也可以在最后面,因为先换和后换没有影响,但是清空屏幕和抬笔、落笔的顺序是不能变的,要不然轨迹就可能会一直留在原地。
clear()函数就是清空屏幕上所有画笔痕迹的功能。
那最后把我们的“m1”函数绑定给“1”按键就可以了。
接下来我们最后的任务,就是写其他背景的函数,要注意,函数名要修改,颜色和背景图都要改,这些各位可能都能想到。
有还有一个,因为每张迷宫的起点可能不完全相同,所以我们的起点坐标也要根据实际效果进行微调,左右调节就改x(第一个数),上下调节就改y(第二个数)
上图给了大家一个迷宫2的参考程序,其他的迷宫就靠各位自己来实现啦。
最后的done函数不要忘记哈,让页面维持住。
这节课代码会比较多,但是有很多段是相似的逻辑。
简单复盘一下我们这节课用到的思维:
首先是拆解思维来分析任务逻辑,把大问题拆分成小问题,同时也有顺序思维,让我们的程序按照顺序执行才能完成任务。
今天还用了一个思维,叫做第一性原理,今天是不是带大家分析了我们这个任务哪个部分是必要的,哪个部分是优化扩展的呀?
这就属于第一性原理的应用,第一性原理是用来思考一件事情最本质最基础的部分是什么,今天我们这个作品,本质是让小猫角色按照我们规定的路线前进,完成挑战,所以我们优先完成这一部分的逻辑。
在我们生活中,遇到一些事情的时候,我们也可以用第一性原理来分析这件事最重要的是什么,比如锻炼身体,本质是什么?
让身体变得更加健康,那去健身房是必要的吗?
不是,我们在家里也可以进行锻炼,所以只要积极的动起来,就能有一定的锻炼效果,这也是第一性原理的应用。
完整代码:

迷宫大冒险百度网盘素材:

链接: https://pan.baidu.com/s/1d7OYLauntDxO9mzUYwK3kA?pwd=6ypn 提取码: 6ypn 

最新文章

随机文章