概述

大二的windows游戏设计结课作业,我们小组完成的游戏是一个基于QT的游戏《迷宫》。

游戏名称:maze

游戏平台:Windows

游戏画风:卡通

作者:胡松、张静、郭熊

github: https://github.com/hushhw/maze

本游戏主要实现了人控制键盘使小人走出迷宫。玩家需要在规定的时间内从起点移动到终点。玩家可以根据自己的需求选择不同的头像以及创建不同规格的迷宫(仅限于大于五的奇数)。在游戏过程中,当人碰到墙壁的时候无法移动。当时间归零时,游戏结束。此游戏额外设置了两个功能,玩家在游戏过程中可以选择“寻找路径”,此时游戏界面会出现指向终点的最短路径;玩家也可以选择“拆除墙壁”,此时玩家将无视墙壁的存在,可以直接向终点移动,到达终点后游戏过关。

创建迷宫:

创建方块

寻找路径:

寻路

拆除墙壁

拆墙

拆墙2

说明

  1. 如何随机创建迷宫的“墙”和“路”

如何运用栈和递归以及回溯法的方法随机创建迷宫的方法。从左上角坐标为(3,3)开始,对上下左右四个方向进行随机扩充路线,每次扩充两格,并且全部入栈,如果当前访问节点四个方向都没有可拆的节点的时候进行回溯,如果栈为空的时候就返回,此时迷宫矩阵已经创建完毕。

  1. 创建迷宫地图长宽仅能为奇数

开始制作的时候没有注意到有这个限制,因为起始地点为(1,1),每次扩充两格,所以如果不设置为奇数的话,迷宫地图最下方会有两排墙,增加了这个限制后就好了。

  1. 如何寻找路径

迷宫游戏基本可以运行的情况下,需要快速的找出答案,运用图的深度优先遍历的方法来寻找路径解决路径问题。

  1. 如何给不同板块设置不同的材质颜色

通过 switchI(type),case 不同情况来做不同的调用。

  1. 如何完成选择不同“英雄”

为了实现点击英雄头像,能够选择不同的英雄角色出场,在交互上做了很多关联,比如点击头像对应的label模块就会显示出来,其他label就会隐藏,迷宫地图上的英雄头像也会跟着一起变化。同时在点击创建按钮时除了能够随机生成不同的迷宫地图,还能够随机选择不同的英雄头像。

  1. 鼠标fcous的设定

在游戏制作过程中,鼠标foucs的问题很影响我们的进度,因为问题比较细微所以我们花了很多时间都没有解决这个问题,完全没有思路,后来想到cocos2d-x的学习中有一个鼠标事件便是光标此时的聚焦点,后来百度知道了this->setFocus(Qt::MouseFocusReason);可以设置让游戏界面的聚集点总是在迷宫地图上,就不会因为我们点击了一下按钮,重新选择了英雄,设置了迷宫的大小而丢失聚焦点。

  1. 编译器的堆空间不足导致报错的问题

这个问题折磨了我们很久,因为也是不熟悉这个错误,所以不知道代码什么地方出了错,最后百度得知是空间不足,可能是我们的背景音乐过于大所以,最后通过增加代码CONFIG+=resources_big解决了这个麻烦的问题。

  1. 倒计时设置时的细节把控

因为游戏中有很多地方都得让倒计时重置或者是暂停,所以有很多细节部分需要进行设定。倒计时有一个特点就是倒计时的总时间是根据创建的迷宫地图的大小决定的。

  1. 背景音乐的设置

背景音乐是我们一个完全陌生的模块,所以学习了很多别人制作的案例,开始采用的是#include ,但是因为仅仅只能够使用绝对路径,而我们三人在制作中经常需要把代码进行互相交流,所以很不方便,所以我们后来寻求了用QUrl的资源地址来解决绝对路径的问题。