3

私は学校のプロジェクト用のゲームを作成しています。PiecesandPowersという2つのクラスがあり、サブクラスはPiece_Yellow、Piece_Blue ...、Power_Explode、Power_ChangeColorなどです。

私は列挙型でそれを行っていましたが、このWebサイトの誰か(より正確にはmikera)がそれを変更し、ピースとパワーとのより良い相互作用を作成するのを手伝ってくれました。

しかし今、私は古いコードを変更する必要があります、そして私はこのようにやっていたのでそれで問題があります:

int x = 10, y = 5;
for (int i=0; i<10; i++) {
    if (pecas[x][y] == null)
        pecas[x][y] = new Piece(arrayPecas.get(rand.nextInt(arrayPecas.size())));
}

このように、私の配列は部分的に異なる色のオブジェクトで10個の新しいピースで満たされ(ただし、パワーがないため、問題でした)、すべてのオブジェクトに異なるハッシュコードがありました(後でピースを検索、比較、削除するため)...

しかし、抽象クラスを初期化することはできないので、この問題に対して私が見つけた唯一の解決策は、これを行うことでした:

int x = 10, y = 5;
for (int i=0; i<10; i++) {
    if (pecas[x][y] == null)
        pecas[x][y] = arrayPecas.get(rand.nextInt(arrayPecas.size()));
}

このようにオブジェクトはまだ追加されていますが、1つの問題があります:1-同じ色のピースからのすべてのハッシュコードは同じです...これを解決する方法が本当にわかりません。ハッシュコードメソッドをオーバーライドできることを読みましたが、それらを区別するための情報がありません(そして、ピースが位置を変更するたびに位置を変更する必要があったため、位置を保存できません)。

4

1 に答える 1