百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

教你用 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程序,实现对简单文本的处理,掌握列表、元组、字典等组合类型的应用。二、实验要求掌握字符串的输入和输出。掌握使用切片的方式访问字符串中的值。掌握常见的字符串内建函数的应用。...

取消回复欢迎 发表评论: