繁体   English   中英

绘制多个像素/矩形

[英]Drawing multiple pixels/rectangles

我正在尝试制作Java沙盘游戏,无法超越。 我已经制定了在mouseX和mouseY处绘制一个矩形的方法,并且已经对其进行设置,以便它更新每一帧,以便它始终跟随鼠标。

我所假设的是,我将使用数组创建每个矩形,然后从那里使用预定义的算法来浮动到地面上,我对此非常满意,我只是不知道如何“钩住我的方法”到一个数组。

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

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

公共变量:

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是您将拥有的最大盒子数。 这样,您可以在数组中存储多个矩形,并在更新屏幕时遍历数组并绘制它们。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM