[Java] 将坦克单独包装成类 →→→→→进入此内容的聊天室

来自 , 2020-12-18, 写在 Java, 查看 123 次.
URL http://www.code666.cn/view/fa1e9c96
  1. import java.awt.*;
  2. import java.awt.event.*;
  3.  
  4. public class TankClient extends Frame {
  5.        
  6.         public static final int GAME_WIDTH=800;
  7.         public static final int GAME_HEIGHT=600;
  8.        
  9.     Tank myTank =new Tank(50,50);
  10.        
  11.         Image offScreenImage = null;
  12.        
  13.         public void paint(Graphics g) {
  14.  
  15.                 myTank.draw(g);//理解一下面向对象
  16.         }
  17.        
  18.         public void update(Graphics g) {
  19.                 if(offScreenImage == null) {
  20.                         offScreenImage = this.createImage(GAME_WIDTH, GAME_WIDTH);
  21.                 }
  22.                 Graphics gOffScreen = offScreenImage.getGraphics();
  23.                 Color c = gOffScreen.getColor();
  24.                 gOffScreen.setColor(Color.GREEN);
  25.                 gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_WIDTH);
  26.                 gOffScreen.setColor(c);
  27.                 paint(gOffScreen);
  28.                 g.drawImage(offScreenImage, 0, 0, null);
  29.         }
  30.  
  31.         public void lauchFrame() {
  32.                 this.setLocation(400, 300);
  33.                 this.setSize(GAME_WIDTH, GAME_WIDTH);
  34.                 this.setTitle("TankWar");
  35.                 this.addWindowListener(new WindowAdapter() {
  36.                         public void windowClosing(WindowEvent e) {
  37.                                 System.exit(0);
  38.                         }
  39.                 });
  40.                 this.setResizable(false);
  41.                 this.setBackground(Color.GREEN);
  42.                
  43.                 this.addKeyListener(new KeyMonitor());
  44.                
  45.                 setVisible(true);              
  46.                 new Thread(new PaintThread()).start();
  47.         }
  48.  
  49.         public static void main(String[] args) {
  50.                 TankClient tc = new TankClient();
  51.                 tc.lauchFrame();
  52.         }
  53.        
  54.         private class PaintThread implements Runnable {
  55.  
  56.                 public void run() {
  57.                         while(true) {
  58.                                 repaint();
  59.                                 try {
  60.                                         Thread.sleep(50);
  61.                                 } catch (InterruptedException e) {
  62.                                         e.printStackTrace();
  63.                                 }
  64.                         }
  65.                 }
  66.         }
  67.  
  68.         private class KeyMonitor  extends KeyAdapter
  69.         {
  70.  
  71.                 public void keyPressed(KeyEvent e) {
  72.  
  73.                         System.out.println("ok");
  74.                        
  75.             myTank.keyPressed(e);
  76.                 }
  77.                
  78.         }
  79.  
  80. }
  81.  
  82.  
  83.  
  84.  
  85. import java.awt.*;
  86. import java.awt.event.*;
  87. public class Tank {
  88.         int x,y;
  89.  
  90.         public Tank(int x, int y) {
  91.                 this.x = x;
  92.                 this.y = y;
  93.         }
  94.  
  95.         public void draw(Graphics g)
  96.         {
  97.                 Color c = g.getColor();
  98.                 g.setColor(Color.RED);
  99.                 g.fillOval(x, y, 30, 30);
  100.                 g.setColor(c);
  101.         }
  102.        
  103.         public void keyPressed(KeyEvent e)
  104.         {
  105.  
  106.                 int key=e.getKeyCode();
  107. //              if(key==KeyEvent.VK_RIGHT)
  108. //              {
  109. //                      x +=5;
  110. //              }
  111.                
  112.                 switch(key)
  113.                 {
  114.                 case KeyEvent.VK_LEFT:
  115.                         x-=5;
  116.                         break;
  117.                 case KeyEvent.VK_UP:
  118.                         y-=5;
  119.                         break;
  120.                 case KeyEvent.VK_RIGHT:
  121.                         x+=5;
  122.                         break;
  123.                 case KeyEvent.VK_DOWN:
  124.                     y+=5;
  125.                     break;
  126.                 }
  127.                
  128.         }
  129. }
  130.  
  131.  
  132.  

回复 "将坦克单独包装成类"

这儿你可以回复上面这条便签

captcha