需购买观看

全屏

13.7.1 计时功能


【专业IT培训机构,真正零首付入学www.bjsxt.com


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

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

      2. 显示时间到窗口

·时间计算

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

【示例13-25】定义时间变量

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

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

【示例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);
	}	

      执行结果如图13-17所示:

图13-17 显示游戏时间效果图.png

图13-17 显示游戏时间效果图

分类导航
点击按住视频可拖动

缩小

关闭

  • 正在学习
  • 北京总部地址:北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
  • 咨询电话:400-009-1906 010-56233821
  • Copyright 2007-2015 北京尚学堂科技有限公司
  • 京ICP备13018289号-1 京公网安备11010802015183