失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 面向对象程序设计方法RPG小游戏实例

面向对象程序设计方法RPG小游戏实例

时间:2019-07-16 17:50:03

相关推荐

面向对象程序设计方法RPG小游戏实例

第四章面向对象程序设计方法

一.实验目的

1.掌握面向对象程序设计的方法。明确类与对象的概念,掌握面向对象设计七大原则;

2.掌握常见的设计模式以及类图的描述

二.七大原则总结

(1)单一职责原则:类的职责要单一,不能将太多的职责放在一个类里。

(2)开闭原则:一个软件实体应当对扩展开放,对修改关闭,也就是说在设计一个模块时,应该使这个模块在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为。

(3)里氏代换原则:在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象。

(4)依赖倒转原则:高层模板不应该依赖低层模板,他们都应该依赖抽象,抽象不应该依赖细节,细节应该依赖抽象。

(5)接口隔离原则:使用多个专门的接口来取代一个统一的接口。

(6)合成复用原则:在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系。

(7)迪米特法则:一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,而是通过引入一个第三者发生间接交互。

三.题目要求及其分析

本题目要求的游戏角色应有以下属性:名字、性别、种族、职业、力量、敏捷、体力、智力、智慧、生命值和魔法值。

名字:由用户自己设计,不能超过50个字符。

性别:可以选择男性和女性。

种族:一共可选五个种族,人类、精灵、兽人、矮人和元素。

职业:可选六种职业,狂战士、圣骑士、刺客、猎手、祭司和巫师。

生命值=体力*20。

魔法值=(智力+智慧)*10。

种族和职业约束关系表如下:

各职业初始属性的大致比例应遵从下表:

按照面向对象设计思想我采用类的思想完成各个属性的设置

(1)玩家所选角色信息的类:class PlayerInfo

(2)角色的种族,职业类,公有继承PlayerInfo类的相关成员:

class RaceAndJob :public PlayerInfo

(3)角色属性类,公有继承RaceAndJob类,获取可继承的成员

class Attribute :public RaceAndJob

具体的类与类之间的关系,以及类中的方法如下图

要求力量、敏捷、体力、智力和智慧要求是随机值(利用随机数函数来取得随机数),但是五项属性的总和应该是100,并且应该和职业相关。

通过如下代码块实现:

随机生成属性值的实现,5个形参对应不同的5个角色属性

void Attribute::getRandom(int a1, int a2, int a3, int a4, int a5){int sum; //属性值之和srand((unsigned)time(NULL)); //让随机数种子不固定,每次执行结果都不一样do{STR = a1 + rand() % 2;AGL = a2 + rand() % 2;PHY = a3 + rand() % 2;INT = a4 + rand() % 2;//WIS = a5 + rand() % 2;sum = STR + AGL + PHY + INT;} while (((100 - a5) < sum) && (sum < 100));WIS = 100 - sum;HP = PHY * 20; //生命值等于体力的20倍MP = (WIS + INT) * 10;}

四.UML的类图结构设计

五.调试测试及其运行结果

(1)种族限制职业测试展示:

(2)不同种族对应不同种类的职业

力量、敏捷、体力、智力和智慧随机产生测试

总值为100每次产生的值是随机的,都不相同

(3)写入文件展示

(4)完整版运行结果展示

六.经验归纳

本次实验之前,我是先学习了程序设计面向对象设计的思想,明白了七大原则以后开始的本次实验。自我感觉对我的编程思想提高蛮多的,感觉整个过程中自己对每个模块该干啥,思路很清晰,尽管可能某一个模块可能实现起来有困难,但是我的思路很清晰。

如果觉得《面向对象程序设计方法RPG小游戏实例》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。