PlaneFrame.java
上传用户:xueping400
上传日期:2022-02-08
资源大小:888k
文件大小:3k
源码类别:

Applet

开发平台:

Java

  1. import java.awt.Color;
  2. import java.awt.Dimension;
  3. import java.awt.Frame;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.Toolkit;
  7. import java.awt.event.KeyAdapter;
  8. import java.awt.event.KeyEvent;
  9. import java.awt.event.WindowAdapter;
  10. import java.awt.event.WindowEvent;
  11. import java.io.File;
  12. import java.io.IOException;
  13. import java.util.ArrayList;
  14. import javax.imageio.ImageIO;
  15. public class PlaneFrame extends Frame {
  16. static final int WINDOW_WIDTH =700;
  17. static final int WINDOW_HEIGHT = 800;
  18. private Plane plane;
  19. private Image bufImage;
  20. public static ArrayList<Shell> shell = new ArrayList<Shell>();
  21. public void update(Graphics g) {
  22. if(bufImage == null){
  23. bufImage = this.createImage(PlaneFrame.WINDOW_WIDTH, PlaneFrame.WINDOW_HEIGHT);
  24. }
  25. Graphics gBuf = bufImage.getGraphics();
  26. Color clr = gBuf.getColor();
  27. paint(gBuf);//         第二步:调用paint方法
  28. gBuf.setColor(clr);
  29. clr = g.getColor();
  30. g.drawImage(bufImage, 0, 0, PlaneFrame.WINDOW_WIDTH,PlaneFrame.WINDOW_HEIGHT, null);
  31. g.setColor(clr);
  32. }
  33. public void paint(Graphics g) {
  34. Color clr = g.getColor();
  35. g.setColor(Color.BLACK);
  36. g.fillRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
  37. plane.paint(g);
  38. Shell s = null;
  39. for (int i = 0; i < shell.size(); i++) {
  40. s = shell.get(i);
  41. if (s.isLive()) {
  42. s.paint(g);
  43. }else{
  44. shell.remove(i);
  45. }
  46. }
  47. g.setColor(Color.RED);
  48. g.drawString("炮弹个数:" + shell.size(), 5, 40);
  49. g.setColor(clr);
  50. }
  51. public void lunchFrame(){
  52. plane = new Plane();
  53. Toolkit tk = Toolkit.getDefaultToolkit();
  54. Dimension de = tk.getScreenSize();
  55. int w = (int)de.getWidth();
  56. int h = (int)de.getHeight();
  57. int x = (w - WINDOW_WIDTH) / 2;
  58. int y = (h - WINDOW_HEIGHT) / 2;
  59. this.setLocation(x, y);
  60. this.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
  61. this.setTitle("PlaneWar 5.0");
  62. this.addWindowListener(new WindowAdapter(){
  63. public void windowClosing(WindowEvent e) {
  64. System.exit(0);
  65. }
  66. });
  67. this.addKeyListener(new KeyAdapter(){
  68. public void keyPressed(KeyEvent e) {
  69. plane.keyPressed(e.getKeyCode());
  70. }
  71. public void keyReleased(KeyEvent e) {
  72. plane.keyRelease(e.getKeyCode());
  73. }
  74. });
  75. this.setResizable(false);
  76. this.setVisible(true);
  77. PaintThread pt = new PaintThread();
  78. pt.start();
  79. }
  80. public static void main(String[] args) {
  81. new PlaneFrame().lunchFrame();
  82. }
  83. private class PaintThread extends Thread{
  84. public void run() {
  85. while(true){
  86.          try {//建立线程,设置重画时间
  87.          repaint();//第一步:调用update()方法,在调用paint()方法;
  88.          sleep(1);
  89. } catch (InterruptedException e) {
  90. e.printStackTrace();
  91. }
  92.         }
  93. }
  94. }
  95. }