コンピュータカードゲーム(Hearthstoneのようなものですが、あまり複雑ではありません)を開発しようとしています。私はゲームに必要なすべてのカードをデータベースに持っています。 テーブルには、カードタイプを格納するカラムcardType
があります。これは、Javaオブジェクトの対応するコンストラクタである必要があります。テーブルフィールドに基づいてそのタイプのオブジェクトをインスタンス化する必要があります。Javaリフレクションを使用したトレーディングカードゲームでのカードとエフェクトの実装
例: 私のテーブルにはcardType = BasicMinion(7,7)
のカードがあります。
は、次にJavaで私はクラスを持っている:
BasicMinion extends Card {
public BasicMinion(int health, int attack) {
// initialize
}
public void play(){
//do something
}
}
私はこのような何かをやって、データベースから取得した文字列を使用してオブジェクトを作成するためにリフレクションを使用することができます。 Java how to instantiate a class from string
しかし、私のカードを反応することができるいくつかの基本事象を有するクラスCard
を拡張する。リフレクションでは、基底クラスCard
のメソッドと、派生クラスのメソッドを呼び出すことができますか?
基本的に私はArrayList<Card>
を持っています。データベースから取得したすべてのカードタイプを置くことができるので、イベントが発生したときにメソッドを呼び出すことができます。
何か不足しているようです。質問はかなり曖昧ですが、どうすればいいですか?
ので、あなたが作成した後のオブジェクトのこれらのメソッドを呼び出すことができます。私は、なぜあなたが既にBasicMinionを持っているので、あなたがCardメソッドを呼び出すためにリフレクションを必要とするのかよく分かりません。 –
計画があるようです。データベースに 'class'の名前だけでなく、コンストラクタの引数とその値の型も格納します。それをどうやって行うのがあなたの練習です。次に、リフレクションを使用して、 'MyCard'のインスタンスを' Card'として作成し、 'Card'インタフェースを介してメソッドを呼び出します。問題は何ですか? –