TankClient.java
上传用户:kikomiki
上传日期:2021-10-31
资源大小:373k
文件大小:2k
源码类别:

游戏

开发平台:

Java

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. public class TankClient extends Frame {
  4. public static final int GAME_WIDTH = 800;
  5. public static final int GAME_HEIGHT = 600;
  6. Tank myTank = new Tank(50, 50);
  7. Missile m = new Missile(50, 50, Tank.Direction.R);
  8. Image offScreenImage = null;
  9. public void paint(Graphics g) {
  10. m.draw(g);
  11. myTank.draw(g);
  12. }
  13. public void update(Graphics g) {
  14. if(offScreenImage == null) {
  15. offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);
  16. }
  17. Graphics gOffScreen = offScreenImage.getGraphics();
  18. Color c = gOffScreen.getColor();
  19. gOffScreen.setColor(Color.GREEN);
  20. gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
  21. gOffScreen.setColor(c);
  22. paint(gOffScreen);
  23. g.drawImage(offScreenImage, 0, 0, null);
  24. }
  25. public void lauchFrame() {
  26. this.setLocation(400, 300);
  27. this.setSize(GAME_WIDTH, GAME_HEIGHT);
  28. this.setTitle("TankWar");
  29. this.addWindowListener(new WindowAdapter() {
  30. public void windowClosing(WindowEvent e) {
  31. System.exit(0);
  32. }
  33. });
  34. this.setResizable(false);
  35. this.setBackground(Color.GREEN);
  36. this.addKeyListener(new KeyMonitor());
  37. setVisible(true);
  38. new Thread(new PaintThread()).start();
  39. }
  40. public static void main(String[] args) {
  41. TankClient tc = new TankClient();
  42. tc.lauchFrame();
  43. }
  44. private class PaintThread implements Runnable {
  45. public void run() {
  46. while(true) {
  47. repaint();
  48. try {
  49. Thread.sleep(50);
  50. } catch (InterruptedException e) {
  51. e.printStackTrace();
  52. }
  53. }
  54. }
  55. }
  56. private class KeyMonitor extends KeyAdapter {
  57. public void keyReleased(KeyEvent e) {
  58. myTank.keyReleased(e);
  59. }
  60. public void keyPressed(KeyEvent e) {
  61. myTank.keyPressed(e);
  62. }
  63. }
  64. }