知行编程网知行编程网  2022-05-03 05:00 知行编程网 隐藏边栏 |   抢沙发  11 
文章评分 0 次,平均分 0.0

Python 竟能开发如此精美的俄罗斯方块!


最近想找一些Python相关的游戏开发例子,正好在itch.io上闲逛看到这个俄罗斯方块项目,瞬间被惊艳到了。作者是 Mikhail ,项目(tetris_for_two)地址是:
https://gitlab.com/2pi360/tetris_for_two

1.游戏介绍

下面就给大家介绍一下这个用Python写的俄罗斯方块具体功能。它一共有七个游戏模式:

1. 单人模式
2. 普通双人模式
3. 镜像双人模式(即掉落方块都一样)
4. 双人加速模式(每消去一行都会给对方加速)
5. 双人交换控制模式(一次控制自己的方块,一次控制对方的)
6. 双人平衡模式(会改变对方的容量)
7. 双人单容器模式

没错,是不是被这丰富的游戏模式震惊到了?而且这款游戏的界面设计也是相当简洁舒服(而且玩这样的Python开源游戏,你永远不会被广告气到):

Python 竟能开发如此精美的俄罗斯方块!


不仅如此,除了wasd和上下左右键,它还支持用游戏手柄(仅一个)进行游戏,并且能切换两个玩家的按键设置:

Python 竟能开发如此精美的俄罗斯方块!

双人模式类似如下, 非常适合小情侣之间消耗时光哦(如果你们都喜欢玩俄罗斯方块的话)

Python 竟能开发如此精美的俄罗斯方块!


尤其是双人协作模式,两个人一起解决问题也是增进感情的好方法:

Python 竟能开发如此精美的俄罗斯方块!



2.源码剖析

当然,我们首要目的还是学习这款游戏的源代码,下面就给大家介绍一些这款游戏的部分核心代码。下载该开源项目后,你会发现它的py文件分布如下:

│ base.py
│ game_modes.py
│ main.py
│ run_to_release.py
│ tetris.py
│ ... ....
├─assets
│ ... ...

└─screens
... ...

其中,main.py是程序的入口点,首先看看模块引入,sys的引入是当然的,游戏结束的时候需要调用


使得Python程序正常退出。这个游戏的引擎使用了pygame,是一个比较老的基于Python的2D游戏引擎,不过也是因为存在时间长,它已经成为一个很成熟且易上手的2D游戏开发库 。

Python 竟能开发如此精美的俄罗斯方块!


作者自己写了两个模块,一个是base,里面有画布配置、按键配置、玩家配置等等一系列游戏的基础设置。而 game_modes 则是七种游戏模式的逻辑所在模块,里头还引用了tetris.py,这个模块定义了整个俄罗斯方块旋转的方法及其数据结构。

不过由于时间关系,我们重点看看base里的主循环main_loop:

Python 竟能开发如此精美的俄罗斯方块!


pygame.time.Clock() 用于配置游戏的帧数,Clock.tick(frameate) 代表每秒framerate帧运行,也就是说,每秒不会执行超过 framerate 次循环 。这个参数的值,我们可以在主函数里看到是600. 也就是这个循环每秒不会超过600次。

pygame.event.get() 是pygame游戏引擎的事件处理器,它用于处理所有的事件,好像打开大门让所有的人进入,然后我们可以根据事件不同的属性做相应的操作,如 event.type == pgl.KEYDOWN 表示键盘被按下时,执行条件中的语句:


便将其加入到pressed_keys集合中,yield返回生成器,也就是说只要程序不被终止,这个函数就会不断地返回四个值: events, time_passed, pressed_keys 或 {(0, 0)}。events就是用户触发的事件,time_passed就是这些事件的时长,pressed_keys即用户按下的键。

这样就完成了一次用户事件的传递,然后再又后端对用户的事件进行处理,展示在游戏当中。当然,更复杂的还在后面,这里只是一个简单的事件处理,当然也是最重要的事件处理部分。

如果大家有兴趣的话,可以 在后台回复 俄罗斯】下载完整源代码进行学习。

后记

自学编程的过程是很痛苦的,有的时候没有人指导,慢慢的会变成从入门到放弃,可能懂的人只要花1-2分钟就能帮你解决的问题,不懂的人要折腾几个小时。最近不断的有小伙伴希望我们建一个交流群,有想加入的同学,可以跟小助手联系。这个群的目的如下:

1. 帮助初学者的一起解惑一些入门的Python问题

2. 我们经常有答题送书的福利,有了群更容易联系到大家

3. 已经在我们小密圈群的同学就不要再加入了,避免重复入群



目前青铜群已经有220多人,我们采用筛选制度,会根据一些后台数据,进行筛选的!生面孔或者不常来的,我们一概谢绝入内。有专人进行答疑解惑入门问题。


入群请找菜鸟哥

暗号:【入群

<p style="text-align: center;"></p><pre style="letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);font-size: 16px;color: rgb(63, 63, 63);word-spacing: 1px;line-height: inherit;"><p style="text-align: center;"><span style="font-size: 15px;"><strong>小助手最近在出差ing,非常辛苦,都不容易!</strong></span></p><p style="text-align: center;"><span style="font-size: 15px;"><strong>回复很慢大家多见谅哈</strong></span></p>



近期热门:

● 80%的人都不知道,全球Python库下载前10名

● 我珍藏的一些好的Python代码,技巧|上篇

● 爬取300本Python书籍,用Python告诉你哪家强?

● 简单几步,100行代码用Python画一个蝙蝠侠的logo
● 我用Python分析了《青春有你2》109位漂亮小姐姐,真香!
● 牛逼操作!用Python做了一个编程语言20年的动态排行榜!
● 我打赌,学会这6招,谁再敢笑你的Python程序慢!

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

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

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

发表评论

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