Python100行-贪吃蛇小游戏
off999 2024-12-11 16:26 16 浏览 0 评论
今天来尝试下用python写一个贪吃小游戏,哈哈哈哈,毕竟贪吃蛇,大家小时候都玩过,但现在却有机会自己实现一个!!!
效果图:
效果图
下面是学习的过程啦!
1.如何画turtle画一个正方形?
其实就是一个点,往右,往下,往左,往上,回到原点..
# 坐标,长度,颜色名称
def square(x, y, size, name):
import turtle
turtle.up()
turtle.goto(x, y)
turtle.down()
turtle.color(name)
turtle.begin_fill()
for count in range(4):
turtle.forward(size)
turtle.left(90)
turtle.end_fill()
然后我们就可以画出一个正方啦。
2.画出多个连续的正方形,来模拟蛇的身子。
蛇的身子其实就是一个一个方块列表,所以我们来尝试画多个方块。
snake = [[0,0],[0,10]]
for body in snake:
square(body[0], body[1], 10, 'black')
3.那我们如何模拟蛇的移动呢?
3.1蛇需要可以朝四个方向移动。
x,y代表坐标
- (10,0):代表向右移动
- (-10,0):代表向左移动
- (0,10):代表向上移动
- (0,-10):代表向下移动
aim = [0, 10]
# 设置方向
def change_direction(x, y):
aim[0] = x
aim[1] = y
3.2有了移动方向,我们就可以开始写移动的逻辑啦
思路是这样的:我们把列表看成一条蛇,这条蛇的右边在右边,尾部在左边!
- 移动时,我们消除尾部的一个方块。
- 根据方向,在头部添加一个方块。
- 然后在刷新动画。
- 就可以完成蛇移动的效果啦。
下面是代码
import copy
def snake_move():
head = copy.deepcopy(snake[-1]) # 深度拷贝一份头部的方块
head = [head[0] + aim[0], head[1] + aim[1]] # 头部的方块,朝一方向移动
snake.append(head) # 蛇的头部添加这个新的方块
snake.pop(0) # 蛇的尾部,去除一个方块
turtle.clear()# 清除方块
# 重新画一遍蛇的整个身子
for body in snake:
square(body[0], body[1], 10, 'black')
turtle.update()# 更新动画
turtle.ontimer(snake_move, 300)
turtle.hideturtle()
turtle.tracer(False)
3.3现在蛇就可以移动啦,但是我们还不能控制它的方向!
我们来监听键盘的按键,用上下左右来控制蛇的移动!
turtle.listen()
turtle.onkey(lambda: change_direction(10, 0), "Right") # 右
turtle.onkey(lambda: change_direction(-10, 0), "Left") # 左
turtle.onkey(lambda: change_direction(0, 10), "Up") # 上
turtle.onkey(lambda: change_direction(0, -10), "Down") # 下
4.设置随机产生食物
首先一个食物被吃掉时,我们就在一个指定的区间里,随机产生食物。
if head == food: # 如果蛇头吃到了食物,我们就不删除蛇的尾巴最后一个方块
print("snake的长度", len(snake))
food[0] = randrange(-15, 15)*10 # 设置食物的区间,必须是10的倍数
food[1] = randrange(-15, 15)*10
else:
snake.pop(0) # 蛇的尾部,去除一个方块
5.设置边界条件
当蛇碰到自己或者当蛇碰到边界的时候,我们就算输啦!!
# 先给屏幕设定一个初始值500*500
turtle.setup(500, 500)
# 设置边界条件判断
def inside(head):
return -250 < head[0] < 250 and -250 < head[1] < 250
# 在蛇移动的过程中进行判断,如果发生碰撞我们就把头部标记为红色,结束游戏。
if head in snake or not inside(head):
print(head)
square(head[0], head[1], 10, 'red')
turtle.update()
6.结尾
这样我们就我完成了一个简单的贪吃蛇的游戏啦,我们还可以调成速度,记录分数,还有更多的功能,大家可以自行添加。
相关推荐
- 手机设置路由器上网(手机如何上网设置路由器)
-
首先,打开手机浏览器,输入路由器的IP地址和密码,进入路由器设置页面。进入后会自动进入【设置向导】,点击设置向导【下一步】。在上网页面,选择【PPPoE(ADSL虚拟拨号)】,点击下一步。点击后,在新...
- office 2016激活工具(office professional 2016 激活工具)
-
word2016激活密钥有两种类型:永久激活码和KMS期限激活密钥。其中,永久激活密钥可以使用批量授权版永久激活密钥进行激活,如所示;而KMS期限激活密钥需要使用KMS客户端密钥进行激活,如所示。另外...
- 苹果zip文件怎么安装(ios安装zip)
-
ZIP文件一般是用于存储多个文件或文件夹的压缩包,因此在安装ZIP文件时需要解压缩文件并提取出其中的内容。具体而言,您可以按照以下步骤来安装ZIP文件:1.下载ZIP文件:从互联网上下载需要安装的Z...
- 如何安装win7双系统(怎么安装win7和win10双系统)
-
1.要安装双系统,首先将第二个系统的分区设置为系统磁盘。在您的电脑上右击,选择管理选项。2.在计算机管理窗口中,选择磁盘管理,找到剩余空间较大的分区,然后右击并选择“压缩卷”。3.输入压缩空间量,其大...
- u盘可以读取但不能写入(u盘只能读取不能写入是什么意思)
-
原因可能有如下几种情况1、U盘不被电脑windows系统所驱动。解决办法:在插上U盘之后,右键点击我的电脑===>属性硬件===>设备管理器==>通用串行总线控制器的位置会有个感叹号...
- 装机系统在哪里下载比较好(装系统去哪里装比较好)
-
对于典型的PC,云下载或本地重新安装都可以正常工作。假设您有一个快速的互联网连接,没有苛刻的下载限制,并且您的PC似乎没有处于损坏状态,那么您应该在合理的时间内让您的PC恢复到新的状态。但是...
- u盘装机制作软件哪个比较好(u盘装机软件推荐)
-
windows微软官方原版系统加上微软的U盘系统制作工具。MediaCreationTool来制作成U盘系统引导盘后来安装系统最纯净安全了。微peu盘驱动好。大白菜老毛桃什么的都用过,都是可以用的,...
- windows7家庭版密钥激活码(win7家庭版激活密钥最新)
-
首先,在桌面上右键点击“计算机”,然后选择“属性”,在窗口底部找到“激活Windows”选项,点击它。然后,选择“在线激活”,输入你的Windows7激活密钥。如果你没有激活密钥,你可以购买一个或者...
- win10好还是win7旗舰版好(windows10好还是windows7旗舰版好)
-
对于个人用户而言,我们更建议购买电脑装Windows10系统。以下是一些原因:兼容性更好:Windows10是微软最新的操作系统,支持大量的最新硬件和驱动程序,高度兼容大多数软件和设备。相比之下,...
-
- 2010office激活密钥25个字符
-
步骤/方式1officeprofessionalplus2010:(office专业版)6QFdx-pYH2G-ppYFd-C7RJM-BBKQ8Bdd3G-xM7FB-Bd2HM-YK63V-VQFdKVYBBJ-TRJpB-QFQ...
-
2025-11-07 01:03 off999
- 刷机(刷机软件)
-
答:用下步骤可把电脑刷机:1、制作启动U盘,如大白菜U盘启动盘,然后将下载的系统iso文件直接复制到U盘的GHO目录下。2、在需要刷机的台式电脑上插入U盘,重启后不停按F12、F11、Esc等快捷键打...
- u盘装linux系统教程(u盘安装linux操作系统安装教程图解)
-
以制作Ubuntulinux系统为例:1、首先要下载Ubuntu系统,在搜索Ubuntu,打开Ubuntu官网。2、然后在下载那里,选择桌面版。3、选择好版本之后,点击下载。4、随后跳转到一个网页,...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
