所以这就是我的问题我正在做一个基本的平台游戏,其中瓷砖被绘制为地面。图块基本上是一个纹理,在网格中绘制了一个命中框。但我不能多次绘制相同的图像。所以,我只是制作图像变量,还是有更好的方法?
我试过
public void paint(Grapihcs g){
ground.draw(mapX * tilesize, mapY * tilesize);
ground.draw(mapX * tilesize, mapY * tilesize);
}
我尝试过for循环......
public void paint(Grapihcs g){
for(int i = 0; i < 10; i++){
ground.draw(mapX * tilesize, mapY * tilesize);
}
}
似乎没有什么工作......就像它最后一次画画一样。
答案 0 :(得分:0)
您可以根据网格中的值多次绘制同一图像。您可以使用存储在2D阵列中的值来引用另一个1D图像阵列。
说你有一个像:
这样的数组[1, 1, 0, 1, 1]
[1, 1, 0, 1, 1]
包含索引0中的棕色图块和索引1中的绿色图块的一维图像数组。
您将迭代2D数组,并使用存储在每个索引中的值来引用您的一维图像数组,如下所示:
for(int x=0;x<array2D.length;x++){
for(int y=0;y<array2D[0].length;y++){
int pixelX = //calculate x position of this tile image;
int pixelY = //calculate y position of this tile image.
g.drawImage(images[array2D[x][y]],pixelX,pixelY,null);
}
}
编辑:
根据您更新的问题,您不会修改传递给ground.draw
的X和Y坐标。这意味着图像将自我渲染10次。您需要更改渲染图块的X位置。
尝试这样的事情:
int mapYPos = mapY*tileSize;
for(int i=0;i<10;i++){
ground.draw(i*tileSize, mapYPos);
}
在这里,我为X传递[0-10] * tilesize
,并为Y传递相同的值mapYPos
。这将为您提供一个水平条带,从左到右呈现