Hallo liebe java-forum- community,
aufregung! mein erster Beitrag
zu meinem problem: ich bin gerade dabei ein simples pingpong zu programmieren.
dazu habe folgende Klassen: Display, Ball und die Panels
Mein Problem ist nun, dass ich in der Displayklasse voher folgende Zeile hatte:
g.drawImage(ball, ( PingPong.getXSIZE() / 2 ) - ball.getWidth() , ( PingPong.getYSIZE() / 2 ) - ball.getHeight() , null);
welches mir den ball in der Mitte des spielfeldes angezeigt hatte.
da ich aber für die bewegung des Balls mit xpos und ypos klar machen möchte, wurde
folgende Zeile draus: g.drawImage(ball, ball.xpos, ball.ypos, null);
Nun die panels werden noch angezeigt. der Ball allerdings nicht. Auch eine Ausgabe von ball.xpos und ball.ypos ergibt sinnvolle werte.
hat jemand ne idee woran es liegen könnte, dass die XY-Werte in ordnung sind aber der ball dennnoch nicht gezeichnet wird?
mfg dichter
Klasse Ball
aufregung! mein erster Beitrag
zu meinem problem: ich bin gerade dabei ein simples pingpong zu programmieren.
dazu habe folgende Klassen: Display, Ball und die Panels
Mein Problem ist nun, dass ich in der Displayklasse voher folgende Zeile hatte:
g.drawImage(ball, ( PingPong.getXSIZE() / 2 ) - ball.getWidth() , ( PingPong.getYSIZE() / 2 ) - ball.getHeight() , null);
welches mir den ball in der Mitte des spielfeldes angezeigt hatte.
da ich aber für die bewegung des Balls mit xpos und ypos klar machen möchte, wurde
folgende Zeile draus: g.drawImage(ball, ball.xpos, ball.ypos, null);
Nun die panels werden noch angezeigt. der Ball allerdings nicht. Auch eine Ausgabe von ball.xpos und ball.ypos ergibt sinnvolle werte.
hat jemand ne idee woran es liegen könnte, dass die XY-Werte in ordnung sind aber der ball dennnoch nicht gezeichnet wird?
mfg dichter
Java:
import java.awt.Graphics;
import javax.swing.JPanel;
public class Display extends JPanel{
Ball ball;
Panel panel_player1, panel_player2;
public Display(){
ball = new Ball();
panel_player1 = new Panel();
panel_player2 = new Panel();
}
public void paintComponent(Graphics g){
//Spielfläche
g.drawRect(0, 0, PingPong.getXSIZE() - 1 , PingPong.getYSIZE() - 1 );
//Ball
g.drawImage(ball, ball.xpos, ball.ypos, null);
System.out.println(ball.xpos + " " + ball.ypos);
//Panels
g.drawImage(panel_player1, 0 , ( PingPong.getYSIZE() / 2 ) - panel_player1.getHeight() , null);
g.drawImage(panel_player2, PingPong.getXSIZE() - panel_player1.getWidth(), (PingPong.getYSIZE() / 2 ) - panel_player2.getHeight() , null);
}
Klasse Ball
Java:
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Ball extends BufferedImage {
public int xpos = 0, ypos = 0;
public int speed = 3;
public Ball() {
super(48, 47, BufferedImage.TYPE_INT_ARGB);
xpos = ( PingPong.getXSIZE() / 2 ) - this.getWidth();
ypos = ( PingPong.getYSIZE() / 2 ) - this.getHeight();
try {
ImageIO.read(getClass().getResource("ball.png") );
//weiß transparent machen
for (int i = 0; i < getWidth() ; i++) {
for (int j = 0; j < getHeight(); j++) {
int rgb = getRGB(i, j);
int alpha = (rgb & 0xFF000000) >>> 24;
int red = (rgb & 0x00FF0000) >>> 16;
int green = (rgb & 0x0000FF00) >>> 8;
int blue = (rgb & 0x000000FF) >>> 0;
if (red == 255 && green == 255 && blue == 255) {
int new_rgb = (0 << 24) | (red << 16) | (green << 8) | blue;
setRGB(i, j, new_rgb);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}