JAVA开发是男人就坚持10秒_计时功能

      我们希望在玩游戏时,增加计时功能,可以清晰的看到自己玩了多长时间,增加刺激性。这个功能的核心有两点:

      1. 时间计算:当前时刻- 游戏结束的时刻

      2. 显示时间到窗口

时间计算

      我们在初始化窗口时,就保存一个起始时间;当飞机死亡时,保存一个结束时间。我们在MyGameFrame中定义两个成员变量,如示例13-25所示。

定义时间变量

Date startTime = new Date();    //游戏起始时刻

Date endTime;  //游戏结束时刻

      我们在飞机死亡时,给endTime赋值,修改paint方法中代码,如示例13-26所示。

计算游戏时间:

//paint方法作用是:画出整个窗口及内部内容。被系统自动调用。
    @Override
    public void paint(Graphics g) {  
        g.drawImage(bgImg, 0, 0, null);
        plane.drawMySelf(g);    //画出飞机本身
        //画出容器中所有的子弹
        for(int i=0;i<shellList.size();i++){
            Shell b =  shellList.get(i);
            b.draw(g);
             
            //飞机和所有炮弹对象进行矩形检测
            boolean peng = b.getRect().intersects(plane.getRect());
            if(peng){
                plane.live = false;   //飞机死掉,画面不显示
                endTime = new Date();
                if(bao==null){
                    bao = new Explode(plane.x,plane.y);
                }
                bao.draw(g);
            }
        }
         
        if(!plane.live){
            if(endTime==null){
                endTime = new Date();
            }
            int period = (int)((endTime.getTime()-startTime.getTime())/1000);
            printInfo(g, "时间:"+period+"秒", 50, 120, 260, Color.white);
        }
    }
    /**
     * 在窗口上打印信息
     * @param g
     * @param str
     * @param size
     */
    public void printInfo(Graphics g,String str,int size,int x,int y,Color color){
        Color c = g.getColor();
        g.setColor(color);
        Font f = new Font("宋体",Font.BOLD,size);
        g.setFont(f);
        g.drawString(str,x,y);
        g.setColor(c);
    }  

运行效果:

发布了127 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ZGL_cyy/article/details/104157823
今日推荐