Hallo ich habe ein Problem und zwar flackert mein Programm wenn ich es ausführe.
Ich benutze Windows 7 32-Bit. (Beide Quellcode gehören zueinander)
Quellcode:
Quellcode (Ball):
Ich benutze Windows 7 32-Bit. (Beide Quellcode gehören zueinander)
Quellcode:
Code:
package pingpong;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
/**
*
* @author pmeier
*/
public class PingPong extends JFrame implements Runnable {
private Ball ball = new Ball(100, 150, this);
public PingPong(String title) {
super(title);
}
@Override
public void paint(Graphics gr) {
super.paint(gr);
// Malen
//Hintergrund
gr.drawImage(Toolkit.getDefaultToolkit().getImage("images/background.png"), 0, 0, this);
//Ball
ball.paint(gr);
}
@Override
public void run() {
while(true) {
//Code
//Ball
ball.moveBall();
//Code
repaint();
try {
Thread.sleep(20);
} catch (InterruptedException ex) {
Logger.getLogger(PingPong.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public static void main(String[] args) {
PingPong ping = new PingPong("Mein super cooles Spiel!");
new Thread(ping).start();
ping.setSize(800, 500);
ping.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ping.setVisible(true);
}
}
Quellcode (Ball):
Code:
package pingpong;
import java.awt.Component;
import java.awt.*;
/**
*
* @author pmeier
*/
public class Ball {
private int x, y;
private int velocityX, velocityY;
private Component comp;
public Ball(int x, int y, Component comp) {
this.x = x;
this.y = y;
this.comp = comp;
this.velocityX = 5;
this.velocityY = 5;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void moveBall() {
if(x + 50 > 800) {
velocityX = -5;
}else if(x < 0) {
velocityX = 5;
}
if(y + 50 > 500) {
velocityY = -5;
}else if(y < 0) {
velocityY = 5;
}
x += velocityX;
y += velocityY;
}
public void paint(Graphics gr) {
gr.drawImage(Toolkit.getDefaultToolkit().getImage("images/ball.png"), x, y, comp);
}
}