Java模拟弹球效果(监听键盘)
1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class BallGame extends Frame { 5 6 Image sun = Toolkit.getDefaultToolkit().getImage("sun.jpg"); 7 8 double x=200; 9 double y=200; 10 boolean left,right,up,down; 11 public void paint(Graphics g){ 12 g.drawImage(sun, (int)x, (int)y, null); 13 if(left){ 14 x = x-10; 15 } 16 if(right){ 17 x = x+10; 18 } 19 if(up){ 20 y = y-10; 21 } 22 if(down){ 23 y = y+10; 24 } 25 26 } 27 28 void launchFrame(){ 29 setSize(500,400); 30 setLocation(80, 80); 31 setBackground(Color.black); 32 setTitle("火星十一郎"); 33 myEvent(); 34 setVisible(true); 35 new PaintThread().start(); 36 addKeyListener(new KeyMonitor()); 37 } 38 39 public static void main(String[] args){ 40 new BallGame().launchFrame(); 41 } 42 43 class PaintThread extends Thread { 44 public void run(){ 45 while(true){ 46 repaint(); 47 try { 48 Thread.sleep(40); 49 } catch (InterruptedException e) { 50 e.printStackTrace(); 51 } //1秒=1000毫秒! 52 } 53 } 54 } 55 56 class KeyMonitor extends KeyAdapter { 57 public void keyPressed(KeyEvent e){ 58 if(37==e.getKeyCode()){ 59 left=true; 60 } 61 if(39==e.getKeyCode()){ 62 right = true; 63 } 64 if(38==e.getKeyCode()){ 65 up = true; 66 } 67 if(40==e.getKeyCode()){ 68 down = true; 69 } 70 } 71 72 public void keyReleased(KeyEvent e){ 73 if(37==e.getKeyCode()){ 74 left=false; 75 } 76 if(39==e.getKeyCode()){ 77 right = false; 78 } 79 if(38==e.getKeyCode()){ 80 up = false; 81 } 82 if(40==e.getKeyCode()){ 83 down = false; 84 } 85 } 86 } 87 private void myEvent() 88 { 89 this.addWindowListener(new WindowAdapter()//窗口监听 90 { 91 public void windowClosing(WindowEvent e) 92 { 93 System.exit(0); 94 } 95 }); 96 } 97 }
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.