rendered paste bodyimport java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Tennisbana extends JPanel implements ActionListener{
private Timer klocka = new Timer (10, this);
private JLabel visaPoäng;
private int poäng;
private int xMax;
private int yMax;
private int radie;
private int x;
private int y;
private int vx;
private int vy;
private int xSteg;
private int ySteg;
private int racket;
private int längdR;
private int stegR;
public Tennisbana(){
setPreferredSize(new Dimension(300, 400));
setBackgroundcolor(Color.red);
}
public void start (JLabel p){
visapoäng = p;
xMax = getSize ().width;
yMax = getSize().height;
radie = 15;
längdR = 40;
stegR= 15;
nollställ();
//Kommando från tangentbord
addKeyListener (new KeyAdapter(){
public void keyPressed(KeyEvent e){
if (e.getKeyCode() == KeyEvent.VK_LEFT){
racket = Math.max(0, racket-stegR);
}
else if (e.getKeyCode() == KeyEvent.VK_RIGHT){
racket = Math.min(xMax-längdR, racket+stegR);
}
}
});
//Stroleksändringar
addComponentListener(new ComponentAdapter(){
public void componentResized(ComponentEvent e){
xMax = e.getComponent().getSize().width;
yMax = e.getComponent().getSize().height;
e.getComponent().requestFocus();
repaint();
}
});
}
private void nollställ(){
poäng = 0;
visaPoäng.setText(" 0");
xSteg = vx = 5;
ySteg = vy = 5;
x = xMax/2;
y = radie+2;
racket = xMax/2-längdR/2;
}
public void startaSpel(){
if (poäng < 10){
klocka.start();
}
}
public void stoppaSpel(){
klocka.stop();
}
public void nyttSpel(){
stoppaSpel();
nollställ();
startaSpel();
}
//anropas av timern
public void actionPerformed(ActionEvent e){
if ( y+radie >= yMax-4){
if (x < racket || x > racket+längdR){
Toolkit.getDefaultToolkit().beep();
visaPoäng.setText(String.valueOf(++poäng));
if (poäng >= 1+){
stoppaSpel();
}
}
else if (xSteg >0){
xSteg++;
vy++;
}
else{
xSteg--;
vy++;
}
ySteg = -vy;
}
else if (y-radie <= 0){
ySteg = vy;
}
if (x-radie<=0 || x+radie>=xMax){
xSteg = -xSteg;
}
x += xSteg;
y += ySteg;
if (y < radie){
y = radie;
}
else if (x > xMax-radie){
x = xMax-radie;
}
repaint();
}
// Boll och racket
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.yellow);
g.fillOval(x-radie, y-radie, 2*radie, 2*radie);
g.setColor(Color.yellow);
g.fillRect(racket, yMax-4,längdR, yMax);
}
}