dq37281757
@dq37281757 (dq37281757)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

画像データの等値判定

Q&A

Closed

解決したいこと

ファミコンゲームの背景画像の中から、16×16のマップチップを左上から順に切り取っていって、HashSetに格納するプログラムを書こうと思っています。等値なマップチップは被らないようにして格納したいのですが、どうすればいいでしょうか。

自分で試したこと

Imageクラスを継承したMapchipクラスにhashCodeメソッドとequalsメソッドをオーバーライドしました。

止まっているところ

Image back = new Image("背景画像.png");
int column = (int) back.getWidth / 16;
int row = (int) back.getHeight / 16;
Set<Mapchip> set = new HashSet<Mapchip>();
for(int i=0;i<row;i++){
    for(int j=0;j<column;j++){
        Mapchip mapchip = new WritableImage(back.getPixelReader(),j*16,i*16,16,16);    //ここでエラーが出る
        set.add(mapchip);
    }
}

「WritableImageからMapchipに変換できません」というエラーメッセージが出ます。

0

1Answer

WritableImageImageを継承したクラスのため,親子関係に無いMapchipにはキャストできません.
特段の事情がなければ,MapchipWritableImageを継承して,コンストラクタを使用しているところもMapchipに置き換えれば理論上はOKです.

1Like

Comments

  1. @dq37281757

    Questioner

    教えて頂いた通りに書くと上手くいきました。ありがとうございました!

Your answer might help someone💌