自己做的一个炸碉堡的小游戏(SWING)

原创
2016/04/09 22:03
阅读数 181

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.*;
class Buttle implements Runnable{
    private int bx=Game.lx;
    private int by=Game.ly;
    private int ox=0;
    private int oy=0;
    private JLabel jLabel3;
    Game g=null;
    int sleep=10;
    public Buttle(Game g){
     this.g=g;
    }
    public Buttle(Game g,int sleep){
     this.g=g;
     this.sleep=sleep;
    }
    boolean judge=false;
 public void run(){
  jLabel3 = new JLabel();
  g.getContentPane().add(jLabel3);
  System.out.println(bx+","+by);
  jLabel3.setText("/u25cf");
  int even=1;
  while(true){//子弹路径
    while(ox!=bx||oy!=by){
   try{
   Thread.sleep(sleep);
   }catch(Exception e){}
   
   if(ox<bx&&even==1){
          jLabel3.setBounds(ox++, oy, 14, 15);
          even=2;
   }else if(ox>bx&&even==1){
    jLabel3.setBounds(ox--, oy, 14, 15);
    even=2;
   }else if(oy<by&&even==2){
    jLabel3.setBounds(ox, oy++, 14, 15);
    even=1;
   }else if(oy>by&&even==2){
    jLabel3.setBounds(ox, oy--, 14, 15);
    even=1;
   }else{
    if(ox<bx){
           jLabel3.setBounds(ox++, oy, 14, 15);
          
    }else if(ox>bx){
     jLabel3.setBounds(ox--, oy, 14, 15);
     
    }else if(oy<by){
     jLabel3.setBounds(ox, oy++, 14, 15);
     
    }else if(oy>by){
     jLabel3.setBounds(ox, oy--, 14, 15);
    }
   }
   if(ox==Game.lx&&oy==Game.ly){
    judge=true;
    JOptionPane.showMessageDialog(g,"游戏结束!","提示框",JOptionPane.WARNING_MESSAGE);
    break;
   }
     }
     if(judge){
      break;
     }
    //子弹重置
    ox=0;
    oy=0;
    bx=Game.lx;
    by=Game.ly;
  }
 }
}
public class Game extends javax.swing.JFrame {
 private JLabel jLabel1;
    public static int lx=399;
    public static int ly=299;
    private JLabel jLabel2;
    //private JLabel jLabel3;
    private int bx=0;
    private JLabel jLabel3;
    private int by=0;
    Buttle bu=new Buttle(this);
    Thread t1=new Thread(bu);
 public static void main(String[] args) {
  SwingUtilities.invokeLater(new Runnable() {
   public void run() {
    Game inst = new Game();
    inst.setLocationRelativeTo(null);
    inst.setVisible(true);
   }
  });
 }
 
 public Game() {
  super("轰炸敌人碉堡!◎");
  initGUI();
 }
 
 private void initGUI() {
  try {
   {
    getContentPane().setLayout(null);
    {
     jLabel1 = new JLabel();
     getContentPane().add(jLabel1);
     jLabel1.setText("/u2605");
     jLabel1.setBounds(lx, ly, 18, 15);//x,y
    }
    {
     jLabel2 = new JLabel();
     getContentPane().add(jLabel2);
     jLabel2.setText("/u25ce");
     jLabel2.setBounds(12, 19, 20, 22);
    }
    {
     jLabel3 = new JLabel();
     getContentPane().add(jLabel3);
     jLabel3.setText("/u25a1/u25a1");
     jLabel3.setBounds(4, 5, 32, 15);
    }
    {
     t1.start();
     
    }
    this.addKeyListener(new KeyAdapter() {
     public void keyPressed(KeyEvent evt) {
      thisKeyPressed(evt);
     }
    });
   }
   this.setSize(460, 343);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 private void thisKeyPressed(KeyEvent evt) {//对应键盘事件控制,w上,s下,a左,d右
  
  int op=evt.getKeyCode();
  System.out.println(op);
  if(op==87){//up
   if(ly-1<300&&ly-1>0){
      jLabel1.setBounds(lx, ly--, 39, 15);//x,y
   }
  }else if(op==83){//down
   if(ly+1<300&&ly+1>0){
       jLabel1.setBounds(lx, ly++, 39, 15);//x,y
   }
  }else if(op==65){//left
   if(lx-1<400&&lx-1>0){
       jLabel1.setBounds(lx--, ly, 39, 15);//x,y
   }
  }else if(op==68){//right
   if(lx+1<400&&lx+1>0){
       jLabel1.setBounds(lx++, ly, 39, 15);//x,y
   }
  }else{}
  if((lx>8&&lx<20)){
   if(ly>15&&ly<22){
   t1.stop();

   JOptionPane.showMessageDialog(this,"成功炸毁碉堡!","提示框",JOptionPane.WARNING_MESSAGE);
   }
  }
 }

}

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
1
分享
返回顶部
顶部