目录
最近系统学习了Qt的程序界面开发,所以用Qt尝试写了一个简单的魔塔小游戏。
下述括号内内容暂未编写
一.游戏大致内容
1.玩家角色
玩家角色拥有:角色名字,血量,攻击,防御,金钱,钥匙,剑,盾,(技能,经验,等级)
通过玩家角色保存层数
2.怪物
怪物拥有:怪物名字,血量,攻击,防御,金钱,(技能,经验,等级)
怪物名字不方便在代码中使用,所以给怪物添加一个“类型”变量
3.可触发的物品
可与玩家互动的物品
如:血瓶,(蓝瓶),钥匙,宝石,剑,盾,门等
4.不可触发的物品
地面,墙等
5.地图
初始地图与当前地图
6.(玩家与怪物的技能)
(技能拥有等级,加成,蓝耗等属性)
二.实现逻辑
除去暂时不想写的内容,将玩家角色写为一个类,怪物一个类,地图一个类,主界面一个类
玩家的活动可以写在玩家类中,也可以写在主界面类中——更方便刷新主界面;玩家应有移动,战斗等事件;主界面应有初始化,刷新界面,接收键盘按键事件等功能
使用Qt中的QLable控件装载地图的各种图标,用QPainter绘制游戏背景,用QMediaPlayer播放游戏背景音乐
地图用三维数组存储,每一张地图都是一个二维数组,则会将地图分割成网格状,通过多个QLable控件拼接成整张地图界面
三.具体实现
所有类的成员变量都写成了公有成员,方便在类外部通过该类对象使用这些变量
1.角色类声明
class Hero
{
public:
Hero(QString);
~Hero();
int blood; //血量
int attack; //攻击力
int defense; //防御力
int money; //金钱
int floor; //楼层
int b_key; //蓝钥匙
int y_key; //黄钥匙
bool sword; //持剑标志
bool shield; //持盾标志
QString name;
};
2.怪物类声明
class Monster
{
public:
Monster(int);
~Monster();
QString name;
int blood; //生命值
int attack; //攻击力
int defense; //防御力
int money; //金钱
int type; //类型 8-蓝史莱姆 9-黄史莱姆 10-蝙蝠 11-骷髅 12-法师
};
3.地图类声明
三维数组若声明未赋值则后续不方便赋值,需使用三重for循环赋值,不方便脑补绘制地图,所以在类中声明时就为其赋值
class Map
{
public:
Map();
//0-墙1-地板 2-蓝门 3-黄门 4-蓝钥匙 5-黄钥匙 6-小血瓶 7-大血瓶
//8-蓝史雷姆 9-黄史雷姆 10-蝙蝠 11-骷髅 12-法师 13-红宝石 14-蓝宝石
//15-英雄 16-上楼 17-下楼 18-剑 19-盾
/* //空地图,用于复制
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
*/
int map[TOWER_LAYER][ONCE_WIDTH][ONCE_HEIGHT]={
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,16,5,1,1,1,1,1,1,1,1,14,0},
{0,5,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,18,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,6,1,1,1,1,1,1,1,1,1,15,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,16,1,9,8,8,1,1,1,1,1,1,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0},
{0,5,1,1,3,1,0,1,5,1,0,1,0},
{0,1,11,1,0,1,0,14,6,1,0,1,0},
{0,0,3,0,0,1,0,0,0,3,0,1,0},
{0,5,1,1,0,1,3,10,11,10,0,1,0},
{0,1,11,1,0,1,0,0,0,0,0,1,0},
{0,0,3,0,0,1,1,1,1,1,1,1,0},
{0,1,1,1,0,0,3,0,0,0,3,0,0},
{0,6,1,5,0,1,1,1,0,1,10,1,0},
{0,6,13,5,0,17,15,1,0,9,7,8,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,5,14,0,5,7,5,0,1,0,1,6,0},
{0,1,6,0,7,5,7,0,1,3,10,1,0},
{0,12,1,0,5,4,5,0,1,0,0,0,0},
{0,3,0,0,0,1,0,0,1,0,1,12,0},
{0,1,1,10,1,1,1,9,1,1,1,1,0},
{0,3,0,0,1,1,1,0,1,0,0,0,0},
{0,11,1,0,0,1,0,0,1,0,1,6,0},
{0,1,5,0,1,1,1,0,1,3,12,5,0},
{0,6,6,0,1,1,1,0,1,0,0,0,0},
{0,0,0,0,0,1,0,0,9,0,1,1,0},
{0,17,15,1,1,1,1,0,1,3,1,16,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,1,5,1,0,1,1,1,0,1,12,1,0},
{0,6,13,4,0,1,12,1,0,5,1,7,0},
{0,1,1,1,0,1,1,1,0,1,11,1,0},
{0,0,3,0,0,0,2,0,0,0,3,0,0},
{0,1,12,1,3,1,1,1,1,1,1,1,0},
{0,1,1,1,0,0,0,0,0,0,0,0,0},
{0,9,1,8,1,1,1,1,1,1,1,1,0},
{0,3,0,0,3,0,0,0,3,0,0,3,0},
{0,1,0,9,10,5,0,1,12,1,0,1,0},
{0,1,0,5,1,5,0,9,6,9,0,15,0},
{0,16,0,8,8,5,0,1,9,8,0,17,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,17,1,2,1,1,1,1,1,1,1,1,0},
{0,15,1,0,1,1,12,1,12,1,1,1,0},
{0,1,0,0,0,0,0,1,0,0,0,0,0},
{0,1,0,5,5,0,1,1,1,0,5,12,0},
{0,1,0,5,5,3,1,1,1,3,1,5,0},
{0,1,0,0,0,0,1,1,1,0,0,0,0},
{0,1,0,12,11,0,1,1,1,0,5,7,0},
{0,1,0,1,1,3,1,1,1,3,1,5,0},
{0,1,0,0,0,0,1,1,1,0,0,0,0},
{0,1,0,7,7,0,1,1,1,0,12,19,0},
{0,16,0,7,14,3,1,1,1,3,12,12,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,16,0,1,10,3,1,0,1,1,3,1,0},
{0,1,0,1,1,0,5,0,11,12,0,2,0},
{0,1,3,11,1,0,1,0,5,5,0,1,0},
{0,0,0,0,3,0,10,0,5,5,0,1,0},
{0,5,5,12,12,0,1,0,0,0,0,1,0},
{0,5,1,1,11,0,1,12,1,1,1,1,0},
{0,0,11,0,0,0,1,0,0,0,0,12,0},
{0,1,12,1,1,0,10,0,1,1,1,1,0},
{0,13,5,7,5,0,1,0,1,0,0,0,0},
{0,0,0,0,0,0,5,0,1,0,7,14,0},
{0,17,15,1,1,1,1,0,1,3,1,1,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}
},
{
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,17,15,7,7,7,7,7,7,7,7,7,0},
{0,1,1,14,14,14,14,14,14,14,14,14,0},
{0,1,1,13,13,13,13,13,13,13,13,13,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1

本文详细介绍了使用Qt框架开发的一款简单魔塔小游戏的过程,包括游戏内容设计、逻辑实现、具体代码实现和注意事项。游戏包含角色、怪物、地图、主界面等多个类的定义,实现了角色移动、战斗、地图更新等功能,并给出了部分游戏效果截图。

6628

被折叠的 条评论
为什么被折叠?



