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

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); } } } }

你可能感兴趣的:(thread,游戏,exception,swing,null,Class)