基于QtGUI的宠物小精灵对战游戏设计

发布于:2022-12-08 ⋅ 阅读:(314) ⋅ 点赞:(0)

C++ 程序设计—宠物小精灵实验报告

D录
1设计任务的描述 2
2运行环境 2
3功能需求说明 2
3.1第一阶段 2
3.2第二阶段 2
3.3第三阶段 2
4具体实现 3
4.1第一阶段 3
4.1.1基类设计 3
4.1.2子类实现 5
4.2第二阶段 5
4.2.1数据结构 5
4.2.2服务器端实现 7
4.2.3客户端实现 9
4.3第三阶段 9
4.3.1数据结构(详见第二阶段 4.2.1) 9
4.3.2服务器端 9
4.3.3客户端实现 10
5使用说明 11
5.1第一阶段 11
5.2第二阶段 14
5.3第三阶段 16
6实验总结 21

2 运行环境
1.系统:kali
2.编程环境:qt5.7
3.数据库:mysql
3.1第一阶段
3 功能需求说明
实现小精灵类的设计,包括小精灵种类,各种属性及攻击方式设计,同时编写测试函数进行是测试。
3.2第二阶段
1.每个用户需要注册一个账号,用户名全局唯一,不能有任何两个用户名相同,要考虑注册失败的场景时的反馈。
2.实现注册、登录、登出功能,均采用 C/S 模式,客户端和服务端用 socket 进行通信,服务端保存所有用户的信息。
3.每个用户拥有:用户名、拥有的精灵,两个属性。用户注册成功时,系统自动随机分发三个 1 级精灵给用户。
4.用户可以查看所有成功注册用户拥有的精灵,也可以查看所有当前在线的用户。
3.3第三阶段
1.实现用户小精灵与系统进行升级赛,升级可获得经验,进而升级。
2.实现用户小精灵与系统进行决斗赛,战胜可获得此精灵,战败则系统从用户的精灵中随机选三个(不够三个精灵的情况就选择他所有的精灵),然后由用户选一个送出。
3.用户如果没有精灵(比如总是失败,已经全部送出去),则系统会随机放给给他一个初级精灵。
4.实现用户可查看某一用户胜率的功能。
5.用户增加新属性:本文转载自http://www.biyezuopin.vip/onews.asp?id=14930宠物个数徽章(金银铜)和高级宠物徽章(金银铜),分别根据拥有的宠物个数的多少和拥有高级宠物(15 级)个数的多少颁发。

4具体实现
4.1第一阶段
4.1.1基类设计
主要数据类型:

enum KIND// 四种类型
{
HIGH_ATTACK,HIGH_BLOOD, HIGH_DEFENSE, HIGH_SPEED
};
const QList<QString> POKEMONNAME={ ” F e r a l i g a t r ” , // 大力鳄
” Charizard ” , // 喷火龙
” Noivern ” , // 音波龙
” Bagon” , // 宝贝龙
” Glaceon ” , // 冰伊布” Pikachu ” , // 皮卡丘”Wynaut” , // 小果然”Doduo” , // 嘟嘟
}; // pokemon 名字

enum SKILL// 技能
{
HydroCannon , // 加农水炮
Cut   ,   //   居合斩Leech Life , // 吸血FocusEnergy , // 聚气Barrier  ,  // 屏障Light Screen , // 光墙Counter , // 双倍奉还Tri Attack , // 三重攻击
NormalAttack , // 普通攻击
};

enum QUALIFICATION{ S , SS , SSS
}; // 属性等级

class Pokemon : public QObject
{
Q_OBJECT


public :
Pokemon ( ) : l e v e l ( 1 ) , e x p e r i e n c e ( 0 ){}
virtual ~Pokemon (){}

virtual uint Attack ( ) { return 0 ; } // 精灵技能
void Experience Up ( uin t value ) ;
virtual void LevelUP (){}

QString getName ( ) ; uint g e t Le ve l ( ) ;
QString g e t I n f o r m a t i o n ( ) ;
protected :
QString  name ;	// 名字
uint  l e v e l ;	//  等级uint  e x p e r i e n c e ;	//  经验uint  attack ;	// 攻击属性
uint  blood ;	// 生命属性
uint current Blood ; // 实时血量 , 对决时使用
uint  d e f e n s e ;	// 防御属性
uint  speed ;	// 敏捷属性
uint  kind ;	// 种类
uint  a t t r ;	// 稀有度
SKILL   s k i l l ;	// 技能

void s e t Va l u e s ( uint base Attack , uint base Blood , uin t  base Defense , uint base Speed ) ;

s i g n a l s :

public s l o t s :
};
主要函数:
void Pokemon : : Experience Up ( uin t value ) // 增加经验函数

QString Pokemon : : getName ( ) // 小精灵名字的 get 函数

uint Pokemon : : g e t Le ve l ( ) // 小精灵等级的 get 函数

QString Pokemon : : g e t I n f o r m a t i o n ( ) // 小精灵各种属性的 get 函数


void Pokemon : : s e t Va l u e s ( uin t base Attack , ui nt base Blood , ui nt base Defense ,
uint base Speed ) // 小精灵各种属性的 s e t 函数

4.1.2子类实现
以 HighAttack 子类为例:
uint HighAttack : : Attack ( ) // 攻击函数
{
qsrand ( QTime : : currentTime ( ) . msec ( ) ) ; uint p r o b a b i l i t y=qrand ()% 10 ;
i f ( p r o b a b i l i ty <8) // 普通攻击
return NormalAttack ;
else	//20% 几率使用技能
return this> s k i l l ;
}

void HighAttack : : LevelUP ( ) // 升级函数
{
this>l e v e l ++;

this>a ttack +=100;
this>b lood +=50;
this>c urrent Blood=this>b lood ; // 升级后当前的血量回复满血
this>d e f e n s e +=50;
this>s peed +=50;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述