python中的画布背景设置_用 python 写一个小游戏

今天玩点别的吧

都说 Python 除了生孩子

什么都能干

cbe53df034f760b0b0f56ed5a3780fa4.png

咱们今天

就用 Python 写个小游戏

贪吃蛇

a1e65e27ade654340d1b85fd117908be.gif

想必大家都玩过这玩意

有没有想过

你自己来实现一个这样的游戏呢

那么接下来就是

学习 python 的正确姿势

02799f639edac86a77694c88ada1afec.png

想要用 Python 写一个小游戏

就不得不知道 pygame 这个库了

这个库是在 sdl 之上构建的

可以使用到很多 GUI、渲染画布等

废话不多说

我们开始

首先我们得有个窗口

通过 pygame 的初始化就

可以使用它提供给我们的工具了

21dabe89fc0050c2ce24805576cb27ca.png

既然有东西可用了

来设置一下游戏名称吧

想了想

就叫做

《帅气的python》

dd502c895731458dd745195ba2eacb3f.png

恩,很符合小帅b的气质

fc453cdfaadc39f94fef08b734b8a873.png

通过 set_model 方法

可以设置窗口的大小

比如:

64f4f9fd98f663544522b11397dbd154.png

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

2a26a0b69f4cec36c2e288585576d9ed.png

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

窗口有了

咱们把蛇搞上去

背景我们就默认黑色吧

所以蛇的颜色应该是白色

这样才显得比较凸突出

通过 pygame 的 rect 方法

可以在画布上画矩形

那么一开始

我们的蛇应该是处于中间的

蛇的长度就给 4 个格子吧

这里我们一个格子的宽高设置为 10

d7a90499d9143ad22a1a8384b02e9812.png

现在应该是这个样子

024ae5d8ee7cdb2331914e9ec31bbfd0.png

蛇有了

就差食物了

一样的道理

ca31c4274657ce728795a7b8622f6fa0.png

现在就成这样了

6aaa6370e9c06c36e721683bf141d34e.png

还整的有模有样的

424d40ade0ef89b715f54fa128f33673.png

不过这食物吧

随机的才对

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

捣腾捣腾

fc975e3e3673934f931a2954289afb15.png

这里把食物的位置随机了一下

这样每次一运行就会随机显示了

8205573e6b9e5f5f1c25dd2ae242f977.png
8d088c6a1802d61a37657f1e67e7a8ec.png

好了

现在蛇也有了

食物也有了

接下来就让蛇的身体

扭!起!来!

79ef85f996760c00e2a9084fc787f393.gif

需要监听一下

方向键的事件

通过 pygame 的这个方法

pygame.event.get()

可以监听事件

比如监听关闭

73e8a53521c02d28fc87c3dce6dcff92.png

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

745e48ae80fa29b1796a62858d1f3de2.png

运行起来

只要你按了方向键

就会被监听到

40e914ecb7d9748bdf8a1be04258af33.png

接着定义一个蛇头的位置

ecb506e34e7333b882949946f0236944.png

蛇头居中

指引方向

每次触发一个方向键

就让蛇头的位置发生相应的变化

然后更新蛇身的位置

181fcbdcc8912376d62a4b2869ddf5df.png

所谓更新蛇身位置

主要将是将列表中的元素更新一下

添加蛇头的位置

pop掉蛇尾的位置

每次更新

需要渲染一下画布

bc92a5c8b8cda1f550961ee5658911c7.png

运行一下就是这样的

13a24403ab0a7de8672f3fd3c63ea96e.gif

我把它扭起来了

我这该死的手速

差点暴露了什么

3ad6fa984ac99a1a778caffdc1791aa8.png

刚刚的代码是不是很多重复

抽成一个方法吧

f9b67f22e84dc5c6f70adb03b54e41a6.png

蛇也有了

也会扭了

食物也有了

接下来就让它去吃啊

怎么吃呢

吃一堑长一智

判断下呗

只要头碰到了食物

就算吃到了

给蛇的身体加一格

7f5e644eb2bbdaa43ea5489ee361c26f.png

这里只要发现头的位置

和食物的位置相同

就说明吃到了

此时列表的数据就不 pop 了

并且食物的位置重新随机生成

那么现在每次重新渲染的时候

食物的位置就是随机的了

运行起来

1c02e4fc2d23cf96867adabe5dba5297.gif

nice

就是要这样

不过现在

这条蛇好像有外挂似得

撞到南墙都不死的

撞到自己也不死的

闹呢?

你以为你充钱了么?

4c6fa6f16f1a3dc474c387b65e12bfaf.png

怎么判断撞到自己了呢

其实就是把列表的数据拿出来比对

第一个元素是蛇头

拿它跟其它元素比对

相同就代表撞到了

7f352a5bfaee829295bd4d0c68eb79bd.png

如何判断撞到了墙了呢

通过蛇头的位置

只要不超过 [500, 500] 就没事吧

也就是说

只要蛇头都在画布之内

就行

9f879a7ae5b038312db20d63fa9ef39a.png

这里就直接退出了

f5f12b41a51461d6cc3956b1825267b2.png

效果就是这样

撞到就直接拜拜

906812cfbdb86ef75c94fcac90eb0428.gif

当然

画布一直频繁的更新

所以可以使用 pygame 的 clock

8166ec0638129a7c9cdc1acf1d13a484.png
343e5b4a2078f24c5dfa92c64e5fddf6.png

这样子每秒不会超过 10 帧

这样就不会那么浪费资源了

ok

今天就分享到这里

代码不难

如果需要的话

就在后台发送“帅蛇”获取吧

当然

更多是提供下思路

你还可以进一步

优化下代码

也可以添加一些功能

比如

添加背景音乐

添加分数统计

把食物换成cxk

...

自己发挥吧

那么我们下回见

peace

0d39393298deb07bfa7b0385c293df92.gif

扫一扫

学习 Python 没烦恼

ef95eafee1866f6d2273d7156979a904.png

那时候我们第一次接触这样的小游戏的时候

我们很是开心,简简单单,却玩得不亦乐乎

如今我们已经长大,早已对其不屑

不过,你刚刚,已经回忆了下那段时光

很温暖,不是吗?

小孩子的快乐其实很简单

成年人的简单其实很快乐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值