首页| 论坛| 消息

标题:Qt5之QGraphicsItem编写Tetris俄罗斯方块游戏
作者:zhoutk
日期:2021-05-06 16:27
内容:

背景
使用Qt5.12.9的QGraphicsItem来实现俄罗斯方块,现在是C++版本,下来还会有python版本,以及方便的接口,来接入算法,由机器人玩俄罗斯方块。

思路
CustomGraphBase类继承自QGraphicsObject,提供必要的虚函数。CustomGraphTetrisBlock类继承自CustomGraphBase,实现最小方块,分边框类型(0)与方块类型(1)。CustomGraphTetrisText类继承自CustomGraphBase,显示文字,类型为5。Tetris类组合CustomGraphTetrisBlock,显示俄罗斯方块。
Game类为游戏逻辑控制类。
该游戏传统的编程方式,是用一个二维数组来控制游戏空间,类似迷宫的方式。其实选择QGraphicsItem来实现就是一种很另类的选择,其实用gdi来做更方便,这种规模,QGraphicsItem没有优势,只是个人学习探索的选择。
我没有用二维数组来控制游戏空间,而是在边沿上用了一圏CustomGraphTetrisBlock来定义游戏空间,因为所有的items都能方便的在scene上检索到,所以看一个方块是否能移动,就需要检索自己的周围是否已经被其它方块占据。这里有一点,在方块进行旋转的时候,就要判断区分组成自己的block和别人的方块。

源代码及运行方法
项目采用cmake组织,请安装cmake3.10以上版本。
cmake -Bbuild .
cd build
cmake --build . --config Release
注:本项目采用方案能跨平台运行,已经适配过windows,linux,mac。
源代码:
https://gitee.com/zhoutk/qtetris.git交流博客:
https://segmentfault.com/a/1190000039952879

回复 发表
主题 版块