Как мне реализовать ключевой слушатель в случае моего кода? - PullRequest
0 голосов
/ 03 мая 2020
 public class Pong extends JPanel  {

    int x=0;
    int y=0;
    int a;
    int b;

    int border=30;
    boolean balldown=true;
    boolean ballright=true;
    int bounce=0;

    private void moveBall(){
        if (balldown==true){
            y++; 
            bounce++;
        }

        if (balldown==false){
            y--;
            bounce++;
        }

        if(y==getHeight()-border){
            balldown=false;
            bounce++;
        }

        if(y==0){
            balldown=true;
            bounce++;
        }

        if (ballright==true){
            x++;          
        }

        if (ballright==false){
            x--;
            bounce++;
        }

        if(x==getWidth()-30){
            ballright=false;
            bounce++;
        }
        if(x==0){
            ballright=true;
            bounce++;
        }   
    }

    @Override
    public void paint(Graphics g){

        super.paint(g);

        g.setColor(Color.BLACK);
        g.fillRect(0, 0, 1080, 760);

        g.setColor(Color.WHITE);
        g.fillOval(x, y, 30, 30);

        g.setColor(Color.WHITE);
        g.fillRect(0, a, 30, 200);

        g.setColor(Color.WHITE);
        g.fillRect(980, b, 30, 200);

        g.fillRect(520, 0, 10, 760);
    }

    public  Pong() implements KeyListener {

     void keyPressed(KeyEvent e) {

        int key = e.getKeyCode();

        if (key == KeyEvent.VK_UP) {
            a += 10;
            System.out.println("++++");
            return;
        }

        if (key == KeyEvent.VK_DOWN) {
            a -= 10;

        }
    }

}
public static void main(String[] args) throws InterruptedException {

    JFrame frame = new JFrame("Pong");
    frame.setSize(1024,760);
    frame.setVisible(true);
   // frame.createBufferStrategy(3);
    //BufferStrategy strategy=frame.getBufferStrategy();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Pong game=new Pong();
    frame.add(game);

    while(true){
        game.moveBall();
        game.repaint();
         Thread.sleep(1);
   }
 }

}

Я новичок в jAVA Я хочу реализовать keylistener, который изменит координаты 2 прямоугольников, но я не могу заставить его работать. Я получаю ошибку компиляции с надписью «ожидается» в классе, который реализует KeyListener. Я знаю, что означает ошибка, я не знаю, как ее решить в этом случае

1 Ответ

0 голосов
/ 03 мая 2020

Похоже, что вы поместили «Implements KeyListener» в конструктор Pong. Переместите агрегаты в объявление класса и извлеките код KeyListener / keyPressed из конструктора Pong ()

public class Pong extends JPanel implements KeyListener

...