教你用 python 写一个小游戏 如何用python做一个简单的小游戏
off999 2024-12-28 14:43 13 浏览 0 评论
今天玩点别的吧都说 Python 除了生孩子什么都能干
咱们今天就用 Python 写个小游戏贪吃蛇
想必大家都玩过这玩意
有没有想过你自己来实现一个这样的游戏呢
那么接下来就是学习 python 的正确姿势
想要用 Python 写一个小游戏就不得不知道 pygame 这个库了
这个库是在 sdl 之上构建的
可以使用到很多 GUI、渲染画布等
废话不多说
我们开始
首先我们得有个窗口通过 pygame 的初始化就可以使用它提供给我们的工具了
既然有东西可用了来设置一下游戏名称吧
想了想就叫做《帅气的python》
恩,很符合小帅b的气质
通过 set_model 方法可以设置窗口的大小
比如:
那么这时候得到的窗口就是这样
把这张图点开,居然发现了一张帅脸
窗口有了
咱们把蛇搞上去
背景我们就默认黑色吧所以蛇的颜色应该是白色
这样才显得比较凸突出
通过 pygame 的 rect 方法
可以在画布上画矩形
那么一开始我们的蛇应该是处于中间的
蛇的长度就给 4 个格子吧
这里我们一个格子的宽高设置为 10
现在应该是这个样子
蛇有了
就差食物了
一样的道理
现在就成这样了
还整的有模有样的
不过这食物吧是随机的才对
而且我们刚写的代码有点糙捣腾捣腾
这里把食物的位置随机了一下这样每次一运行就会随机显示了
好了
现在蛇也有了食物也有了
接下来就让蛇的身体扭!起!来!
需要监听一下
方向键的事件
通过 pygame 的这个方法
pygame.event.get()
可以监听事件
比如监听关闭
又比如这样来监听我们的方向键
运行起来
只要你按了方向键
就会被监听到
接着定义一个蛇头的位置
蛇头居中指引方向
每次触发一个方向键就让蛇头的位置发生相应的变化然后更新蛇身的位置
所谓更新蛇身位置
主要将是将列表中的元素更新一下
添加蛇头的位置pop掉蛇尾的位置
每次更新
需要渲染一下画布
运行一下就是这样的
看
我把它扭起来了
哎我这该死的手速差点暴露了什么
刚刚的代码是不是很多重复抽成一个方法吧
蛇也有了也会扭了
食物也有了
接下来就让它去吃啊怎么吃呢
吃一堑长一智
判断下呗只要头碰到了食物就算吃到了给蛇的身体加一格
这里只要发现头的位置
和食物的位置相同就说明吃到了
此时列表的数据就不 pop 了并且食物的位置重新随机生成
那么现在每次重新渲染的时候食物的位置就是随机的了
运行起来
nice
就是要这样
不过现在这条蛇好像有外挂似得
撞到南墙都不死的
撞到自己也不死的
闹呢?你以为你充钱了么?
怎么判断撞到自己了呢其实就是把列表的数据拿出来比对
第一个元素是蛇头拿它跟其它元素比对
相同就代表撞到了
如何判断撞到了墙了呢
通过蛇头的位置只要不超过 [500, 500] 就没事吧
也就是说
只要蛇头都在画布之内就行
这里就直接退出了
效果就是这样撞到就直接拜拜
当然
画布一直频繁的更新所以可以使用 pygame 的 clock
这样子每秒不会超过 10 帧这样就不会那么浪费资源了
ok今天就分享到这里代码不难如果需要的话就在后台发送“帅蛇”获取吧
当然更多是提供下思路你还可以进一步优化下代码
也可以添加一些功能
比如添加背景音乐
添加分数统计
把食物换成cxk...
自己发挥吧
那么我们下回见peace
关注我
学习 Python 没烦恼
相关推荐
- 还不会deepseek部署到本地?这篇教程手把手教会你
-
一、为什么要把DeepSeek部署到本地?新手必看的前置知识近期很多读者在后台询问AI工具本地部署的问题,今天以国产优质模型DeepSeek为例,手把手教你实现本地化部署。本地部署有三大优势:数据隐私...
- 推荐个超实用的Python标准库pathlib,玩转路径操作
-
pathlib学习Python时,尤其是在进行文件操作和数据处理时,经常会处理路径问题。最常用和常见的是os.path模块,它将路径当做字符串进行处理,如果使用不当可能导致难以察觉的错误,而且...
- python中文件读写操作最佳实践——使用 os.path 进行路径操作
-
在Python中处理文件路径时,使用os.path模块比直接使用字符串拼接更加安全、可靠且跨平台。下面我将详细解释为什么以及如何使用os.path进行路径操作。为什么不应该使用字符串拼接?#不推荐的...
- Python如何获取当前文件所在目录的完整路径
-
在编程的过程中,我们常常会遇到需要获取当前文件所在目录完整路径的需求。那具体该怎么做呢?这是在众多开发者群体中备受关注的一个问题,就像在问答平台上“/questions/3430372/how-d...
- python编程之神经网络篇(python的神经网络编程)
-
#头条创作挑战赛#神经网络发展到今天大致经历了2次兴起和2次衰落,1943年心理学家McCulloch(麦卡洛克)和数学家Pitts(皮茨)参考生物神经系统的工作原理,首次提出建立了MP神经元模型。其...
- 详解Python整数类型的按位运算(在python中整数)
-
在Python编程中,按位运算是直接对整数的二进制位进行操作的底层运算,虽然不如逻辑运算常见,但在处理位掩码、状态标志、底层算法优化等场景中至关重要。本文将从基础概念到高级应用,全面解析Python整...
- 强化学习的改进只是「噪音」?最新预警:冷静看待推理模型进展
-
机器之心报道编辑:蛋酱、+0「推理」已成为语言模型的下一个主要前沿领域,近期学术界和工业界都取得了突飞猛进的进展。在探索的过程中,一个核心的议题是:对于模型推理性能的提升来说,什么有效?什么无效?De...
- 了解python3新特性-3(python3介绍)
-
以下是Python3的其他一些特性:改进了asyncio.run():Python3.7中对asyncio.run()函数进行了改进,可以方便地处理异步任务异常。新增了typing....
- python GIL全局解释器锁原理、功能及应用示例
-
GIL(GlobalInterpreterLock)是Python解释器中的一个机制,它是一把全局锁,用于在同一时间内限制只有一个线程执行Python字节码。以下是GIL的原理、功能以及5个示例:...
- python3-运算符优先级(python语言运算符优先级)
-
#挑战30天在头条写日记#Python运算符优先级以下列出了从最高到最低优先级的所有运算符,相同单元格内的运算符具有相同优先级。运算符均指二元运算,除非特别指出。相同单元格内的运算符从左至右分组...
- 如何在 Python 中使用 Notion API?
-
如何在Python中使用NotionAPI并自动编辑数据库。设置NotionAPI和数据库首先,让我们在Notion板中创建一个完整的页面数据库。在本文中,我使用了一个来自我的一个数据库的真实示...
- 一文了解 Python 的临时文件模块(python tmpfile)
-
Python的Tempfile模块是用于创建临时文件和文件夹的标准库。当我们需要临时存储数据时,可以创建临时文件,这些文件位于单独的目录中,该目录因操作系统而异,并且这些文件的名称是唯一的。在...
- 一文带您精通Python 集合(Set):8个不可不知的技巧及示例
-
在Python中,集合(Set)与列表(List)、字典(Dict)、元组(Tuple)一起构成了基本的数据结构。集合以其独特的无序性和元素唯一性,在处理数据时具有独特的优势。然而,很多人对集合的...
- 数据类型的"变形记":解锁Python数据处理效率的关键钥匙
-
在日常编程中,数据就像流动的河水,而数据类型就是塑造河道的模具。当我们从用户输入、文件读取或网络请求中获取数据时,往往需要像侦探一样验证它们的真实身份,再像魔术师一样将它们转换成需要的形态。这就是数据...
- 大学 Python 程序设计实验报告:基于组合数据类型
-
一、实验目的编写Python程序,实现对简单文本的处理,掌握列表、元组、字典等组合类型的应用。二、实验要求掌握字符串的输入和输出。掌握使用切片的方式访问字符串中的值。掌握常见的字符串内建函数的应用。...
你 发表评论:
欢迎- 一周热门
-
-
python 3.8调用dll - Could not find module 错误的解决方法
-
加密Python源码方案 PyArmor(python项目源码加密)
-
Python3.8如何安装Numpy(python3.6安装numpy)
-
大学生机械制图搜题软件?7个受欢迎的搜题分享了
-
编写一个自动生成双色球号码的 Python 小脚本
-
免费男女身高在线计算器,身高计算公式
-
将python文件打包成exe程序,复制到每台电脑都可以运行
-
Python学习入门教程,字符串函数扩充详解
-
Python数据分析实战-使用replace方法模糊匹配替换某列的值
-
Python进度条显示方案(python2 进度条)
-
- 最近发表
- 标签列表
-
- python计时 (54)
- python安装路径 (54)
- python类型转换 (75)
- python进度条 (54)
- python的for循环 (56)
- python串口编程 (60)
- python写入txt (51)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python qt (52)
- python人脸识别 (54)
- python斐波那契数列 (51)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- centos7安装python (53)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)