当前位置: 首页 > 后端技术 > Python

Python精品俄罗斯方块开源项目

时间:2023-03-25 22:27:13 Python

最近想找一些Python相关的游戏开发实例。正好在itch.io上闲逛,看到了这个俄罗斯方块项目。我顿时惊呆了。作者为Mikhail,项目地址为:tetris_for_two:https://gitlab.com/2pi360/tetris_for_two1。游戏介绍先介绍一下这个用Python写的俄罗斯方块的具体功能。它共有七种游戏模式:1.单人模式2.普通双人模式3.镜像双人模式(即落下的方块相同)4.双人加速模式(每消除一行,5.双人交换控制模式(控制一次自己的方块,控制一次对方的方块)6.双人平衡模式(会改变对方的容量)7.双人单容器模式那是对了,这样丰富的游戏模式你有没有被震撼到呢?而且这款游戏的界面设计也相当简洁舒服(玩这种Python开源游戏绝对不会被广告气死):不仅如此,除了wasd还有上下左右,右键,也支持使用手柄(只有一个)玩游戏,可以切换两人的按键设置:双人模式类似下面,很适合小情侣间的消遣(如果你们都喜欢玩俄罗斯方块),尤其是双人合作模式,两个人一起解决问题,也是一种提升情绪的好方法:还有其他几种游戏模式,你可以去痒痒下载游戏体验一下,或者在公众号后台回复俄罗斯方块下载完整源码和游戏包(每个系统都有)。2.源码分析当然,我们的首要目的是学习这款游戏的源码,所以我给大家介绍一下这款游戏的一些核心代码。下载开源项目后,你会发现它的py文件分布如下:│base.py│game_modes.py│main.py│run_to_release.py│tetris.py│......├─assets│……...│└─screens......其中,main.py是程序的入口。先看模块介绍。sys的引入当然是。当游戏结束时,需要调用sys.exit(),Python程序才能正常退出。pygame是这个游戏的引擎。它是一个比较老的基于Python的2D游戏引擎,但是因为已经存在了很长时间,所以已经是一个非常成熟易用的2D游戏开发库。作者自己写了两个模块,一个是base,包含画布配置、按钮配置、播放器配置等一系列基本的游戏设置。而game_modes是七种游戏模式逻辑所在的模块,tetris。里面也引用了py,定义了整个俄罗斯方块的旋转方法及其数据结构。不过由于时间关系,先关注一下base中的主循环main_loop:pygame.time.Clock()用于配置游戏的帧数,Clock.tick(frameate)表示framerate每秒帧数操作,也就是说,每一秒的循环都不会执行超过framerate的次数。这个参数的值,我们在main函数中可以看到是600。也就是说这个循环每秒不会超过600次。pygame.event.get()是pygame游戏引擎的事件处理程序。用来处理所有的事件,就好像是开门让所有人进入,然后我们就可以根据事件的不同属性做相应的操作,比如event.type==pgl.KEYDOWN表示当键盘被按下时pressed,执行条件中的语句:pressed_keys.add(event.key)然后添加到pressed_keys集合中,yield返回给generator,也就是说只要程序没有终止,这个函数就会不断返回四个值:events、time_passed、pressed_keys或{(0,0)}。events是用户触发的事件,time_passed是这些事件的持续时间,pressed_keys是用户按下的键。这样就完成了用户事件的传输,然后后台对用户事件进行处理,并在游戏中展示出来。当然,更复杂的事情还在后头。这只是一个简单的事件处理,当然也是事件处理中最重要的部分。有兴趣的可以在公众号后台回复俄罗斯方块下载完整源码学习。这是我们文章的结尾。如果喜欢我们今天的Python实战教程,请继续关注我们。如果对您有帮助,请在下方点赞/观看。有什么问题可以在下方评论留言,我们会耐心解答!Python实用宝典不只是集合欢迎来到公众号:Python实用宝典原文来自Python实用宝典:Python精品俄罗斯方块开源项目