import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.Serializable;
/**
* @ProjectName TankClient
* @ClassName TankClient
* @Desicription TODO
* @Author Zhang Xueliang
* @Date 2019/10/25 13:39
* @Version 1.0
**/
public class TankClient extends Frame {
public static final int GAME_WITH=800;
public static final int GAME_HEIGHT=600;
int x=50,y=50;
Image offScreenImage=null;
public void paint(Graphics g){
Color c= g.getColor();
g.setColor(Color.RED);
g.fillOval(x,y,30,30);
g.setColor(c);
// y+=5;
}
//解决坦克闪烁
public void update(Graphics g){
if (offScreenImage==null){
offScreenImage=this.createImage(GAME_WITH,GAME_HEIGHT);
}
Graphics gOffScreen = offScreenImage.getGraphics();
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.GREEN);
gOffScreen.fillRect(0,0,GAME_WITH,GAME_HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage,0,0,null);
}
public void lauchFrame(){
this.setLocation(400,300);
this.setSize(GAME_WITH,GAME_HEIGHT);
this.setTitle("TankWar");
this.addWindowListener(new WindowAdapter() {//关闭窗口
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setResizable(false);//不让改变窗口大小
this.setBackground(Color.GREEN);//设置背景颜色为绿色
setVisible(true);
new Thread(new PaintThread()).start();
this.addKeyListener(new KeyMonitor());
}
public static void main(String[] args) {
TankClient tc = new TankClient();
tc.lauchFrame();
}
//让坦克动起来
private class PaintThread implements Runnable{
@Override
public void run() {
while (true){
repaint();//重画一次
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//键盘控制坦克移动
private class KeyMonitor extends KeyAdapter{
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
switch (key){
case KeyEvent.VK_LEFT:
x-=5;
break;
case KeyEvent.VK_UP:
y-=5;
break;
case KeyEvent.VK_RIGHT:
x+=5;
break;
case KeyEvent.VK_DOWN:
y+=5;
break;
}
}
}
}