Как мне перебрать графику кирпичей, которые я создал? - PullRequest
0 голосов
/ 03 октября 2019

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

Я пробовал несколько разных способов, вызывая метод createBrick (), но это не так. работает. Кто-то может сказать мне, нахожусь ли я на правильном пути или нет? Ниже приведен мой код для моего класса BreakoutPanel.

import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;

public class BreakoutPanel extends JPanel implements ActionListener, KeyListener {

static final long serialVersionUID = 2L;

private boolean gameRunning = true;
private int livesLeft = 3;
private String screenMessage = "";
private Ball ball;
private Paddle paddle;
private Brick[] bricks;
private int xVelocity;

public BreakoutPanel(Breakout game) {

    addKeyListener(this);
    setFocusable(true);

    Timer timer = new Timer(5, this);
    timer.start();

    ball = new Ball();                                                              // Creates ball object with appropriate variable
    paddle = new Paddle();                                                          // Creates paddle object with appropriate variable
    bricks = new Brick [Settings.TOTAL_BRICKS];                                     // Creates brick array

    createBricks(null);                                                             // Call the createBricks() method

}
private void createBricks(Graphics g) {
    int counter = 0;
    int x_space = 0;
    int y_space = 0;
    for(int x = 0; x < 4; x++) {
        for(int y = 0; y < 5; y++) {
            bricks[counter] = new Brick((x * Settings.BRICK_WIDTH) + Settings.BRICK_HORI_PADDING + x_space, (y * Settings.BRICK_HEIGHT) + Settings.BRICK_VERT_PADDING + y_space);
            counter++;
            y_space++;
        }
        x_space++;
        y_space = 0;
    }
}
private void paintBricks(Graphics g) {
    paintComponent(g);
    // TODO: Loop through the bricks and call the paint() method

    paint(g);
}

В результате мне нужно, чтобы моя программа распечатала мои кирпичи, но в данный момент не может понять, как проходить по моим кирпичикам. Извините, если это плохой вопрос, я смотрел на Google и YouTube, но могу найти только те версии программы, в которых они имеют физическое изображение кирпича и фактически не создали его сами. Я надеюсь, что это имеет смысл.

1 Ответ

0 голосов
/ 03 октября 2019

Как я вижу частные кирпичи [] кирпичи;Я предполагаю, что вы просто хотите зациклить массив (именуемый кирпичи) класса Brick.

Тогда просто:

for (int i=0;i< bricks.length;i++)
{

    //do things with bricks[i] as example bricks[i].draw() or myMethod(bricks[i]); ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...