在for循环中绘制图像x次

时间:2014-11-26 16:24:18

标签: java arrays for-loop paint

我正在努力创造我的世界,我将所有的x coords放在一个数组中,并希望使用for循环将其绘制到屏幕上。它会保留27个值,但是,我的问题是我不知道我将填充其余的参数。

public void paint(Graphics2D g2d){
    for(int i = 0; i < blockPlacementX; i++){
        g2d.drawImage(getBlockIMG(), , ,null); //img, x, y, null
    }
}

全班

package com.questkings.game;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;

import javax.swing.ImageIcon;

public class MapLayout {

int[] blockPlacementX = {0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300,
        330, 360, 390, 420, 450, 480, 510, 540, 570, 600, 630, 660, 690, 720,
        750, 780, 810};

int[] blockPlacementY = { };

private Game game;

public MapLayout(Game game){
    this.game=game;
}

//Map size 800(x), 400(y)

public void paint(Graphics2D g2d){
    for(int i = 0; i < blockPlacementX; i++){
        g2d.drawImage(getBlockIMG());
    }
}

public Image getBlockIMG(){
    ImageIcon ic = new  ImageIcon("C:/Users/AncientPandas/Desktop/QuestKings/Misc/Images/Sprites/grassWall.png");
    return ic.getImage();
}

public Rectangle getBoundsBlock(){
    return new Rectangle(0, 345, 810, 1);
}

}

所以我尝试了,但它很快就吸引了它然后就消失了。有什么想法吗?

public void paint(Graphics2D g2d){
    for(int i = 0; i < blockPlacementX[27]; i++){
        g2d.drawImage(getBlockIMG(), blockPlacementX[0]++, blockPlacementY [0], null);
    }
}

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,但是您是否尝试使用预定义的坐标数组沿x轴平铺给定的一组(或单组)图像。

如果你有两个X和Y坐标数组(长度相等),那么通过数组的简单迭代就可以实现如下所示:

public void paint(Graphics2D g2d){
    for(int i = 0; i < blockPlacementX.length; i++){
        g2d.drawImage(getBlockIMG(), blockPlacementX[i], blockPlacementY[i], null);
    }
}

如果您有一个Y坐标,只需将blockPlacementY[i]替换为包含Y坐标的变量。

如果你有不同长度的X和Y坐标数组,你需要弄清楚如何根据一些规则集为每个图像分配坐标。