|
背景使用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
|