使用 Python Turtle 制作贪吃蛇游戏
贪吃蛇游戏是一款于 1976 年由格雷姆林工业(Gremlin Industries)开发,并由世嘉游戏(SEGA)发行的街机迷宫游戏。这款游戏曾经登上多款诺基亚黑白机,对上世纪的玩家来说颇有怀旧感。
贪吃蛇的玩法
玩家在贪吃蛇游戏中使用方向键操作贪吃蛇前进,尽可能收集食物取得高分。贪吃蛇在获取食物后,身体长度会进一步加长,而当玩家不小心撞向墙壁或自己时,游戏便结束。
对 Python 初学者而言,玩法逻辑较为简单的贪吃蛇游戏正适合用来练习 Turtle 框架,而这款以 Python 为核心的游戏将会使用以下三个库:
Turtle - 用于在虚拟画布中绘制图形
Time - 计算游戏中的用时
Random - 在 Python 中生成随机数字,对应随机出现的食物
这篇教程将使用 Lightly 在线编写 Python 代码,无需下载任何应用或安装环境依赖即可在浏览器中编程。
第一步:导入模块
在开始其他编写其他代码前,我们需要使用 import
代码分别导入 turtle、time 及 random 等模块。由于这些模块都已预安装在 Python 中,我们只需在代码中导入即可。若模块缺失,你也可以在 Lightly 中使用 Quick Fix 进行快速安装。
第二步:设置游戏界面
完成模块导入后,我们需要绘制游戏窗口、蛇头及食物等游戏内容,同时也需要在顶部显示游戏得分。
# 绘制窗口
wn = turtle.Screen()
wn.title("Snake Game")
wn.bgcolor("blue")
# 用户可以自行调整窗口的长度与宽度
wn.setup(width=600, height=600)
wn.tracer(0)# 蛇头
head = turtle.Turtle()
head.shape("square")
head.color("white")
head.penup()
head.goto(0, 0)
head.direction = "Stop"# 游戏中的食物
food = turtle.Turtle()
colors = random.choice(['red', 'green', 'black'])
shapes = random.choice(['square', 'triangle', 'circle'])
food.speed(0)
food.shape(shapes)
food.color(colors)
food.penup()
food.goto(0, 100)pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
pen.write("得分 : 0 最高得分 : 0", align="center",font=("candara", 24, "bold"))
代码效果:
第三步:监听按键
添加物体后还需要监听按键,才能通过按键控制蛇的动作。在这个游戏中,我们使用 WASD 四键分别控制上下左右移动。
# 设定按键方向def group():if head.direction != "down":head.direction = "up"def godown():if head.direction != "up":head.direction = "down"def goleft():if head.direction != "right":head.direction = "left"def goright():if head.direction != "left":head.direction = "right"def move():if head.direction == "up":y = head.ycor()head.sety(y+20)if head.direction == "down":y = head.ycor()head.sety(y-20)if head.direction == "left":x = head.xcor()head.setx(x-20)if head.direction == "right":x = head.xcor()head.setx(x+20)wn.listen()
wn.onkeypress(group, "w")
wn.onkeypress(godown, "s")
wn.onkeypress(goleft, "a")
wn.onkeypress(goright, "d")
第四步:完善游戏机制
我们现在已经可以通过键盘按键控制贪吃蛇移动,但我们还需要进一步添加游戏机制,让游戏变得更完善。例如:改变蛇身的长度和颜色、贪吃蛇吃下食物后计分、检查蛇头碰撞情况、计分并保存最高分等。
游戏最终的效果:
【查看完整代码】https://074658e7fa-share.lightly.teamcode.com
以上代码可在浏览器中直接打开,相关教程可查看:
如何打开并编辑他人用 Lightly 分享的项目?
今天的 Python 贪吃蛇教程就到这里,欢迎你在评论区留言提出疑问和建议,也欢迎你查看 TeamCode 的一些往期文章。
怎么看待 Python(PyScript) 可以做浏览器前端开发语言?
Python 教程:从 Python 爬虫到数据分析
学习 Python 爬虫,手把手通过 Python 入门爬取网页信息
使用 Python Turtle 制作贪吃蛇游戏相关推荐
- 使用Python语言制作贪吃蛇游戏,并制作成为exe可执行文件
本项目为贪吃蛇游戏,上下左右控制蛇的行走路径,并将游戏打包为exe文件,可供其他没有python环境和代码的电脑 Play 游戏! 目录 一.项目成果 二.项目架构 三.项目代码 四.环境搭建 五.矢 ...
- python趣味编程-贪吃蛇游戏
在上一期我们用Python实现了一个扫雷游戏的游戏,这一期我们继续使用Python实现一个简单的游戏,让我们开始今天的旅程吧~ 在Python中使用Turtle的贪吃蛇游戏免费源代码 介绍 这 在py ...
- python写一个游戏多少代码-使用Python写一个贪吃蛇游戏实例代码
我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中. 特殊食物: 1.绿色:普通,吃了增加体型 2.红色:吃了减少体型 3.金色:吃了回到 ...
- python游戏脚本实例-使用Python写一个贪吃蛇游戏实例代码
我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中. 特殊食物: 1.绿色:普通,吃了增加体型 2.红色:吃了减少体型 3.金色:吃了回到 ...
- Love2D游戏引擎制作贪吃蛇游戏
预览游戏 love2d游戏引擎重要函数 详情: love.load:当游戏开始时被调用且仅调用一次 love.draw:回调函数,每帧更新一次游戏画面 love.update:回调函数,每帧更新一次游 ...
- 如何用html做一个贪吃蛇,如何用HTML5制作贪吃蛇游戏
如何用HTML5制作贪吃蛇游戏 发布时间:2020-07-09 15:09:59 来源:亿速云 阅读:122 作者:Leah 如何用HTML5制作贪吃蛇游戏?很多新手对此不是很清楚,为了帮助大家解决这 ...
- 手把手教你使用 Python 制作贪吃蛇游戏
贪吃蛇游戏是有史以来最受欢迎的街机游戏之一.在这个游戏中,玩家的主要目标是在不撞墙或不撞墙的情况下抓住最大数量的水果.在学习 Python 或 Pygame 时,可以将创建蛇游戏视为一项挑战.这是每个 ...
- python制作贪吃蛇游戏下载_自动玩贪吃蛇,满屏的蛇影当然由python制作AI贪吃蛇!...
image 前提:本文实现AI贪吃蛇自行对战,加上人机对战,文章末尾附上源代码以及各位大佬的链接,还有一些实现步骤,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什 ...
- 手把手教你使用 Python 制作贪吃蛇游戏,才发现原来制作起来很简单ǃ
贪吃蛇游戏是有史以来最受欢迎的街机游戏之一.在这个游戏中,玩家的主要目标是在不撞墙或不撞墙的情况下抓住最大数量的水果.在学习 Python 或 Pygame 时,可以将创建蛇游戏视为一项挑战.这是每个 ...
最新文章
- ArcGIS的许可文件问题
- pandas基于dataframe字符串数据列不包含特定字符串来筛选dataframe中的数据行(rows where values do not contain substring)
- 京东2017校招前端主观题汇总
- vue 外卖app(3) 引入阿里图标
- jsp判断字符串相等_最长回文字符串三种解法
- 在SAP HANA Express Edition里创建数据库表
- excel if函数 android,Excel函数公式:多条件判断你还在用If函数来实现,那就真的Out了...
- mysql创建数据库时使用sql/wordbench使主键(primary key)自增
- 康奈尔机器人的肌肉是爆米花做的,果然很有爆发力 | ICRA 2018
- 我将其名称作为字符串时如何执行JavaScript函数
- node + express + sockio 在线聊天室
- What?什么是区块链?你不知道就太low了
- JM8.6之erc_api.c文件初探
- 病房呼叫系统数电设计(含报告)
- GoodERP交付手册:CRM模块交付
- unity游戏模型获取- AssertStudio(原GuiStudio)(以第二银河为例)
- a标签在IE浏览器进行download下载,出现中文乱码 - 戴向天
- [OpenCV实战]39 在OpenCV中使用ArUco标记的增强现实
- 提高SDN控制器拓扑发现性能
- 重复文件太多,该怎样快速清理?
热门文章
- 模拟电路设计(37)---集成化开关电源变换器
- php人才系统 转让,PHP云人才系统 phpyun v3.2 正式版
- 解决kaldi报错:fix_data_dir.sh: no utterances remained: not proceeding further.(亲测有效)
- MySQL使用WHERE子句设置查询条件
- 家里的WiFi连不上?我们可以自行修复么?
- Android “.nomedia“ 文件的使用方法和原理
- vue下载表单文件流功能实现
- 蓝桥杯算法训练 无聊的逗(状态压缩搜索)
- 算法导论 — 思考题8-4 水壶
- 小区地下车库怎么进出,怎么用导航找自己停车的位置