通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂。今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享给大家!

我们先来看一下游戏的效果图:

一般来说一个贪吃蛇游戏需要考虑下面几点:

首先:画出food和snack

接着:控制snack上下左右的移动

然后:计算snack和food的碰撞,然后snack变长

最后:当snack碰到四周的墙壁或者蛇头碰到身体,则游戏结束

看起来需要写的东西还蛮多的,怎么就能60几行代码搞定呢了!大家还记不记得Python有内置的海龟库turtle.这个库可以画出很多好玩有趣的图案和小动画。没错,这个代码就是用turtle这个库完成了!源码非常简单,我一一给大家说一下:

第一步

引用turtle库,里面有一堆简单好玩的函数,方便我们来制作动画的

引用random库,主要是为了让食物随机出现

引用freegames库,这个库把一些元素封装好了,比如方形,二维向量vector.这个二维向量非常重要,因为snack的move,坐标的变换,上升下降等等,我们只需要简单的调用vector里面封装函数就可以搞定。当然这是第三方的库pip install 一下即可!其实看它的源码也是用的turtle.

接着我们初始化出food和snack。注意为啥snack要用list,这个地方非常巧妙我后面会讲到

aim是snack行走的方向Vector(0,10),第一个数字表示x轴,第二个数字表示y轴。10表示向上移动10,如果是-10表示向下移动10

change函数主要是来改变方向的

inside函数是用来判断snack有没有碰到墙壁

第二步

这部分的代码主要是处理动态交互的过程:

1).snack分head和body:

当没有碰到食物的时候,snack只有一个矩形框,既是头也是身体!

所以这里用的snack[-1].copy把head 拷贝一份出来,方便后面的move.

2).考虑游戏如果结束:

一种就是判断有无碰到墙体,或者头部碰到了身体!看这里的代码非常简洁用head in snack,就轻松搞定。

接着snack这里列表会把移动过的head放进来,也就是说snack这时有头和身体了(当前坐标和移动后的坐标)。

3).最难的碰到食物如何处理:

考如果snack碰到了food(蛇吃到食物),应该怎么办?食物会去画布上的随机另外一个坐标,snack会变长。

否则snack列表pop(0),也就是只保留移动后的坐标。

非常巧妙的解决了snack身体变成的问题.

4).接着把food画出来,把snack的整体身体和头都画出来

5).为了用动态移动的效果,需要用循环!这里用了一个递归循环调用move函数,并且设置为300ms的延迟

第三步

这里主要是初始化画布,已经绑定一些键盘的方向键,这样好让snack上下左右移动!然后用listen()来监听。

有同学问hideturtle()函数是干吗的,主要是隐藏海龟头,用过turtle的同学就懂的!

这个我目前为止见过的最简单的贪吃蛇的游戏源码,非常牛逼!也非常适合小白上手玩,基本上没有复杂的概念。大家有兴趣可以去看Github上的源码,一定获益匪浅!

python60行绘图程序_不敢相信,60行python代码就写出了贪吃蛇游戏相关推荐

  1. 贪吃蛇python撞墙不死_不敢相信,60行python代码就写出了贪吃蛇游戏

    通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂.今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享 ...

  2. 用200行C语言代码写出一个贪吃蛇——1.0(基本版)

    1.设计思路 总的来说,贪吃蛇这个小游戏涉及到的东西不多,但是对逻辑思维是比较吃基本功的. 贪吃蛇,显示给我们看的有三部分:蛇.食物.地图边界. 我们可以用一个二维数组来标记这些部分: 例如这里我创建 ...

  3. python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码

    有吧友需要PDF的下载站点,好吧,我这边汇总一下 [经验]谈谈怎么找自己想要的资源吧~ http://www.cnblogs.com/dunitian/p/4715482.html PDF Free ...

  4. php调用python绘图程序_如何在matlab中调用python程序

    现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...

  5. 记事本贪吃蛇游戏代码_厉害了,程序员28行代码写贪吃蛇游戏,附源码!

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

  6. python设计贪吃蛇游戏论文_用Python写一个贪吃蛇AI,让程序自己玩游戏

    前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...

  7. python新手程序_推荐:一个适合于Python新手的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

  8. c语言程序员写贪吃蛇代码28,厉害了,程序员28行代码写贪吃蛇游戏,附源码!...

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

  9. 单片机8×8点阵显示简单汉字的程序_干货 | 浅析单片机制作贪吃蛇游戏

    为了让大家更深入地了解底层的原理,在讲解时特意选择了51单片机(而非STM系列),另外16*16点阵由译码器和移位缓存器直接驱动(而非MAX系列芯片),摇杆也利用ADC功能判断方向. 那如何让单片机驱 ...

最新文章

  1. (转)C语言位运算详解
  2. 【c语言】蓝桥杯算法提高 征税程序
  3. IOS delegate 委托 使用 两个View之间传数据
  4. 判断滚动条是否到某个位置,还有滑动的方向,以此来判断什么时候阻止滚动条滚动...
  5. poj2079(一堆点找出最大的三角形)
  6. 小度智能音箱维修点_智能音箱哪个好?小度 小爱 天猫 评测
  7. 【Nginx】判断URL中是否存在某个参数Parameter
  8. js中的showModalDialog的实战应用
  9. 【Linux】一步一步学Linux——make命令(259)
  10. 关于python的垃圾回收机制_Python的垃圾回收机制
  11. 【jQuery学习】—jQuery对象的过滤
  12. JDK+MyEclipse+Tomcat的配置(修改Tomcat 6.x的端口)
  13. 图文并茂带你了解依存句法分析
  14. CentOS安装Nvidia驱动和CUDA
  15. java的dequeue_$.queue() 与 $.dequeue() -- 队列
  16. 51单片机带闹钟c语言程序,51单片机带闹钟可调时间的电子时钟程序设计
  17. C++两个函数可以相互递归吗_设计递归函数竟然这么简单!
  18. 惠普CEO李艾科的“金刚钻儿”
  19. H5+在浏览器中打开相机扫描二维码
  20. 6.Spring Cloud初相识-------Zool路由

热门文章

  1. 战地1服务器性能红色,FPS《战地1》PC性能测试:对显卡要求不高但很吃CPU
  2. linux中文快捷键,Linux系统快捷键最全合集
  3. C++/C代码审查表
  4. MFC资源切换(AFX_MANAGE_STATE)简介
  5. X 射线成像 新型数字技术 —— CMOS 探测器
  6. 如何用纯 CSS 创作一组昂首阔步的圆点
  7. JavaScript数组归并方法reduce
  8. 深入理解 Tomcat(四)Tomcat 类加载器之为何违背双亲委派模型
  9. MyBatis 使用
  10. 阻止具有特定文件扩展名的附件的电子邮件