2017-03-22 40 views
1

私はビデオの助けを借りてbrickBreakerゲームを作ろうとしていますが、私がコンパイルするとコードの最後にKeyEventを含む私の空白にエラーが発生します。はシンボルクラスKeyEventを見つけることができません

次のように私はエラーを取得する:

は、シンボル・クラスのKeyEventを見つけることができません。

package brickBreaker; 
import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Rectangle; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent.*; 
import java.awt.event.KeyListener; 
import java.util.Timer; 
import javax.swing.JPanel; 
public class Gameplay extends JPanel implements KeyListener, ActionListener{ 
private boolean play = false; 
private int score = 0; 

private int totalBricks = 21; 

private Timer time; 
private int delay = 8; 

private int playerX = 310; 

private int ballposX = 120; 
private int ballposY = 350; 
private int balldirX = -1; 
private int balldirY = -2; 

private MapGenerator map; 

public Gameplay(){ 
    map = new MapGenerator(3, 7); 
    addKeyListener(this); 
    addActionListener(this); 
    setFocusable(true); 
    setFocusTraversalKeysEnabled(false); 
    // timer = new Timer(delay, this); 
    // timer.start(); 
} 

public void paint(Graphics g){ 
    //background 
    g.setColor(Color.black); 
    g.fillRect(1,1, 692, 592); 

    //Drawing map 
    map.draw((Graphics2D)g); 

    //borders 
    g.setColor(Color.yellow); 
    g.fillRect(0,0,3,592); 
    g.fillRect(0,0,692,3); 
    g.fillRect(691, 0, 3, 592); 

    //the paddle 
    g.setColor(Color.green); 
    g.fillRect(playerX, 550, 100, 8); 

    //the ball 
    g.setColor(Color.yellow); 
    g.fillOval(ballposX, ballposY, 20, 20); 

    g.dispose(); 
} 

@Override 
public void actionPerformed(ActionEvent e){ 
    timer.start(); 

    if(play){ 
     if(new Rectangle(ballposX, ballposY, 20, 20).intersects(new Rectangle(playerX, 550, 100, 8))){ 
      balldirY = -balldirY; 
     } 

     A: for(int i = 0; i < map.map.length; i++){ 
      for(int j = 0; j<map.map[0].length; j++){ 
       if(map.map[i][j] > 0){ 
        int brickX = j* map.brickwidth + 80; 
        int brickY = i * map.brickheight +50; 
        int brickwidth = map.brickwidth; 
        int brickheight = map.brickheight; 

        Rectangle rect = new Rectangle(brickX, brickY, brickwidth, brickheight); 
        Rectangle ballRect= new Rectangle(ballposX, ballposY, 20, 20); 
        Rectangle brickRect = rect; 

        if(ballRect.intersects(brickRect)){ 
         map.setBrickValue(0, i, j); 
         totalBricks--; 
         score += 5; 

         if(ballposX + 1 <= brickRect.x || ballposX+1 >= brickRect.x+brickRect.width){ 
          balldirX = -balldirX; 
         } else{ 
          balldirY = -balldirY; 
         } 
         break A; 
        } 
       } 
      } 
     } 

     ballposX += balldirX; 
     ballposY+= balldirY; 
     if(ballposX < 0){ 
      balldirX = -balldirX; 
     } 
     if(ballposY < 0){ 
      balldirY = -balldirY; 
     } 
     if(ballposX > 670){ 
      balldirX = -balldirX; 
     } 
    } 

    repaint(); 
} 
@Override 
public void keyPressed(KeyEvent e){ 
    if(e.getKeyCode() == KeyEvent.VK_RIGHT){ 
     if(playerX >= 600){ 
      playerX = 600; 
     } else{ 
      moveRight(); 
     } 
    } 
    if(e.getKeyCode() == KeyEvent.VK_LEFT){ 
     if(playerX >= 10){ 
      playerX = 10; 
     } else{ 
      moveLeft(); 
     } 
    } 
} 
public void moveRight(){ 
    play = true; 
    playerX+=20; 
} 

public void moveLeft(){ 
    play = true; 
    playerX-=20; 
} 

} 
+0

なぜ 'import static'ですか? –

+0

インポートJava。awt。イベント。KeyEvent; –

+0

@Scary Wombat静的なことは私が気付かなかった間違いでした。私は間違いを与えなかったので、それは見えなくなったと思います。私はそれを削除しましたが、それでも私には同じエラーが表示されます。 –

答えて

0

変更このimport java.awt.event.KeyEvent;このラインimport java.awt.event.KeyEvent.*;

EDIT

あなたは、彼らがKeyListenerインタフェースの一部であるとして、同様にこれらの2つのメソッドを実装する必要があります。

@Override 
public void keyReleased(KeyEvent arg0) { 
    // TODO 
} 

@Override 
public void keyTyped(KeyEvent arg0) { 
    // TODO 
} 
+0

私はそれを試しましたが、brickBreaker.Gameplayは抽象メソッドではなく、java.awt.event.KeyListenerの抽象メソッドkeyReleased(java.awt.event.KeyEvent)をオーバーライドしません。 –

+0

はい、すべてのKeyListener ''の方法。あなたは 'keyPressed(KeyEvent e)'だけを実装しています。 import文はこのエラーのみを修正します** symbol-class KeyEvent **を見つけることができません。 – ahoxha

+0

それでは、私が得ている2番目のエラーを修正する方法と、keyPressed(KeyEvent e)だけでなく、必要なものをすべて実装する方法 –

関連する問題