知行编程网知行编程网  2022-04-07 01:00 知行编程网 隐藏边栏 |   抢沙发  49 
文章评分 0 次,平均分 0.0


今天玩点别的吧
都说 Python 除了生孩子
什么都能干


用Python 写一个迷你小游戏


咱们今天
就用 Python 写个小游戏
贪吃蛇

用Python 写一个迷你小游戏


想必大家都玩过这玩意
有没有想过
你自己来实现一个这样的游戏呢

那么接下来就是
学习 python 的正确姿势
用Python 写一个迷你小游戏

想要用 Python 写一个小游戏
就不得不知道 pygame 这个库了


这个库是在 sdl 之上构建的
可以使用到很多 GUI、渲染画布等

废话不多说
我们开始

首先我们得有个窗口
通过 pygame 的初始化就
可以使用它提供给我们的工具了

用Python 写一个迷你小游戏
既然有东西可用了
来设置一下游戏名称吧

想了想
就叫做
《帅气的python》

用Python 写一个迷你小游戏


恩,很符合小帅b的气质
用Python 写一个迷你小游戏



通过 set_model 方法
可以设置窗口的大小
比如:
用Python 写一个迷你小游戏
那么这时候得到的窗口就是这样

用Python 写一个迷你小游戏

把这张图点开,居然发现了一张帅脸
窗口有了
咱们把蛇搞上去

背景我们就默认黑色吧
所以蛇的颜色应该是白色
这样才显得比较突出

通过 pygame 的 rect 方法
可以在画布上画矩形
那么一开始
我们的蛇应该是处于中间的

蛇的长度就给 4 个格子吧
这里我们一个格子的宽高设置为 10

用Python 写一个迷你小游戏


现在应该是这个样子

用Python 写一个迷你小游戏

蛇有了
就差食物了

一样的道理
用Python 写一个迷你小游戏
现在就成这样了

用Python 写一个迷你小游戏


还整的有模有样的

用Python 写一个迷你小游戏

不过这食物吧
随机的才对
而且我们刚写的代码有点糙
捣腾捣腾

用Python 写一个迷你小游戏

这里把食物的位置随机了一下
这样每次一运行就会随机显示了

用Python 写一个迷你小游戏



用Python 写一个迷你小游戏


好了
现在蛇也有了
食物也有了

接下来就让蛇的身体
扭!起!来!

用Python 写一个迷你小游戏

需要监听一下
方向键的事件

通过 pygame 的这个方法
<p style="line-height: 2em;"><span style="font-size: 15px;">pygame.event.get()</span></p>
可以监听事件
比如监听关闭

用Python 写一个迷你小游戏


又比如这样来监听我们的方向键

用Python 写一个迷你小游戏


运行起来

只要你按了方向键

就会被监听到


用Python 写一个迷你小游戏


接着定义一个蛇头的位置

用Python 写一个迷你小游戏

蛇头居中
指引方向

每次触发一个方向键
就让蛇头的位置发生相应的变化
然后更新蛇身的位置
用Python 写一个迷你小游戏

所谓更新蛇身位置
主要将是将列表中的元素更新一下

添加蛇头的位置
pop掉蛇尾的位置
每次更新
需要渲染一下画布

用Python 写一个迷你小游戏


运行一下就是这样的

用Python 写一个迷你小游戏



我把它扭起来了

我这该死的手速
差点暴露了什么

用Python 写一个迷你小游戏
刚刚的代码是不是很多重复
抽成一个方法吧

用Python 写一个迷你小游戏


蛇也有了
也会扭了
食物也有了

接下来就让它去吃啊
怎么吃呢

吃一堑长一智
判断下呗
只要头碰到了食物
就算吃到了
给蛇的身体加一格

用Python 写一个迷你小游戏


这里只要发现头的位置
和食物的位置相同
就说明吃到了


此时列表的数据就不 pop 了
并且食物的位置重新随机生成
那么现在每次重新渲染的时候
食物的位置就是随机的了
运行起来

用Python 写一个迷你小游戏


nice

就是要这样
不过现在
这条蛇好像有外挂似得

撞到南墙都不死的
撞到自己也不死的
闹呢?
你以为你充钱了么?

用Python 写一个迷你小游戏


怎么判断撞到自己了呢
其实就是把列表的数据拿出来比对

第一个元素是蛇头
拿它跟其它元素比对
相同就代表撞到了

用Python 写一个迷你小游戏


如何判断撞到了墙了呢
通过蛇头的位置
只要不超过 [500, 500] 就没事吧


也就是说
只要蛇头都在画布之内
就行

用Python 写一个迷你小游戏


这里就直接退出了

用Python 写一个迷你小游戏


效果就是这样
撞到就直接拜拜

用Python 写一个迷你小游戏


当然
画布一直频繁的更新
所以可以使用 pygame 的 clock

用Python 写一个迷你小游戏


这样子每秒不会超过 10 帧
这样就不会那么浪费资源了


ok,今天就分享到这里,代码不难,如果需要的话就在后台发送“帅蛇”获取吧。当然更多是提供下思路你还可以进一步优化下代码也可以添加一些功能,比如:添加背景音乐,添加分数统计,把食物换成cxk...自己发挥吧!

后台输入【帅蛇】,获取源码

往期酷玩:
太好玩了!用Python写个弹球游戏2.0
太好玩了,我用Python写了个火影忍者版的连连看



本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享