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

教你用 python 写一个小游戏 如何用python做一个简单的小游戏

off999 2024-12-28 14:43 18 浏览 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 没烦恼

相关推荐

面试官:来,讲一下枚举类型在开发时中实际应用场景!

一.基本介绍枚举是JDK1.5新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错...

一日一技:11个基本Python技巧和窍门

1.两个数字的交换.x,y=10,20print(x,y)x,y=y,xprint(x,y)输出:102020102.Python字符串取反a="Ge...

Python Enum 技巧,让代码更简洁、更安全、更易维护

如果你是一名Python开发人员,你很可能使用过enum.Enum来创建可读性和可维护性代码。今天发现一个强大的技巧,可以让Enum的境界更进一层,这个技巧不仅能提高可读性,还能以最小的代价增...

Python元组编程指导教程(python元组的概念)

1.元组基础概念1.1什么是元组元组(Tuple)是Python中一种不可变的序列类型,用于存储多个有序的元素。元组与列表(list)类似,但元组一旦创建就不能修改(不可变),这使得元组在某些场景...

你可能不知道的实用 Python 功能(python有哪些用)

1.超越文件处理的内容管理器大多数开发人员都熟悉使用with语句进行文件操作:withopen('file.txt','r')asfile:co...

Python 2至3.13新特性总结(python 3.10新特性)

以下是Python2到Python3.13的主要新特性总结,按版本分类整理:Python2到Python3的重大变化Python3是一个不向后兼容的版本,主要改进包括:pri...

Python中for循环访问索引值的方法

技术背景在Python编程中,我们经常需要在循环中访问元素的索引值。例如,在处理列表、元组等可迭代对象时,除了要获取元素本身,还需要知道元素的位置。Python提供了多种方式来实现这一需求,下面将详细...

Python enumerate核心应用解析:索引遍历的高效实践方案

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。根据GitHub代码分析统计,使用enumerate替代range(len())写法可减少38%的索引错误概率。本文通过12个生产...

Python入门到脱坑经典案例—列表去重

列表去重是Python编程中常见的操作,下面我将介绍多种实现列表去重的方法,从基础到进阶,帮助初学者全面掌握这一技能。方法一:使用集合(set)去重(最简单)pythondefremove_dupl...

Python枚举类工程实践:常量管理的标准化解决方案

本文通过7个生产案例,系统解析枚举类在工程实践中的应用,覆盖状态管理、配置选项、错误代码等场景,适用于Web服务开发、自动化测试及系统集成领域。一、基础概念与语法演进1.1传统常量与枚举类对比#传...

让Python枚举更强大!教你玩转Enum扩展

为什么你需要关注Enum?在日常开发中,你是否经常遇到这样的代码?ifstatus==1:print("开始处理")elifstatus==2:pri...

Python枚举(Enum)技巧,你值得了解

枚举(Enum)提供了更清晰、结构化的方式来定义常量。通过为枚举添加行为、自动分配值和存储额外数据,可以提升代码的可读性、可维护性,并与数据库结合使用时,使用字符串代替数字能简化调试和查询。Pytho...

78行Python代码帮你复现微信撤回消息!

来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。[导读]Python曾经对我说:"时日不多,赶紧用Python"。于是看...

登录人人都是产品经理即可获得以下权益

文章介绍如何利用Cursor自动开发Playwright网页自动化脚本,实现从选题、写文、生图的全流程自动化,并将其打包成API供工作流调用,提高工作效率。虽然我前面文章介绍了很多AI工作流,但它们...

Python常用小知识-第二弹(python常用方法总结)

一、Python中使用JsonPath提取字典中的值JsonPath是解析Json字符串用的,如果有一个多层嵌套的复杂字典,想要根据key和下标来批量提取value,这是比较困难的,使用jsonpat...

取消回复欢迎 发表评论: