All pastes #526300 Raw Edit

Someone

public text v1 · immutable
#526300 ·published 2007-05-31 19:16 UTC
rendered paste body
import 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);
    }
    }