0

私はJavaサンドゲームを作ろうとしていますが、1ビットを超えることができません。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;
}

}

しかし、クリックすると、マウスで多くの長方形が作成されるのではなく、1つの長方形だけがマウスの後に続きます:L

4

1 に答える 1

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 は、所有するボックスの最大数です。このようにして、配列に複数の長方形を保存し、配列を調べて、画面を更新するときにそれらを描画できます。お役に立てれば。

于 2012-10-08T02:57:41.567 に答える