Hallo ich habe einen Code für das Uraltgame Pong geschrieben und möchte nun, dass man anzeigen lassen kann, wie viele Punkte jeder hat. Wie kann ich also einen Text in ein Rectangle bringen? oder kann ich doch noch irgendwie eine JPanel o.ä. hier "reinschreiben"? Denn ich habe es versucht hab es aber nicht geschafft, da ein JPanel einzufügen.
Der Code:
Der Code:
Java:
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import javax.swing.*;
public final class Example extends JPanel implements Runnable, KeyListener, ActionListener{
private static final long serialVersionUID = 1L;
private static int SPEED = 125;
JFrame frame; //das Fenster
Rectangle bat1; //Spieler 1
Rectangle bat2; // Spieler 2
Rectangle ball; // der Ball
int dx = SPEED; //Bewegungsänderung in x
int dy = SPEED; //Bewegungsänderung in y
long time = 0;
public static void main(String[] args) throws IOException{
new Example();
}
public Example() throws IOException{
frame = new JFrame("Flying Ball");
frame.setSize(800,578);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
bat1 = new Rectangle(370,30,60,10);
bat2 = new Rectangle(370,511,60,10);
ball = new Rectangle(200,200,10,10);
bat1.toString();
setBackground(Color.black);
frame.addKeyListener(this);
frame.setVisible(true);
time = System.nanoTime();
Thread t = new Thread(this);
t.run();
}
public void run() {
while(frame.isVisible()){
moveBall();
checkCollision();
try {
Thread.sleep(26);
} catch (InterruptedException e) {}
repaint(); //Repaint
}
}
private void checkCollision(){
if(bat1.intersects(ball)){
dy *= -1;
}
if(bat2.intersects(ball)){
dy *= -1;
}
}
private void moveBall(){
if(ball.x<0){
dx = SPEED;
}
if(ball.x+ball.width >getWidth()){
dx = -SPEED;
}
if(ball.y<0){
dy = SPEED;
}
if(ball.y+ball.height>getHeight()){
dy = -SPEED;
}
if(ball.y < 25) {
System.out.println("Spieler 1 hat verloren!");
System.out.println("Spieler 2 hat gewonnen! Glückwunsch!");
ball.y = 300;
ball.x = 400;
dx = 0;
dy = 0;
bat1.setLocation(370, 30);
bat2.setLocation(370, 511);
System.out.println("Drücke 'r' um erneut zu spielen.");
}
if(ball.y > 516) {
System.out.println("Spieler 2 hat verloren!");
System.out.println("Spieler 1 hat gewonnen! Glückwunsch!");
ball.y = 300;
ball.x = 400;
dx = 0;
dy = 0;
bat1.setLocation(370, 30);
bat2.setLocation(370, 511);
System.out.println("Drücke 'e' um erneut zu spielen.");
}
long delta = System.nanoTime() - time;
time = System.nanoTime();
ball.x += dx*(delta/1e9);
ball.y += dy*(delta/1e9);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.green);
g.fillRect(bat1.x, bat1.y, bat1.width, bat1.height);
g.setColor(Color.red);
g.fillRect(bat2.x, bat2.y, bat2.width, bat2.height);
g.setColor(Color.blue);
g.fillOval(ball.x, ball.y, ball.width, ball.height);
}
@Override
public void keyTyped(KeyEvent e) {
if (e. getKeyChar()== 'd') {
bat1.getLocation().getX();
int a = (int) bat1.getLocation().getX();
int b = a+10;
if (a +30 > 750) {}
else {
bat1.setLocation(b, 30);
}
}
if (e. getKeyChar()== 'a') {
bat1.getLocation().getX();
int a = (int) bat1.getLocation().getX();
int b = a-10;
if (a-10 < 0) {}
else {
bat1.setLocation(b, 30);
}
}
if (e. getKeyChar()== '4') {
bat2.getLocation().getX();
int a = (int) bat2.getLocation().getX();
int b = a-10;
if (a - 10 < 0) {}
else {
bat2.setLocation(b, 511);
}
}
if (e. getKeyChar()== '6') {
bat2.getLocation().getX();
int a = (int) bat2.getLocation().getX();
int b = a+10;
if (a +30 > 750) {}
else {
bat2.setLocation(b, 511);
}
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void keyPressed(KeyEvent e) {
if (e. getKeyChar() == 'r'){
dx = 125;
dy = 125;
}
if (e. getKeyChar() == 'e'){
dx = -125;
dy = -125;
}
}
}