1
123fa241
Gast
Hi!
ich will ein Ping-Pong-Spiel machen, jedoch ist es sehr langsam (AMD Phenom II 2x2.8Ghz / ATI Radeon HD 5850):
(Code soll noch keinen spielerischen Zweck erfüllen, soll einfach nur einen pendeldenen Punkt darstellen)
ich will ein Ping-Pong-Spiel machen, jedoch ist es sehr langsam (AMD Phenom II 2x2.8Ghz / ATI Radeon HD 5850):
(Code soll noch keinen spielerischen Zweck erfüllen, soll einfach nur einen pendeldenen Punkt darstellen)
Java:
public class GamePanel extends JPanel implements Runnable {
private ArrayList<FieldObject> objects;
private Barrier topBarrier;
private Barrier rightBarrier;
private Barrier bottomBarrier;
private Barrier leftBarrier;
private Kugel kugel;
private boolean gameRunning = true;
private Thread gameThread;
public GamePanel(Dimension dim) {
objects = new ArrayList<FieldObject>();
setPreferredSize(dim);
topBarrier = new Barrier(new Dimension(500, 10), new Point(0, 0));
rightBarrier = new Barrier(new Dimension(10, 480), new Point(490, 10));
bottomBarrier = new Barrier(new Dimension(500, 10), new Point(0, 490));
leftBarrier = new Barrier(new Dimension(10, 480), new Point(0, 10));
kugel = new Kugel(new Dimension(20, 20), new Point(250, 250));
objects.add(topBarrier);
objects.add(rightBarrier);
objects.add(bottomBarrier);
objects.add(leftBarrier);
gameThread = new Thread(this);
gameThread.start();
}
public FieldObject checkCollision(FieldObject obj1) {
for (FieldObject obj2 : objects) {
if (obj2.isPointInside(obj1.getLocation()) && !obj2.equals(obj1)) return obj2;
}
return null;
}
public void run() {
final int LEFT = 0;
final int RIGHT = 1;
int direction = LEFT;
while (gameRunning) {
if (direction == LEFT) {
kugel.setLocation(new Point(--kugel.getLocation().x, kugel.getLocation().y));
if (checkCollision(kugel) != null) direction = RIGHT;
}
else {
kugel.setLocation(new Point(++kugel.getLocation().x, kugel.getLocation().y));
if (checkCollision(kugel) != null) direction = LEFT;
}
try {
gameThread.sleep(5);
}
catch (Exception exc) {}
repaint();
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawPolygon(topBarrier.getPolygon());
g.fillPolygon(topBarrier.getPolygon());
g.drawPolygon(rightBarrier.getPolygon());
g.fillPolygon(rightBarrier.getPolygon());
g.drawPolygon(bottomBarrier.getPolygon());
g.fillPolygon(bottomBarrier.getPolygon());
g.drawPolygon(leftBarrier.getPolygon());
g.fillPolygon(leftBarrier.getPolygon());
g.setColor(Color.BLUE);
g.fillPolygon(kugel.getPolygon());
}
}
Zuletzt bearbeitet von einem Moderator: