//何勇 2009-5-9 坦克打子弹
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PaintFrame extends Frame
{
//x和y是左上角坐标
int dir=1,x1=200,y1=455,x2=210,y2=460,x3=190,y3=450,x4=220,y4=450,x5=205,y5=430,x6=210,y6=435;
int bulletX=100,bulletY=100;
boolean Thebullet=false;
public void paint(Graphics gr)
{
gr.setColor(Color.white);
gr.fillRect(0,0,this.getWidth(),this.getHeight());
if(Thebullet==true){
gr.setColor(Color.blue);
gr.fillOval(bulletX-5, bulletY-5, 10, 10);
}
if(dir==1) {
gr.setColor(Color.black);//设画图颜色
gr.fillRect(x1,y1,20,20);//用当前颜色,添充矩形
gr.drawLine(x2,y2,x6,y6);
gr.fillOval(x3,y3,10,30);
gr.fillOval(x4,y4,10,30);
gr.fillOval(x5,y5,10,10);
}
if(dir==2) {
gr.setColor(Color.black);//设画图颜色
gr.fillRect(x1,y1,20,20);//用当前颜色,添充矩形
gr.drawLine(x2,y2+40,x6,y6+20);
gr.fillOval(x3,y3,10,30);
gr.fillOval(x4,y4,10,30);
gr.fillOval(x5,y5+60,10,10);
}
if(dir==3) {
gr.setColor(Color.black);//设画图颜色
gr.fillRect(x1,y1,20,20);//用当前颜色,添充矩形
gr.drawLine(x2+10,y2+5,x6+30,y6+30);
gr.fillOval(x3+5,y3-5,30,10);
gr.fillOval(x4-25,y4+25,30,10);
gr.fillOval(x5+30,y5+30,10,10);
}
if(dir==4) {
gr.setColor(Color.black);//设画图颜色
gr.fillRect(x1,y1,20,20);//用当前颜色,添充矩形
gr.drawLine(x2+10-40,y2+5,x6+30-20,y6+30);
gr.fillOval(x3+5,y3-5,30,10);
gr.fillOval(x4-25,y4+25,30,10);
gr.fillOval(x5-30,y5+30,10,10);
}
}
class MyThread extends Thread implements Runnable{
int dir;
public MyThread(int dir){
this.dir=dir;
}
public void run(){
try{
while(true){
if(bulletX<0||bulletX>500||bulletY<0||bulletY>500){
Thebullet=false;break;
}
else{
if(dir==1)bulletY=bulletY-6;
if(dir==2)bulletY=bulletY+6;
if(dir==3)bulletX=bulletX+6;
if(dir==4)bulletX=bulletX-6;
repaint();
}
Thread.sleep(8);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
PaintFrame frm=new PaintFrame();
frm.setSize(500,500);
frm.setLocation(360, 200);
frm.show();
}
public PaintFrame()
{
class KClass implements KeyListener
{
public void keyPressed(KeyEvent e)
{
switch(e.getKeyChar())
{
case 'w':dir=1;y1=y1-2;y2=y2-2;y3=y3-2;y4=y4-2;y5=y5-2;y6=y6-2;break;
case 's':dir=2;y1=y1+2;y2=y2+2;y3=y3+2;y4=y4+2;y5=y5+2;y6=y6+2;break;
case 'd':dir=3;x1=x1+2;x2=x2+2;x3=x3+2;x4=x4+2;x5=x5+2;x6=x6+2;break;
case 'a':dir=4;x1=x1-2;x2=x2-2;x3=x3-2;x4=x4-2;x5=x5-2;x6=x6-2;break;
case 'j':
case ' ':
Thread.interrupted();
if(dir==1){bulletX=x5+5;bulletY=y5+5;}
if(dir==2){bulletX=x5+5;bulletY=y5+60-5;}
if(dir==3){bulletX=x5+30;bulletY=y5+30+5;}
if(dir==4){bulletX=x5-30+5;bulletY=y5+30+5;}
Thebullet=true;
Thread thread01=new Thread(new MyThread(dir));
thread01.start();
}
repaint();//重画窗体
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
}
class wclass implements WindowListener
{
public void windowClosing(WindowEvent e){
if (e.getID()==e.WINDOW_CLOSING) {
int selection=JOptionPane.showConfirmDialog(null,"确实要退出程序吗?","退出",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(selection==JOptionPane.YES_OPTION)
System.exit(0);
}
}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
}
this.addKeyListener(new KClass());
this.addWindowListener(new wclass());
}
}