2017-08-05 4 views
1

私はJavaでテキストベースの小さなRPGゲームを開発してきました。私はストーリーラインを書いて、在庫/鎧の装備をしました。私はいくつかのコードにアクセスすることになると問題に遭遇しました。ゲームの開始時に、ユーザーはアーチャー/魔道師/戦士(私はこれらを「クラス」ではなく「ジョブ」と呼ぶことにする)を選ぶことができます。これらのそれぞれには独自のクラスがあります。しかし、ゲームにそれらを組み込むとき、私は、ユーザーがアーチャー/魔道師/戦士であるかどうかを常にチェックするif文をたくさんやっていることがわかります。 if-statementsをどこにも使わずに、これをどうやって統合するのがいいですか?私は初心者/中級者で、オブジェクトを約1ヶ月間使っています。"Classes"で動作するJavaゲーム開発

+3

おそらく多型ですか? –

+0

サブクラスと実装について読んでください。アイデアはスケルトンを持ち、一般的な名前のメソッドでジョブ固有のコードを提供しているということです。 –

答えて

1

この多形をしたいと思った場合は...

それは、このために多型を使用するのが最も簡単でしょうが、方法は異なる名前を持っている場合、これは不可能です:

まず第一に、多型について読む。 Here'sそれを行うには良いウェブサイト。

まず、すべてのクラスをスーパークラス(Player)に拡張させます(extendになる前にPlayerクラスを作成する必要があります)。プレイヤーのクラスを拡張するために、あなたは「仕事」クラスのヘッダにこのような何か書くことができます。もちろん

public class Mage extends Player { 

を、あなたが定義しているものを「仕事」に応じて、異なるクラスのためMageに置き換えてください。

作成する必要のあるPlayerクラスの中で、サブクラスが実行できるようにするすべてのメソッドを定義する必要があります。これらのメソッドをabstractにする必要がありますが、抽象メソッドを持っている場合はを覚えておいてください。すべてのサブクラスで定義する必要があります。だから、あなたが "キャスト"と呼ばれるabstractメソッドを持っていたならば、これをすべての "仕事"クラスで定義する必要があります。

しかし、あなただけのサブクラスでこれらのメソッドを定義し、方法、(私は、このようなアタックまたはなどの一般的abstract方法はを守れた提案)で、スーパークラスを作成している、とあなたが行ってもいいです一度。

あなたはこの非多形をしたい場合:

if-statement、あなたが作るしようとしたくない場合は、これを行うための最も効果的な方法であることを必ずしも快適ではない表示されている間行動多型。

if-statementの構造は何ですか?それを書くための簡単な方法があり、コードの量を減らすことができます(読みやすくするため)。例えば

、あなたが言っている場合:

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

代わりinstanceOfの使用を検討できます。このほかに

if (a instanceof X) 

、私はこれを行う方法上の任意のより良いアイデアを持っていません。