python冠希|基于pyqt5实现俄罗斯方块 --pyqt5 进阶,Python 俄罗斯方块,
学习了pyqt5后 , 总想弄些有趣点的 , 然后就想起了弄一个小游戏 , 弄一个简单的小游戏 , 然后就用pyqt5写了一个俄罗斯方块的小游戏
开发环境
windows10python3.8x游戏界面
文章图片
游戏思路
了解俄罗斯方法的基本操作:方块下降、方块旋转、方块的左右移动、方块的填充
1、方块的下降 , 可以看成是一个二维数组 , 创建一个20行(y轴)10列(x轴)的二维数组 , 初始化数值为0 , 方块从最顶端(第20行)下降到最低端(第1行) , 也就是方块的高度在减少 , 也就是行(row)的减少 , 解决:利用QTimer设置定时器 , 每隔一段时间启动一次方块下降的函数 , 就可以实现方块随时间下降 , 但是怎么判断方块下降到底了呢 , 就是设置二维数组的第0行为1 , 如果下降过程中遇到1的二维数组 , 则证明碰到了其他方块或者方块到底了 。
2、方块的旋转 , 最简单的方法就是枚举出该类型的所有方块(包括旋转的) , 可以参考一下我的写法
blocks={
'LShape':[[[0,0],[0,-1],[0,-2],[1,-2]],[[-1,-1],[0,-1],[1,-1],[-1,-2]],
[[-1,0],[0,0],[0,-1],[0,-2]],[[-1,-1],[0,-1],[1,-1],[1,0]]],
'JShape':[[[0,0],[0,-1],[0,-2],[-1,-2]],[[-1,0],[-1,-1],[0,-1],[1,-1]],
[[0,0],[1,0],[0,-1],[0,-2]],[[-1,-1],[0,-1],[1,-1],[1,-2]]],
'ZShape':[[[-1,0],[0,0],[0,-1],[1,-1]],[[0,0],[0,-1],[-1,-1],[-1,-2]],
[[-1,0],[0,0],[0,-1],[1,-1]],[[0,0],[0,-1],[-1,-1],[-1,-2]]],
'SShape':[[[-1,0],[-1,-1],[0,-1],[0,-2]],[[0,0],[1,0],[-1,-1],[0,-1]],
[[-1,0],[-1,-1],[0,-1],[0,-2]],[[0,0],[1,0],[-1,-1],[0,-1]]],
【python冠希|基于pyqt5实现俄罗斯方块 --pyqt5 进阶,Python 俄罗斯方块,】'OShape':[[[-1,0],[0,0],[-1,-1],[0,-1]],[[-1,0],[0,0],[-1,-1],[0,-1]],
[[-1,0],[0,0],[-1,-1],[0,-1]],[[-1,0],[0,0],[-1,-1],[0,-1]]],
'IShape':[[[0,0],[0,-1],[0,-2],[0,-3]],[[-2,-1],[-1,-1],[0,-1],[1,-1]],
[[0,0],[0,-1],[0,-2],[0,-3]],[[-2,-1],[-1,-1],[0,-1],[1,-1]]],
'TShape':[[[-1,-1],[0,-1],[1,-1],[0,-2]],[[0,0],[-1,-1],[0,-1],[0,-2]],
[[0,0],[-1,-1],[0,-1],[1,-1]],[[0,0],[0,-1],[1,-1],[0,-2]]]
拿’LShape‘中的第一个方块来说明 , 它的坐标是这样子的[[0,0],[0,-1],[0,-2],[1,-2]] , 我们以(0 , 0)为坐标原点 , 可以画出这样子的四个方块(以左上方为顶点 , 往右下方绘制矩形)
文章图片
只要我们给每个方块的坐标都加上对应的所有行和所有列 , 就可以使方块位于最顶端了 , 旋转的时候只有每次下标(index+1%4)就可以得到旋转之后的方块了 , 不过旋转的时候还是需要判断的 , 如果旋转时候碰到其他方块 , 则取消旋转 , 或者旋转时候超过边界也要取消旋转 , 要满足旋转的条件才可以 。
3、方块的左右移动 , 方块向左移动 , 即方块的列也就是x减去1 , 同理方块向右移动 , 方块的列加上1 , 同时也要满足左右移动的条件:没有超出边界而且没有碰到其他方块 。
4、方块的填充 , 假如说‘LShape’的方块到达了底端 , 我们就给对应的二维数组坐标赋值为1 , 利用QPainter来实现方块的填充 , 每次从第1行开始遍历一遍二维数组 , 如果该点的值为1 , 则在该点绘制一个矩形 。 下面的图片可能更好理解
文章图片
上面图片中 , 没有填1的就是0 。
- 计算机视觉工坊 汇总|基于激光雷达的3D目标检测开源项目&数据集
- 计算机视觉工坊汇总|基于激光雷达的3D目标检测开源项目&数据集
- 互联网基于区块链技术的房地产管理平台——兰房链亮相高交会
- 智东西寒武纪MLU & 浪潮元脑联合专场上线,详解基于寒武纪MLU的视觉增强加速与应用|直播预告
- InsDaily|《中国直男去油攻略》:如何打造200斤的吴彦祖和1米7的陈冠希?
- ZAKER|特朗普法律战再碰壁!亚利桑那州法官驳回诉讼:基于偏见才提出
- 营收|越有钱越拍冒险
- 火石创造杨红飞:未来生物医药创新是基于数据的产业链协同过程
- 潮人志Fashion|陈冠希为甄子丹开设潮牌?粉丝:叶大师原来也是个潮流boy
- 东东带你看娱乐|深扒孙红雷5段情史,一次比一次虐,比陈冠希还要精彩