私はJavaでテキストベースの小さなRPGゲームを開発してきました。私はストーリーラインを書いて、在庫/鎧の装備をしました。私はいくつかのコードにアクセスすることになると問題に遭遇しました。ゲームの開始時に、ユーザーはアーチャー/魔道師/戦士(私はこれらを「クラス」ではなく「ジョブ」と呼ぶことにする)を選ぶことができます。これらのそれぞれには独自のクラスがあります。しかし、ゲームにそれらを組み込むとき、私は、ユーザーがアーチャー/魔道師/戦士であるかどうかを常にチェックするif文をたくさんやっていることがわかります。 if-statementsをどこにも使わずに、これをどうやって統合するのがいいですか?私は初心者/中級者で、オブジェクトを約1ヶ月間使っています。"Classes"で動作するJavaゲーム開発
答えて
この多形をしたいと思った場合は...
それは、このために多型を使用するのが最も簡単でしょうが、方法は異なる名前を持っている場合、これは不可能です:
まず第一に、多型について読む。 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)
、私はこれを行う方法上の任意のより良いアイデアを持っていません。
- 1. Java 3Dゲーム開発
- 2. アドホックワイヤレスJavaゲーム開発
- 3. ゲーム開発リソース
- 4. ゲームの開発
- 5. iPhoneゲーム開発
- 6. Androidゲーム開発
- 7. HTML5ゲーム開発
- 8. iPhoneゲーム開発
- 9. Androidゲーム開発
- 10. Iphoneゲーム開発
- 11. Iphoneゲーム開発
- 12. ゲームを開発する
- 13. Codeigniterゲームを開発する
- 14. ゲーム開発:OpenGLとDirectXの自動テスト
- 15. Androidゲーム開発を開始する
- 16. iphoneのゲーム開発
- 17. vb.Netのゲーム開発
- 18. C++ 3Dゲーム開発
- 19. AS#3ゲーム開発
- 20. socket.ioゲーム開発アルゴリズム
- 21. socketIOで開発しているWebゲーム
- 22. Androidゲームの開発 - JavaまたはFlash開発またはFlashアニメーション?
- 23. 複数プラットフォームの開発者とクロスプラットフォームのゲームを開発する
- 24. LimeJSとゲーム開発用CreateJS
- 25. モバイルアプリHTML5ゲーム開発(ツール)
- 26. iPhoneゲーム開発者:Achievement Framework?
- 27. Flash/iPhoneゲーム開発フレームワーク
- 28. iphoneゲーム開発へのジャンプ
- 29. iphoneゲームの開発Esimate
- 30. AS 3 isolibゲーム開発
おそらく多型ですか? –
サブクラスと実装について読んでください。アイデアはスケルトンを持ち、一般的な名前のメソッドでジョブ固有のコードを提供しているということです。 –