当前位置:   article > 正文

用 python 写一个小游戏

python小游戏csdn

点击“简说Python”,选择“星标公众号”

福利干货,第一时间送达!

640?wx_fmt=jpeg

@图片自制by unsplash


本文授权转载自学习Python的正确姿势

禁止二次转载

阅读文本大概需要 4 分钟。
今天玩点别的吧
都说 Python 除了生孩子
什么都能干


640?wx_fmt=jpeg


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

640?wx_fmt=gif


想必大家都玩过这玩意


有没有想过
你自己来实现一个这样的游戏呢


那么接下来就是
学习 python 的正确姿势

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

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

废话不多说
我们开始

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

640?wx_fmt=png

既然有东西可用了
来设置一下游戏名称吧

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

640?wx_fmt=png


恩,很符合小帅b的气质

640?wx_fmt=jpeg

通过 set_model 方法
可以设置窗口的大小

比如:

640?wx_fmt=png

那么这时候得到的窗口就是这样

640?wx_fmt=png

把这张图点开,居然发现了一张帅脸

窗口有了
咱们把蛇搞上去

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

通过 pygame 的 rect 方法
可以在画布上画矩形

那么一开始
我们的蛇应该是处于中间的

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

640?wx_fmt=png


现在应该是这个样子

640?wx_fmt=png


蛇有了
就差食物了

一样的道理

640?wx_fmt=png


现在就成这样了

640?wx_fmt=png


还整的有模有样的

640?wx_fmt=jpeg

不过这食物吧
随机 的才对

而且我们刚写的代码有点糙
捣腾捣腾

640?wx_fmt=png

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

640?wx_fmt=png



640?wx_fmt=png


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

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


640?wx_fmt=gif


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

通过 pygame 的这个方法
 
 

pygame.event.get()

可以监听事件

比如监听关闭


640?wx_fmt=png


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

640?wx_fmt=png


运行起来

只要你按了方向键

就会被监听到



640?wx_fmt=png



接着定义一个蛇头的位置


640?wx_fmt=png



蛇头居中
指引方向

每次触发一个方向键
就让蛇头的位置发生相应的变化
然后更新蛇身的位置

640?wx_fmt=png

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

添加蛇头的位置
pop掉蛇尾的位置

每次更新
需要渲染一下画布


640?wx_fmt=png


运行一下就是这样的

640?wx_fmt=gif



我把它扭起来了

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


640?wx_fmt=jpeg
刚刚的代码是不是很多重复
抽成一个方法吧

640?wx_fmt=png


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

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

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


640?wx_fmt=png


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

此时列表的数据就不 pop 了
并且食物的位置重新随机生成

那么现在每次重新渲染的时候
食物的位置就是随机的了

运行起来

640?wx_fmt=gif


nice

就是要这样

不过现在
这条蛇好像有外挂似得

撞到南墙都不死的
撞到自己也不死的

闹呢?
你以为你充钱了么?


640?wx_fmt=png


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


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

640?wx_fmt=png


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

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

640?wx_fmt=png


这里就直接退出了

640?wx_fmt=png


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

640?wx_fmt=gif


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

640?wx_fmt=png

640?wx_fmt=png


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


ok
今天就分享到这里
代码不难
如果需要的话
就在后台发送“帅蛇”获取吧


当然
更多是提供下思路
你还可以进一步
优化下代码


也可以添加一些功能


比如
添加背景音乐
添加分数统计
把食物换成cxk
...


自己发挥吧

那么我们下回见


——本文完——



640?wx_fmt=png
今日留言主题:
说说你读完本文感受?
或者一句激励自己的话?
(字数不少于15字)


说明:最近每日留言赠书暂停一段时间
不过,留言打卡30天进福利群
还在继续,等你~


2小时快速掌握Python基础知识要点

完整Python基础知识要点


640?wx_fmt=jpeg
学Python | 聊赚钱
 
    
640?wx_fmt=png
给个[在看]
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/1002481
推荐阅读
相关标签
  

闽ICP备14008679号