zoukankan      html  css  js  c++  java
  • 飞机项目总结

    一.MyFrame

    public class MyFrame  extends Frame {
        
        /**
         * 加载窗口
         */
        public void launchFrame(){
            setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);
            setLocation(100, 100);
            setVisible(true);
            
            new PaintThread().start();  //启动重画线程
            
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        }
        
        
        private Image offScreenImage = null;
        public void update(Graphics g) {
            if(offScreenImage == null)
                offScreenImage = this.createImage(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);
            
            Graphics gOff = offScreenImage.getGraphics();
    
            paint(gOff);
            g.drawImage(offScreenImage, 0, 0, null);
        }
        
        /**
         * 定义一个重画窗口的线程类,是一个内部类
         * @author dell
         *
         */
        class PaintThread extends Thread {
            
            public void run(){
                while(true){
                    repaint();//调用paint();
                    try {
                        Thread.sleep(40); //1s = 1000ms
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }   
                }
            }
            
        }
    }

    二.游戏工具类 GameUtil

    1.获得图片:

    private GameUtil(){}  //工具类最好将构造器私有了。
    	
    	public static Image getImage(String path){
    		BufferedImage bi=null;
    		try {
    			URL u = GameUtil.class.getClassLoader().getResource(path);
    			bi = javax.imageio.ImageIO.read(u);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return bi;
    	}
    

     URL u = GameUtil.class.getClassLoader().getResource(path);

    类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
    

     bi = javax.imageio.ImageIO.read(u);

    从资源定位中读取图片对象,然后就可以使用该图片资源
    

    三.Constant

    存放static final 常量

    四.Star类

    1.成员变量

    1 Image img;
    2     double x,y;
    3     int width,height;

    2.成员函数

    1 public void draw(Graphics g){
    2         g.drawImage(img, (int)x, (int)y, null);
    3 }
    4 //....
    5 //一系列构造函数

    五.Planet类继承于Star

    1.成员变量

    //除了图片,坐标。 行星沿着某个椭圆运行:长轴、短轴、速度、角度。 绕着某个Star飞。
        double longAxis;  //椭圆的长轴
        double shortAxis;  //椭圆的短轴
        double speed;     //飞行的速度
        double degree;    
        Star center;

    2.成员函数

    //画行星
    public void draw(Graphics g){
            super.draw(g);
            move();
    }
    //画轨道
    public void drawTrace(Graphics g){
            double ovalX,ovalY,ovalWidth,ovalHeight;
            
            ovalWidth = longAxis*2;
            ovalHeight = shortAxis*2;
            ovalX = (center.x+center.width/2)-longAxis;
            ovalY = (center.y+center.height/2)-shortAxis;
            
            Color c =g.getColor();
            g.setColor(Color.blue);
            g.drawOval((int)ovalX, (int)ovalY, (int)ovalWidth, (int)ovalHeight);
            g.setColor(c);
        }
    //
    public void move(){
            //沿着椭圆轨迹飞行
            x = (center.x+center.width/2) + longAxis*Math.cos(degree);
            y = (center.y+center.height/2)+ shortAxis*Math.sin(degree);
            
            degree += speed;
        }

    六.运行类SolarFrame

    public class SolarFrame extends MyFrame {
        Image bg = GameUtil.getImage("images/bg.jpg");
        Star sun = new Star("images/sun.jpg", Constant.GAME_WIDTH/2, Constant.GAME_HEIGHT/2);
        Planet earth = new Planet(sun, "images/earth.jpg", 150, 100, 0.1);
        Planet moon = new Planet(earth, "images/moon.jpg", 30, 20, 0.3,true);
        Planet mars = new Planet(sun, "images/Mars.jpg", 200, 130, 0.2);
        
        
        public void paint(Graphics g){
            g.drawImage(bg, 0, 0, null);
            sun.draw(g);
            earth.draw(g);
            mars.draw(g);
            
            moon.draw(g);
        }
        
        public static void main(String[] args) {
            new SolarFrame().launchFrame();
        }
    }
  • 相关阅读:
    sublime text 2安装及使用
    C陷阱与缺陷之语法陷阱
    上门洗车APP --- Androidclient开发 之 项目结构介绍
    编写语法分析程序
    TCP header
    boost事件处理
    TP-LINK无线路由器WR340G+ 54M支持WDS
    300M无线路由器 TL-WR842N
    python 2.7 支持dict comprehension
    100M 宽带办理
  • 原文地址:https://www.cnblogs.com/xiaochi/p/4994404.html
Copyright © 2011-2022 走看看