import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class TankClient extends Frame{ int x = 50;
int y = 50;
public static final int GAME_WIDTH = 800;
public static final int GAME_HEIGHT = 600;
public static final int XSPEED = 5;
public static final int YSPEED = 5;

Image offScreen = null;

public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.GREEN);
g.fillOval(x, y, 30, 30);
g.setColor(c);

}    public void update(Graphics g) {
     if(offScreen == null){
     offScreen = this.createImage(GAME_WIDTH, GAME_HEIGHT);
     }
     Graphics goffScreen = offScreen.getGraphics();
     Color c = goffScreen.getColor();
     goffScreen.setColor(Color.BLACK);
     goffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
     g.setColor(c);
     paint(goffScreen);
     g.drawImage(offScreen, 0, 0, null);
    }

public static void main(String[] args) {
TankClient tc = new TankClient();
tc.launch();
}

public void launch() {
setTitle("Tank War!");
setSize(GAME_WIDTH, GAME_HEIGHT);
setLocation(300,150);
setBackground(Color.BLACK);
setResizable(false);
addKeyListener(new MyKey());
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
    });
new Thread(new RPaint()).start();
setVisible(true);
}

private class RPaint implements Runnable { public void run() {
while(true) {
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

private class MyKey extends KeyAdapter {

public void keyPressd(KeyEvent e) {
int key = e.getKeyCode();
switch(key) {
case KeyEvent.VK_UP :
y -= 5;
break;
case KeyEvent.VK_DOWN :
y += 5;
break;
case KeyEvent.VK_LEFT :
x -= 5;
break;
case KeyEvent.VK_RIGHT :
x += 5;
break;
}
}
}
}用键盘控制移动不了,请各位大侠看下怎么回事~谢过了!

解决方案 »

  1.   

    不知道 你是不是看马士兵的视频做的还是其他
    马士兵老师说,初学者重写函数,要去复制函数名
    keyPressd写错了 应该是 keyPressed
      

  2.   

    怎么又看到这个帖子了,哎,lz都说了,自己学会debug
      

  3.   

     private class MyKey extends KeyAdapter {    
            
            public void keyPressd(KeyEvent e) {
                int key = (int)e.getKeyChar();
                switch(key) {
                case KeyEvent.VK_UP :
                    y -= 5;
                    break;
                case KeyEvent.VK_DOWN :
                    y += 5;
                    break;
                case KeyEvent.VK_LEFT :
                    x -= 5;
                    break;
                case KeyEvent.VK_RIGHT :
                    x += 5;
                    break;
      

  4.   

    public void keyPressd(KeyEvent e) {
      int key = (int)e.getKeyChar();  switch(key) {
      case KeyEvent.VK_UP :
      y -= 5;
      break;
      case KeyEvent.VK_DOWN :
      y += 5;
      break;
      case KeyEvent.VK_LEFT :
      x -= 5;
      break;
      case KeyEvent.VK_RIGHT :
      x += 5;
      break;