本文为我个人原创,转载请注明出处

项目介绍

迷宫大师是本人的C++程序设计的大作业,是一个可视化的迷宫小游戏。可视化界面基于Qt5,使用Qt Creator开发。

项目主要有如下特点:

  • 对Qt自带的控件进行了二次封装,以实现更加美观的游戏效果;
  • 为了更方便的设计关卡,配套开发了可视化的迷宫地图编辑器,并实现了复杂迷宫地图的深度优先生成;
  • 迷宫游戏实现了文件的读写,实现了导出和读取玩家自制地图,并加入了通过DFS绘制迷宫出路的功能;

项目的设计树形图如下:

1597290324959

演示截图

  • 主界面
img
  • 选择关卡界面
img
  • 游玩界面
img
  • 游玩界面 – 自动寻路

(注明:左下角的终点无法到达,寻找到了右上角的终点)

img
  • 游玩界面 – 胜利/失败
img
img
  • 编辑地图界面(可以用鼠标点击Tile来更改地图图块的状态)
img
  • 编辑地图界面 – 随机生成
img

开发思路

使用Qt GUI框架

Qt是一个成熟的跨平台的C++图形用户界面应用程序框架。选择Qt的作为GUI框架相对于选择OpenGL可以节省很多不必要的开发时间,提升开发效率的同时保证稳定性。Qt提供了一些工具类,比如QString,QDebug等。笔者选择使用Qt自带的这些类而不是C++本身提供的string,cin,cout这些工具类,以保证程序内部信息流交互更加方便。

封装图片按钮类 ImgButton

我们手动封装一个自己的图片按钮类:ImgButton。这个类继承QPushButton。

利用这个类和笔者自己用Photoshop制作的按钮图片素材,我们可以实现比Qt自带的QPushButton更美观的按钮。笔者还为按钮添加了音效。

笔者利用Photoshop自己制作的部分按钮素材如下(具体见源代码res文件夹):

主窗口(标题界面)MainWindow

主窗口将选关窗口和地图编辑窗口作为数据成员,便于进行与这些界面间的切换。

封装地图图块类 Tile

我们继承QPushButton封装一个地图图块类Tile,之后利用这个类和图片素材绘制迷宫地图。利用网上的图像素材,笔者制作的地图图块如下(按顺序为墙、路、起点、终点):

1597290698871
1597290704402