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