2016.10.24

总结今天的学习

主要利用图形界面的基础知识设计小游戏

加入双缓冲避免了游戏屏幕闪烁

    private Image offScreenImage=null;
        public void update(Graphics g){
        if(offScreenImage == null )
            offScreenImage= this.createImage(Constant.FRAME_WIDTH,Constant.FRAME_HEIGHT);       
        Graphics gOff =offScreenImage.getGraphics();        
        paint(gOff);
        g.drawImage(offScreenImage, 0, 0, null);
    }

  • 我没看懂

物体沿任意角度飞行,用弧度计算路径来处理的
例如

y = Speed*sin(degree);

导入图片,他弄了个工具类

public class GameUtil {
    
    private GameUtil(){}; //工具类通常把构造器私有了!
    
    public static Image getImage(String path){
        
        URL u=GameUtil.class.getClassLoader().getResource(path);
                //这据我估计应该是读取地址
        BufferedImage img=null;
        
        try {
            img=ImageIO.read(u);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        return img;
    }   
}

还有个键盘监听

    class KeyListener extends KeyAdapter{

        @Override
        public void keyPressed(KeyEvent e) {
            // 键盘按下
            plane.anxia(e);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            // 键盘弹起
            plane.shifang(e);
        }
        
    }

  • 键盘监听需要注册,这里我们在子类里重写了launchFrame()方法,并加入了监听
public void launchFrame() {
        // TODO Auto-generated method stub
        super.launchFrame();
        addKeyListener(new KeyListener());
}

还有个容器的利用,之所以用容器,应该是新建bullet时的b再给下一个并不会影响去找到上一个!哈哈

ArrayList bulletList=new ArrayList();//建一个存放子弹的容器,方便画图

    public void paint(Graphics g) {
        g.drawImage(bg, 0, 0, null);
        plane.draw(g);
        
        for(int i=0;i<bulletList.size();i++){
            Bullet b=(Bullet)bulletList.get(i);//挨个新建,很方便
            b.draw(g);//挨个画
        }
    }

顺便说说今天下午笔试都没过,没有挫败,坚定。我觉得,不断地学习加强自己才是正道。加油,成为你想要成为的人!梦想和理想总是有交集的!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容