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

发布于:2022-12-07 ⋅ 阅读:(306) ⋅ 点赞:(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;
}

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


网站公告

今日签到

点亮在社区的每一天
去签到