2017-08-05 47 views
1

我一直在用Java开发一个基于文本的小型RPG游戏。我写了一个故事线,并做了库存/装甲装备。当涉及到访问某些代码时,我遇到了一个问题。在游戏开始时,用户可以选择成为射手/法师/战士(我将其称为“作业”而不是“班级”)。每个人都有自己的班级。但是当他们融入游戏时,我发现我正在做很多if语句来总是检查用户是否是射手/法师/战士。 如何在不使用if语句的情况下更好地整合这一点?我是初学者/中级水平,现在做对象大约一个月。Java游戏开发,与“类”合作

+3

多态现象,也许? –

+0

阅读子类和实现。这个想法是你有一个框架,并提供通用命名方法中的工作特定代码。 –

回答

1

这将是最容易使用的多态这一点,但这是不可能的,如果方法有不同的名字......

如果你想这样做多态:

首先,阅读多态性。 Here's一个很好的网站来做到这一点。

要开始了,你所有的类的扩展超,说球员(你将不得不写Player类,然后才能extend它)。者来扩展播放类,你可以写这样的事情在你的“工作”类的标题:

public class Mage extends Player { 

当然,你根据什么“工作”要定义替代Mage为不同的类别。

在你需要编写的Player类中,你应该定义你希望你的子类能够执行的所有方法。你应该使这些方法abstract,但请记住,如果你有一个抽象方法,,你将不得不在你所有的子类中定义它。所以,如果你有一个名为“Cast”的方法,你需要在每个“job”类中定义这个方法。

但是,一旦你已经创建了一个超类,与方法(我建议有一般abstract方法,如攻击保卫),只是定义在子类中这些方法,你是好去。

如果你想这样做,非多态:

if-statement,虽然不一定愉快,似乎是这样做的最有效的方法,如果你不想尝试使行为多态。

你能说你的if-statement的结构是什么吗?可能有更简单的方法来编写它,并减少代码的数量(使其更清晰)。

例如,如果你说:

if (a.getClass() == X.class) 

你可以考虑使用instanceOf代替:

if (a instanceof X) 

除此之外,我没有对如何做到这一点任何更好的想法。