欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用 python 写一个小游戏

程序员文章站 2024-03-18 13:57:28
...

今天玩点有趣的吧都说 Python 除了生孩子什么都能干
用 python 写一个小游戏

咱们今天就用 Python 写个小游戏贪吃蛇
用 python 写一个小游戏
想必大家都玩过这玩意
有没有想过你自己来实现一个这样的游戏呢
那么接下来就是学习 python 的正确姿势

想要用 Python 写一个小游戏就不得不知道 pygame 这个库了
这个库是在 sdl 之上构建的
可以使用到很多 GUI、渲染画布等
废话不多说
我们开始
首先我们得有个窗口通过 pygame 的初始化就可以使用它提供给我们的工具了
用 python 写一个小游戏
既然有东西可用了来设置一下游戏名称吧
想了想就叫做《帅气的python》
用 python 写一个小游戏
通过 set_model 方法可以设置窗口的大小

比如:
用 python 写一个小游戏
那么这时候得到的窗口就是这样
用 python 写一个小游戏
把这张图点开,居然发现了一张帅脸
窗口有了
咱们把蛇搞上去
背景我们就默认黑色吧所以蛇的颜色应该是白色
这样才显得比较凸突出
通过 pygame 的 rect 方法
可以在画布上画矩形
那么一开始我们的蛇应该是处于中间的
蛇的长度就给 4 个格子吧
这里我们一个格子的宽高设置为 10
用 python 写一个小游戏
现在应该是这个样子
用 python 写一个小游戏
蛇有了
就差食物了
一样的道理
用 python 写一个小游戏
现在就成这样了
用 python 写一个小游戏
还整的有模有样的
用 python 写一个小游戏
不过这食物吧是随机的才对
而且我们刚写的代码有点糙捣腾捣腾
用 python 写一个小游戏
这里把食物的位置随机了一下这样每次一运行就会随机显示了
用 python 写一个小游戏
用 python 写一个小游戏
好了
现在蛇也有了食物也有了
接下来就让蛇的身体扭!起!来!
用 python 写一个小游戏
需要监听一下
方向键的事件
通过 pygame 的这个方法

pygame.event.get()

可以监听事件
比如监听关闭
又比如这样来监听我们的方向键
用 python 写一个小游戏
运行起来
只要你按了方向键
就会被监听到
用 python 写一个小游戏
接着定义一个蛇头的位置
用 python 写一个小游戏
蛇头居中指引方向
每次触发一个方向键就让蛇头的位置发生相应的变化然后更新蛇身的位置
用 python 写一个小游戏
所谓更新蛇身位置
主要将是将列表中的元素更新一下
添加蛇头的位置pop掉蛇尾的位置

每次更新
需要渲染一下画布
用 python 写一个小游戏
运行一下就是这样的
用 python 写一个小游戏

我把它扭起来了
哎我这该死的手速差点暴露了什么
用 python 写一个小游戏
刚刚的代码是不是很多重复抽成一个方法吧
用 python 写一个小游戏
用 python 写一个小游戏
蛇也有了也会扭了
食物也有了
接下来就让它去吃啊怎么吃呢
吃一堑长一智
判断下呗只要头碰到了食物就算吃到了给蛇的身体加一格
用 python 写一个小游戏
这里只要发现头的位置

和食物的位置相同就说明吃到了
此时列表的数据就不 pop 了并且食物的位置重新随机生成
那么现在每次重新渲染的时候食物的位置就是随机的了
运行起来
就是要这样
不过现在这条蛇好像有外挂似得
撞到南墙都不死的
撞到自己也不死的
闹呢?你以为你充钱了么?
用 python 写一个小游戏
怎么判断撞到自己了呢其实就是把列表的数据拿出来比对
第一个元素是蛇头拿它跟其它元素比对
相同就代表撞到了
用 python 写一个小游戏
如何判断撞到了墙了呢
通过蛇头的位置只要不超过 [500, 500] 就没事吧

也就是说
只要蛇头都在画布之内就行
用 python 写一个小游戏
这里就直接退出了
用 python 写一个小游戏
用 python 写一个小游戏
效果就是这样撞到就直接拜拜
当然
画布一直频繁的更新所以可以使用 pygame 的 clock
用 python 写一个小游戏
用 python 写一个小游戏
这样子每秒不会超过 10 帧这样就不会那么浪费资源了
ok今天就分享到这里代码不难
当然更多是提供下思路你还可以进一步优化下代码

也可以添加一些功能

比如添加背景音乐
添加分数统计
把食物换成cxk…
自己发挥吧

最后分享一些私藏的资料
用 python 写一个小游戏
用 python 写一个小游戏
链接:https://pan.baidu.com/s/1kh6OpSCDtcIfA0DOzcITHA

提取码:vrjp

链接容易过期,如果失效了,来这里领取吧,建这个群的初衷也是为了和志同道合的朋友一起学习,有小白也有大神,欢迎你的加入
用 python 写一个小游戏