2

私は現在、Eclipse で小さな Java ゲームに取り組んでおり、数千行のコードにひざまずいています。現在、私は特に文字列の内容を使用して画像を描画しようとしていますが、それが可能かどうか疑問に思っています。もしそうなら、各画像の個々の変数の少なくとも数百行を節約できます。

プログラム全体を貼り付けることは、長さのために逆効果になる可能性が高いため、私が試みていることを示すだけにとどめます。

私がやろうとしていること:

ImageIcon ladder = new ImageIcon (getClass ().getResource ("ladder.png"));
floorContents [currentX] [currentY] = "ladder";

public void paint (Graphics g)
{
     if (floorContents [currentX] [currentY] != "none") // painting item where standing
     {
         floorContents[currentX][currentY].paintIcon (this, g, 0, 0);
     }
}

基本的に、私はプログラムにこの行を表示させようとしています:

floorContents[currentX][currentY].paintIcon (this, g, 0, 0);

このように:

ladder.paintIcon (this, g, 0, 0);

できれば。これにより、各画像アイテムを個別に書き込む必要がなくなります。

4

3 に答える 3

2

Map文字列でキー付けされた各画像を入れます

imageMap.put("ladder", new ImageIcon (getClass ().getResource ("ladder.png")));

//...

imageMap.get(floorContents [currentX] [currentY]).paintIcon (this, g, 0, 0);

もちろん、マップに最初にキーが含まれているかどうか、または返された値が null であるかどうかを確認するには、キーを押す必要があります...

if (imageMap.containsKey(floorContents [currentX] [currentY]) {
    //....
}

ImageIcon image = imageMap.get(floorContents [currentX] [currentY]);
if (image != null) {
    //...
}

しかし、それはあなた次第です

于 2013-02-05T22:35:53.507 に答える
1
 if (floorContents [currentX] [currentY] != "none")

もっと似ているはずです:

 if (!floorContents [currentX] [currentY].equals("none"))

詳細については、Java での文字列比較(および約 500 以上) を参照してください。

于 2013-02-05T22:40:37.950 に答える
1

私は文字列の使用を完全にやめます。「なし」はnull、私が見たことがある場合のコードの匂いです。なぜまったく一致しないのですかString

ImageIcon[][] floorContents;
ImageIcon ladder = new ImageIcon (getClass ().getResource ("ladder.png"));
floorContents[currentX][currentY] = ladder;


public void paint (Graphics g) {
   if (floorContents [currentX] [currentY] != null) {
      floorContents[currentX][currentY].paintIcon (this, g, 0, 0);
   }
}
于 2013-02-05T22:45:07.893 に答える