Hallo Leute,
könnte sich jemand bitte mein Code anschauen und mir Tipps für das abprallen des Balles vom Schläger geben. Rect hat eine methode die überprüft ob eine berührung mit einem anderen objekt vorliegt aber ich weiß leider net wie ich dies in meinem code umsetzten kann.
Für eure hilfe wär ich sehr dankbar.
Mit freundlichen Grüßen
Jhonny
könnte sich jemand bitte mein Code anschauen und mir Tipps für das abprallen des Balles vom Schläger geben. Rect hat eine methode die überprüft ob eine berührung mit einem anderen objekt vorliegt aber ich weiß leider net wie ich dies in meinem code umsetzten kann.
Für eure hilfe wär ich sehr dankbar.
Java:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class BallApplet extends Applet implements Runnable , KeyListener {
int x_pos = 30;
int y_pos = 100;
int radius = 20;
int x_speed = 10;
int y_speed = 10;
int y_rechteck = 200;
int x_rechteck = 10;
int appletsize_x = 500;
int appletsize_y = 500;
private Graphics dbg;
private Image dbImage;
Object ball;
Object paddel;
public void init(){
this.setSize(appletsize_x,appletsize_y);
setBackground(Color.blue);
addKeyListener(this);
}
public void start(){
// Schaffen eines neuen Threads, in dem das Spiel läuft
Thread th = new Thread (this);
// Starten des Threads
th.start ();
}
public void stop(){
}
public void destroy(){
}
@Override
public void run() {
// Erniedrigen der ThreadPriority
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
// Solange true ist läuft der Thread weiter
while (true)
{
// if(x_pos >appletsize_x+radius){ // X Wand! Bedingungen für Beamen
// x_pos = -20;
// }else if(x_pos <= -radius){
// x_pos = appletsize_x+radius;
// }
// x_pos += x_speed;
//
// if(y_pos >appletsize_y+radius-100){ // Y Wand! Bedingungen für Beamen
// y_pos = -20;
// }else if(y_pos <= -radius){
// y_pos = appletsize_y+radius;
// }
// y_pos += y_speed;
if(x_pos >appletsize_x-radius){ // X Wand! Bedingung für Abprallen
x_speed = -10;
}else if(x_pos <= radius){
x_speed = +10;
}
x_pos += x_speed;
if(y_pos >appletsize_y-radius){ // Y Wand! Bedingung für Abprallen
y_speed = -10;
}else if(y_pos <= radius){
y_speed = +10;
}
y_pos += y_speed;
/////////////////////////////// Abprallen vom dingsdabumsda
// Neuzeichnen des Applets
repaint();
try
{
// Stoppen des Threads für in Klammern angegebene Millisekunden
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){
g.setColor(Color.red);
g.fillOval(x_pos-radius, y_pos-radius, 2*radius, 2*radius);
g.fillRect(x_rechteck, y_rechteck, 15, 100);
}
public void update (Graphics g)
{
// Initialisierung des DoubleBuffers
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// Bildschirm im Hintergrund löschen
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// Auf gelöschten Hintergrund Vordergrund zeichnen
dbg.setColor (getForeground());
paint (dbg);
// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
g.drawImage (dbImage, 0, 0, this);
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode()== KeyEvent.VK_SPACE){
if(x_speed == -1){
x_speed = 1;
}else if(x_speed==1){
x_speed = -1;
}
}
if(e.getKeyCode()== KeyEvent.VK_UP){
y_rechteck= y_rechteck-10;
}
if(e.getKeyCode()== KeyEvent.VK_DOWN){
y_rechteck= y_rechteck+10;
}
if(e.getKeyCode()== KeyEvent.VK_LEFT){
x_rechteck= x_rechteck-10;
}
if(e.getKeyCode()== KeyEvent.VK_RIGHT){
x_rechteck= x_rechteck+10;
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
Mit freundlichen Grüßen
Jhonny