2012-10-07 2 views
0

Я пытаюсь создать java-песочную игру и не могу пройти мимо бит. Я сделал свой метод, который рисует прямоугольник в mouseX и mouseY, и я установил его, чтобы он обновлял каждый кадр, чтобы он постоянно следовал за мышью.Рисование нескольких пикселей/прямоугольников

что я предполагаю, что я бы использовал массив для создания каждого прямоугольника, а оттуда использовал бы предопределенный алгоритм для плавания на землю, я все в порядке с этим, я просто не понимаю, как «привязать мой метод» до массива.

Это метод я использую, чтобы нарисовать прямоугольник (в его собственных методов класса называется)

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 максимальное количество ящиков вы будете иметь. Таким образом, вы можете хранить несколько прямоугольников в своем массиве и проходить через массив и рисовать их при обновлении экрана. Надеюсь это поможет.

Смежные вопросы