我正在製作一個可以產生巨大柵格的新遊戲(可以說是1000x1000)。玩家從中間開始尋找「積分」。玩家只能看到窗口中較大網格的一部分(15x15)。現在我只有一大堆矩形,每個矩形都繪製了我創建的一個泥土塊的bufferedimage。問題:我應該使用更好的變量類型來存儲所有這些圖像嗎?Java Swing巨大柵格
這是我的污垢類是什麼樣子(持有RECT,並在開始時產生的圖像):
public class Dirt extends Spot{
private int index;
public Dirt(int temp){
index = temp;
}
public Image getImageIndex(){return index;}
}
這裏是除了我Board類的繪製所有污物:
public class Board extends JPanel{
private final int BLOCK_SIZE; //Holds the size of each block
private final int SIZE; //Holds the size of the board
private DirtImages[] imgs_Dirt = new DirtImages[20]; //Holds 20 random dirt images - generated at begtinning
private Spot[][] spots;
public Board(int size, int blocksize){
SIZE = size;
BLOCK_SIZE = blocksize;
//Board
setSize(SIZE,SIZE);
//Timer Label
add(JTimerLabel.getInstance());
//Create 20 random Images of dirt to use for the rest of dirts
for(int i = 0; i < 20; i++){
imgs_Dirt[i] = new DirtImages(new Rectangle(0,0,BLOCK_SIZE,BLOCK_SIZE));
add(imgs_Dirt[i]);
}
//Create Dirt
spots = new Dirt[500][500];
java.util.Random randomGenerator = new java.util.Random();
for(int i = 0; i < spots.length; i++){
for(int j = 0; j < spots.length; j++)
spots[i][j] = new Dirt(randomGenerator.nextInt(20));
}
}
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//Draw Grid #First
for(int i = 0; i < spots.length; i++){
for(int j = 0; j < spots.length; j++)
if(spots[i][j] != null)
g2d.drawImage(imgs_Dirt[((Dirt)spots[i][j]).getImageIndex()].getImage(), BLOCK_SIZE*i,BLOCK_SIZE*j,BLOCK_SIZE,BLOCK_SIZE, null);
}
Toolkit.getDefaultToolkit().sync();
g2d.dispose();
requestFocus();
}
只是爲了澄清。我創建了20個污垢圖像,以便污漬(塗漆時)看起來不像是平鋪的,而是隨機的。所以在我的一系列Dirt中,每個Dirt指向一個隨機圖像。
附加問題:現在我創建了我的巨大網格,我將如何製作它,以便玩家從中心開始繪製周圍的單元格。目前我從數組左上角的數組開始。我應該創建一個布爾標誌爲每個污垢是否應該繪製?
如果是相同的泥土塊,保持一個實例和油漆它與需要的地方。順便說一句 - 對於'JPanel'覆蓋'paintComponent(Graphics)'而不是'paint(Graphics)' – 2012-03-25 15:49:55
http://codereview.stackexchange.com/ – 2012-03-25 15:52:12
或者創建一個JLabel網格並填充ImageIcons - 允許它們在JLabels中共享。 – 2012-03-25 17:32:10