• 1659阅读
  • 0回复

Qt5之QGraphicsItem编写Tetris俄罗斯方块游戏 [复制链接]

上一主题 下一主题
离线zhoutk
 

只看楼主 倒序阅读 楼主  发表于: 2021-05-06


背景

使用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以上版本。
  1. cmake -Bbuild .
  2. cd build
  3. cmake --build . --config Release

注:本项目采用方案能跨平台运行,已经适配过windows,linux,mac

源代码:
  1. https://gitee.com/zhoutk/qtetris.git
交流博客:

  1. https://segmentfault.com/a/1190000039952879




4条评分好评度+1贡献值+1金钱+10威望+1
20091001753 好评度 +1 最好能直接上几张截图 2021-05-06
20091001753 贡献值 +1 最好能直接上几张截图 2021-05-06
20091001753 威望 +1 最好能直接上几张截图 2021-05-06
20091001753 金钱 +10 最好能直接上几张截图 2021-05-06
快速回复
限100 字节
 
上一个 下一个