Hi,
bei meinem "Ping Pong-Spiel" funktioniert die Barriere nicht besonders gut.
Wie ihr seht, geht der Ball durch den unteren Balkenrand durch. Anders umgekehrt. Wenn der Balken ziemlich weit unten ist, prallt der Ball trotzdem ab, obwohl dazwischen ca 10-15 Pixel frei sind.
Hier der Quellcode:
Liebe Grüße
Reality
bei meinem "Ping Pong-Spiel" funktioniert die Barriere nicht besonders gut.
Wie ihr seht, geht der Ball durch den unteren Balkenrand durch. Anders umgekehrt. Wenn der Balken ziemlich weit unten ist, prallt der Ball trotzdem ab, obwohl dazwischen ca 10-15 Pixel frei sind.
Hier der Quellcode:
Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class BallDemo extends Applet implements Runnable, KeyListener{
boolean stop = false;
int x_pos = -20;
int y_pos = 100;
int x_pos2 = 5;
int y_pos2 = 150;
int radius = 40;
int x_speed = 2;
public void init()
{
setBackground (Color.blue);
addKeyListener(this);
}
public void start(){
Thread th = new Thread (this);
th.start ();
}
/*public void update(Graphics g){
paint(g);
}*/
public void run ()
{
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while (true)
{
// Neuzeichnen des Applets
repaint();
/*if(x_pos == 418)
x_pos = -20;*/ //Beam me up Scotty
if(x_pos < 0 && stop){
JOptionPane.showMessageDialog(this, "Verloren!");
break;
}
/* 8 ist die Hälfte von der Breite des Balkens. 20 ist die Hälfte des radius (was Höhe und Breite entspricht).
42 ist die Hälfte von der Höhe des Balkens*/
else if(x_pos <= x_pos2 + 8 && y_pos - 20 <= y_pos2 + 42 && y_pos + 20 >= y_pos2 - 42){
x_speed = 2;
}
else if(x_pos == radius && !stop){
x_speed = 2;
stop = true;
}
else if(x_pos == 400 - radius)
x_speed = -2;
x_pos += x_speed;
try
{
Thread.sleep (20);
}
catch (InterruptedException ex)
{
// do nothing
}
// Zurücksetzen der ThreadPriority auf Maximalwert
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void paint (Graphics g)
{
// Setzten der Zeichenfarbe auf Rot
g.setColor (Color.red);
// Zeichen eines gefüllten Kreises
g.fillOval (x_pos, y_pos, radius, radius);
g.fillRect(x_pos2, y_pos2, 16, 84);
}
public void keyPressed(KeyEvent taste){
int i = taste.getKeyCode();
switch(i){
case KeyEvent.VK_DOWN:
y_pos2 += 5;
break;
case KeyEvent.VK_UP:
y_pos2 -= 5;
break;
}
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
}
}
Liebe Grüße
Reality