【发布时间】:2016-01-19 02:57:51
【问题描述】:
我对我的第一个 java 项目(以 OO 为重点)有了一个想法。这个项目是某种非常基础的角色扮演游戏(没有 GUI,它非常基础),所以我有一些 OOD 问题。
玩家(没有玩家职业,至少现在是这样)可以选择一个角色职业(你知道,战士、巫师等……将来他可能可以选择几个角色,这样他就可以拥有一个派对)。创建角色后,他可以与其他敌人作战(由程序控制)。
- 每个角色都有一些信息,例如:角色等级(如战士)、等级、护甲等级、能力(力量、敏捷、智慧等)。
- 每个类都有一个库存。
每个字符都有一些方法,例如:
攻击(使用武器,如果他是施法者,那么施法也可以 使用攻击)。
- 防御(如防御法术或使用招架等技能。注意:更改 盔甲类。
某些角色职业(如巫师)可以施法。大多数法术将是攻击性或防御性的,因此它们可以使用攻击或防御方法。 例如,假设 castFireball 可以调用 Attack(20)。一些咒语 可以做其他事情,比如 castHeal 可以治愈角色并改变 当前生命值。
购买(未来可选)。当然,所有角色的实现都相同。
- 从库存中添加/移除。
建议的实现: 我考虑过创建一个抽象类(包含等级、装甲类、能力(如力量、敏捷、智慧等)等信息。以及一些方法,如攻击和防御。其他特定类将扩展 Character,因此它看起来像:
Character (abstract)
Character Class (like fighter)
Level
Hit Points
Current Hit Points
Armor Class
.
.
.
Inventory (List)
Strength
Dexterity
Wisdom
Fighter Wizard Rouge Cleric (All extends Character)
问题:
- 在这种情况下使用抽象类被认为是一个好的设计?您会建议使用界面并更改设计吗?
- 我应该为力量、智慧等能力创建另一个课程,还是可以将其作为角色的一部分?
- 我应该为库存创建另一个类吗?我认为它可能会更好,对吧?
- 使用枚举存储所有武器、盔甲和盾牌(未来可能还有其他东西)的数据是一个很好的解决方案吗?
- Spells - 我不确定什么是实现它们的好方法。我可以创造 一个法术类,每个法术都有静态方法(如 castFireball、castHeal 方法)。施法当然只与施法者角色相关(每个角色都有一个已知的法术列表,所以他只能施展他知道的法术)。这是实现它的好方法吗? 我也可以使用txt文件,从文件中获取相关数据,但我不喜欢这个想法。
请记住,它应该是基本的,但应该为将来的更改和添加进行计划。它看起来像:
你想怎么攻击?
- 匕首(主要武器)
- 剑
- 施法
3
你想施什么咒语?
- 火球
- 治愈
- 冰风暴
1
你用火球击中敌人,造成 20 点伤害。
这很模糊,但你明白了..
非常感谢!!
【问题讨论】: