Я развиваю игру в java только для удовольствия. Это игра, играющая в мяч, что-то вроде.Разрыв кирпича с цепной реакцией
Вот уровень, когда мяч попадет в один из кирпичей оранжевого я хотел бы, чтобы создать цепную реакцию, чтобы взорвать все другие кирпичи, которые не серые (небьющийся) и находятся в пределах досягаемости кирпича взорван.
Таким образом, он будет очищать все на этом уровне без серых кирпичей.
Я думаю, что я должен спросить кирпич, который взорвался для других кирпичей, к LEFT, RIGHT, UP и DOWN этого кирпича, затем начать тот же процесс с этими ячейками.
// Примечание для себя: читать на Перечисления и Список
Когда взрывчатое клетка ударил с мячом он называет explodeMyAdjecentCells();
// Это в классе Cell
public void explodeMyAdjecentCells() {
exploded = true;
ballGame.breakCell(x, y, imageURL[thickness - 1][0]);
cellBlocks.explodeCell(getX() - getWidth(),getY());
cellBlocks.explodeCell(getX() + getWidth(),getY());
cellBlocks.explodeCell(getX(),getY() - getHeight());
cellBlocks.explodeCell(getX(),getY() + getHeight());
remove();
ballGame.playSound("src\\ballgame\\Sound\\cellBrakes.wav", 100.0f, 0.0f, false, 0.0d);
}
// Это CellHandler -> (CellBlocks)
public void explodeCell(int _X, int _Y) {
for(int c = 0; c < cells.length; c++){
if(cells[c] != null && !cells[c].hasExploded()) {
if(cells[c].getX() == _X && cells[c].getY() == _Y) {
int type = cells[c].getThickness();
if(type != 7 && type != 6 && type != 2) {
cells[c].explodeMyAdjecentCells();
}
}
}
}
}
Он успешно удаляет мои все соседние клетки,
Но в методе explodeMyAdjecentCells() у меня есть эта строка кода
ballGame.breakCell(x, y, imageURL[thickness - 1][0]);
//
Эта строка сообщает ParticleHandler о создании 25 небольших изображений (частиц) взорванной ячейки.
Жесткие все мои клетки удалены, частицы частицы не создают частицы для всех удаленных ячеек.
Проблема была решена youst сейчас, его действительно глупо. Я установил particleHandler, чтобы создать максимум 1500 частиц. Мой бог, как я этого не видел!
private int particleCellsMax = 1500;
private int particleCellsMax = 2500;
ТНХ для всех помощи людям, я буду загружать исходный код для создания youst частиц для удовольствия, если кто нуждается в этом.
Исходный код для разделения изображения на части была взята из: Kalani's Tech Blog
// Particle Handler
public void breakCell(int _X, int _Y, String URL) {
File file = new File(URL);
try {
FileInputStream fis = new FileInputStream(file);
BufferedImage image = ImageIO.read(fis);
int rows = 5;
int colums = 5;
int parts = rows * colums;
int partWidth = image.getWidth()/colums;
int partHeight = image.getHeight()/rows;
int count = 0;
BufferedImage imgs[] = new BufferedImage[parts];
for(int x = 0; x < colums; x++) {
for(int y = 0; y < rows; y++) {
imgs[count] = new BufferedImage(partWidth, partHeight, image.getType());
Graphics2D g = imgs[count++].createGraphics();
g.drawImage(image, 0, 0, partWidth, partHeight, partWidth * y, partHeight * x, partWidth * y + partWidth, partHeight * x + partHeight, null);
g.dispose();
}
}
int numParts = imgs.length;
int c = 0;
for(int iy = 0; iy < rows; iy ++) {
for(int ix = 0; ix < colums; ix++) {
if(c < numParts) {
Image imagePart = Toolkit.getDefaultToolkit().createImage(imgs[c].getSource());
createCellPart(_X + ((image.getWidth()/colums) * ix), _Y + ((image.getHeight()/rows) * iy), c, imagePart);
c++;
} else {
break;
}
}
}
} catch(IOException io) {}
}
Спасибо, я понимаю, что перечисления - лучший способ пойти. Жесткий, у меня мало опыта работы с Enums и с помощью List, я должен был бы прочитать об этом. Я немного переписал свой код (вид сверху) и проблема, с которой я все время сталкиваюсь, заключается в том, что все ячейки удаляются, но не все удаляются с эффектом (обработчик частиц) .. вы бы так чтобы просмотреть обновленный код. thx –
Отлично! Я рад, что вы это поняли. – JohnnyK