PaintComponent не будет рисовать - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь создать игру, в которой вам нужно пролететь ракету через пещеру, и если вы попали в стену, ракета рухнет.В целях обнаружения столкновений я решил хранить местоположения CaveWall и местоположения ракет в объектах.Когда я пытаюсь нарисовать линии, основанные на позициях этих объектов, ничего не происходит.Код ниже.

public class Rocket{//this class is the rocket object
private double x,y;
public Rocket(double x, double y) {
    this.x=x;
    this.y=y;
}
public class CaveWalls {//This class is the cavewalls object
private int startx;
private int starty;
private int endx;
private int endy;
public CaveWalls(int startx, int starty, int endx, int endy) {
    this.startx=startx;
    this.starty=starty;
    this.endx=endx;
    this.endy=endy;

}
public class ConfigureWalls extends JComponent{//This class sets the list of cavewalls
private List <CaveWalls> wall=new ArrayList<CaveWalls>();
public void one() {
    CaveWalls wall1=new CaveWalls(0, getHeight()-(getHeight()/6), getWidth()/6, getHeight()-(getHeight()/6));
    CaveWalls wall2=new CaveWalls(getWidth()/6, getHeight()-(getHeight()/6), getWidth()/6, getHeight()-getHeight()/4);
    CaveWalls wall3=new CaveWalls(getWidth()/6, getHeight()-getHeight()/4, getWidth()/6+getWidth()/10, getHeight()-getHeight()/4);
    CaveWalls wall4=new CaveWalls(getWidth()/6+getWidth()/10, getHeight()-getHeight()/4, getWidth()/6+getWidth()/10, getHeight()-getHeight()/12);
    CaveWalls wall5=new CaveWalls(getWidth()/6+getWidth()/10, getHeight()-getHeight()/12, getWidth()/2, getHeight()-getHeight()/12);
    CaveWalls wall6=new CaveWalls(getWidth()/2, getHeight()-getHeight()/12, getWidth()/2, getHeight()-getHeight()/4);
    CaveWalls wall7=new CaveWalls(getWidth()/2, getHeight()-getHeight()/4, getWidth()/3+getWidth()/15, getHeight()-getHeight()/4);
    CaveWalls wall8=new CaveWalls(getWidth()/3+getWidth()/15, getHeight()-getHeight()/4, getWidth()/3+getWidth()/15, getHeight()-getHeight()/3);
    CaveWalls wall9=new CaveWalls(getWidth()/3+getWidth()/15, getHeight()-getHeight()/3, getWidth()/2+getWidth()/7, getHeight()-getHeight()/3);
    CaveWalls wall10=new CaveWalls(getWidth()/2+getWidth()/7, getHeight()-getHeight()/3, getWidth()/2+getWidth()/7, getHeight()-getHeight()/6);
    CaveWalls wall11=new CaveWalls(getWidth()/2+getWidth()/7, getHeight()-getHeight()/6, getWidth()-getWidth()/4 , getHeight()-getHeight()/6);
    CaveWalls wall12=new CaveWalls(getWidth()-getWidth()/4, getHeight()-getHeight()/6, getWidth()-getWidth()/4, getHeight()-getHeight()/4);
    CaveWalls wall13=new CaveWalls(getWidth()-getWidth()/4, getHeight()-getHeight()/4, getWidth()-getWidth()/7,  getHeight()-getHeight()/4);
    CaveWalls wall14=new CaveWalls(getWidth()-getWidth()/7,  getHeight()-getHeight()/4, getWidth()-getWidth()/7, getHeight()-getHeight()/8);
    CaveWalls wall15=new CaveWalls(getWidth()-getWidth()/7, getHeight()-getHeight()/8, getWidth(), getHeight()-getHeight()/8);
    wall.add(wall1);
    wall.add(wall2);
    wall.add(wall3);
    wall.add(wall4);
    wall.add(wall5);
    wall.add(wall6);
    wall.add(wall7);
    wall.add(wall8);
    wall.add(wall9);
    wall.add(wall10);
    wall.add(wall11);
    wall.add(wall12);
    wall.add(wall13);
    wall.add(wall14);
    wall.add(wall15);
}

А это мой уровень 1-го класса с методом рисования компонента

public class Level1 extends JComponent implements KeyListener,ActionListener {
Rocket rocket=new Rocket(getWidth()/12-10, getHeight()-(getHeight()/4)-20);
ConfigureWalls config=new ConfigureWalls();
@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
config.one();
for(int x=0; x<config.getWall().size();x++) {
    g2.drawLine(config.getWall().get(x).getStartx(), config.getWall().get(x).getStarty(), config.getWall().get(x).getEndx(), config.getWall().get(x).getEndy());
}
g.fillOval((int)rocket.getX(), (int)rocket.getY(), 10,10);

}

Вот мой основной, но на JFrame ничего не рисуется

public class Test {

public static void main(String[] args) {
    JFrame frame=new JFrame();
    frame.setSize(1080,720);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Level1 one=new Level1();
    frame.add(one);
    frame.setVisible(true);

}

} * +1010 *

...