2012-10-07 58 views
0

我正在尝试制作java沙盘游戏,并且无法通过一点。我已经使我的方法在鼠标X和鼠标Y上绘制了一个矩形,并且我已经设置了它,因此它会更新每一帧,以便它始终跟随鼠标。绘制多个像素/矩形

我认为我会用一个数组来创建每个矩形,并从那里使用一个预定义的算法来漂浮到地面上,我很好,我只是不明白如何'钩我的方法'到数组。

这是我用来绘制矩形(在它自己的类中调用方法)

import org.newdawn.slick.Graphics; 

public class Methods { 

public Graphics g = new Graphics(); 

public int sizeX = 4; 
public int sizeY = 4; 

public void drawParticle(float x, float y){ 
    g.drawRect(x, y, sizeX, sizeY); 
} 
} 

的方法,这是我的主类

import org.newdawn.slick.GameContainer; 
import org.newdawn.slick.Graphics; 
import org.newdawn.slick.SlickException; 
import org.newdawn.slick.state.BasicGameState; 
import org.newdawn.slick.state.StateBasedGame; 

public class Control extends BasicGameState { 
public static final int ID = 1; 

public Methods m = new Methods(); 

int mouseX; 
int mouseY; 

public void init(GameContainer container, StateBasedGame game) throws SlickException{ 
} 

public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException { 
    m.drawParticle(mouseX, mouseY); 
} 

public void update(GameContainer container, StateBasedGame game, int delta) { 
} 

public void mouseReleased(int button, int x, int y){ 
    mouseX = 0; 
    mouseY = 0; 
} 

public void mouseDragged(int oldx, int oldy, int newx, int newy) { 
    mouseX = newx; 
    mouseY = newy; 
} 

public int getID() { 
    return ID; 
} 

} 

但是当我点击,只有一个矩形跟随着鼠标,而不是许多正在鼠标上创建的:L

+0

你的问题是什么? –

+0

我点击时如何创建多个矩形? – user1610541

+0

按照您要创建一个矩形的方式执行,但以循环方式进行。为了更快地获得更好的帮助,请发布当前代码的[SSCCE](http://sscce.org/),并尝试实现所需的行为。 –

回答

0

公共变量:

Rectangle boxes[] = new Rectangle[maxnum]; 
int boxnum = 0; 

在鼠标移动:

boxes[boxnum] = new Rectangle[e.getX(), e.getY(), sizeX, sizeY); 
boxnum = boxnum + 1; 

当绘制你的粒子:

counter = 0; 
do 
{ 
    g.drawRect(boxes[counter].x, boxes[counter].y, sizeX, sizeY); 
    counter = counter + 1; 
} while (counter < maxnum); 

凡MAXNUM是的,你将有框的最大数量。这样,您可以在数组中存储多个矩形,并在更新屏幕时浏览数组并绘制它们。希望这可以帮助。