Frage von Quitti, 19

JLabel (JAVA -> ich blicke nicht mehr durch)?

Hallo, es soll ein Pong spiel werden mit dem Spieler als Label. Jedoch wird das Label einfach nicht angezeigt.,

Kann mir jemand zeigen was ich falsch gemacht habe? (Ich bin ein totaler Anfänger)

1.Klasse

public Pong(){
    super();
    x1=340;
    y1=100;
    breite=20;
    hoehe=80;
    c=Color.RED;    
}

public void setPos (int x1, int y1){
    this.x1=x1;
    this.y1=y1;
    this.setBounds(x1, y1, breite, hoehe);
    this.setOpaque(true);
    this.setBackground(c);

}
public void setGroesse(int breite, int hoehe){
    this.breite=breite;
    this.hoehe=hoehe; 
}

public void setColor(Color c){
    this.c=c; 
}
    public Color c(){
    return c;
}
public int xPos(){
    return x1;
}
public int yPos(){
    return y1;
}
public int breite(){
    return breite;
}
public int hoehe(){
    return hoehe;
}

}

2.Klasse

private JFrame f;
private Ball b;
private Pong p;




public Test(){
    f = new JFrame("=PONG=");
    f.setBounds(0, 0, 1000, 800);

    b = new Ball();
    b.setBounds(0, 0, 1000, 800);

    p = new Pong();     


    b.add(p);
    f.getContentPane().add(b);
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
}           

public void fuehreAus(){
    b.setRadius(10);
    b.setVx(7);
    b.setVy(4);
    p.setColor(Color.RED);
    p.setVisible(true);
    p.setPos(800, 200);
    p.setGroesse(20, 70);
    

    while(true){
        this.abprallen();   
        b.repaint();        
    }
}
private void abprallen(){


    if(b.xPos()<=205){
        b.setVx(-b.vx());

    }else if(b.xPos()>=805){


    }

    if(b.yPos()<=205){
        b.setVy(-b.vy());

    }else if(b.yPos()>=605){
        b.setVy(-b.vy());
    }
    if (b.xPos() >= p.xPos()-2*b.Radius()) {
        b.setVx(-b.vx());   
    }


    b.setPos(b.xPos()+b.vx(),b.yPos()+b.vy());
    try {Thread.sleep(40);} catch (Exception e) {}



}

}

3.Klasse

package pong; import javax.swing.*;

import java.awt.*;

public class Ball extends JPanel{

private int x, y, r;
private int vx;
private int vy;


public Ball(){
    super();

    x=500;
    y=500;
    r=20;
}

public void paintComponent (Graphics g){
    g.setColor(Color.BLACK);
    g.fillRect(0, 0, this.getWidth(), this.getHeight());
    g.setColor(Color.WHITE);
    g.fillOval(x-r, y-r, 2*r, 2*r);
    g.setColor(Color.WHITE);
    g.drawLine(195, 195, 195, 620);
    g.drawLine(195, 195, 800, 195);
    g.drawLine(195, 620, 800, 620);
}

public void setPos (int x, int y){
    this.x=x;   
    this.y=y;
    this.vx=vx;
    this.vy=vy;
}
public void setVx(int vx){
    this.vx=vx;
}
public void setVy(int vy){
    this.vy=vy;
}
public void setRadius(int r){
    this.r=r;
    this.repaint();
}

public int xPos(){
    return x;
}

public int yPos(){
    return y;
}

public int Radius(){
    return r;
}

public int vx(){
    return vx;
}

public int vy(){
    return vy;
}

}

Antwort
von PeterP58, 19

Also SetColor White kannst Du Dir hier einmal sparen - aber daran liegt es nicht.

public void paintComponent (Graphics g){ g.setColor(Color.BLACK); g.fillRect(0, 0, this.getWidth(), this.getHeight()); g.setColor(Color.WHITE); g.fillOval(x-r, y-r, 2*r, 2*r); g.setColor(Color.WHITE); g.drawLine(195, 195, 195, 620); g.drawLine(195, 195, 800, 195); g.drawLine(195, 620, 800, 620); }

Also ich finde zwar den Gegner in deinem Script, aber nicht den Player - und denn suchst Du doch, oder?

Kommentar von Quitti ,

Also die Aufgabe besagt, dass der Spieler ein Label sein soll, der durch einen MouseMotionListener seine y-Position ändern soll.
Der Ball prallt auch von den Wänden ab aber das Problem ist jetzt aber, dass das Label garnicht angezeigt wird :(

Kommentar von PeterP58 ,

Änder mal die Farbe ... und den Titel (eventl. macht das = ein Problem).

Und probiere vor "f.setVisible(true);" die Zeile "f.pack();"

Keine passende Antwort gefunden?

Fragen Sie die Community