QT实现简单的塔防游戏(高级重构版)
GitHub代码下载地址:点击跳转
由于第一次写塔防游戏时,我没有相关经验,所以导致最终的代码既不规范,运行效果也不太好。
而这一次,我重新写了一遍塔防程序,弥补了上一个塔防程序大部分的不足。
同时代码中还使用了很多高级(我认为)的用法,其中包括了C++新标准语法、封装、继承、多态等,甚至其中的一个功能,因为我没有办法很好的实现效果,于是我寻求了他人的帮助。
虽然我并没有与之相关的作业,但是我还是尽力把它做到了最好。
该程序中不仅包含了塔防游戏的基本功能,还有着丰富的升级功能,
其中包括了:
根据特定的二维数组自动生成地图、
自动确定防御塔位置、自动生成怪物路径、
可购买四种不同的防御塔,每种防御塔都有着其独有的攻击方式、
防御塔自动寻找目标进行攻击、
防御塔升级、防御塔拆除、
四种不同属性的敌人、
游戏难度随游戏进度增加、
命中敌人效果、敌人血条显示、
游戏失败及胜利判定、
多关卡功能,且添加关卡只需要一个13*8的特定格式的二维数组(在选择关卡界面类添加约15行代码)、
背景音乐。
虽然这个小游戏跟用游戏引擎做出来的真正的游戏还差很远,但是我认为它对于新手而言已足够好了。
运行效果:
防御塔升级后,其图片宽高会增大,攻击范围、伤害、速度都会提高
编译环境:
Windows Qt 5.9.0 Qt Creator 4.3.0
思路:
塔防小游戏思路
下面展示游戏开始界面代码,该界面使用了QT的界面设计功能
游戏开始界面代码:
#include "startwindow.h"
#include "ui_startwindow.h"
#include "gamewindow.h" //游戏界面
StartWindow::StartWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::StartWindow)
{
ui->setupUi(this);
setWindowTitle("开始界面");
//选择关卡按钮点击
//第一关
connect(ui->pushButton_1, &QPushButton::clicked, []()
{
int mapArr_1[8][13] =
{
0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0, 0, 3, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1