4.16Java游戏小项目之记时功能
需求描述
希望在玩游戏时看到自己完了多久
核心点:
-
时间计算:当前时刻 - 游戏结束的时刻---在游戏开始的时候创建一个时间的对象
-
显示时间到窗口
时间计算
在初始化窗口时,保存一个起始时间。飞机死亡时,保存一个结束时间。在MyGameFrame中定义两个成员变量
Date startTime = new Date(); //游戏开始时刻
Date endTime;
/*
在飞机死亡的时候给endTime赋值,修改paint方法中的代码
时间就是毫秒数,计算方法:
1970年1月1日0时0刻开始
1990年10月1日0时0刻结束
二者做差
*/
创建时间对象:
把游戏经过的时间写到我们的上方:
/*重写桌面绘制方法*/
@Override
public void paint(Graphics g){
/*
g本身带有颜色,形参对象是别人传过来的
在下面来个g的颜色再别的地方再用g画笔就会直接更改
所以有使用方法:
用之前先保存,然后最后用完了再改回去---创建对象保存
改字体的思想一样
*/
/*改变子体颜色*/
Color c = g.getColor();
// Color c = g.getColor();
// Font f = g.getFont();
//
// /*画一条线,包括起点的坐标(横、纵坐标)和终点的(横、纵坐标)*/
// g.drawLine(100,100,300,300);
// /*画矩形的方法*/
// g.drawRect(100,100,300,300);
// /*画椭圆的方法*/
// g.drawOval(100,100,300,300);
// /*画实心的矩形*/
// g.fillRect(100,100,300,300);
// /*画字符串*/
// g.drawString("Lucifer",500,500);
// /*变颜色---这个Color是个静态的类,里面有些静态的变量,可以直接使用*/
// g.setColor(Color.BLUE);
// /*设置字体风格*/
// g.setFont(new Font("微软雅黑",Font.BOLD,50)); //形参为一个对象,实参也要创建一个对象去传入
// /*画出皮卡丘*/
// g.drawImage(Pkq,0,0,null);
// /*画出图片---Marks*/
// g.drawImage(Marks,MarksX,MarksY,null);
// MarksX++;
// MarksY++;
//
// g.setColor(c);
// g.setFont(f);
g.drawImage(Plane,40,40,null);
//因为已经在对象里封装了方法,所以直接调用即可
// p.drawSelf(g);
// p2.drawSelf(g);
// p3.drawSelf(g);
/*画出实心炮弹*/
// shell.draw(g); //传入参数g
/*
可以定义不同的对象
后期可以把对象放进数组或者容器里
*/
//利用遍历的方法画出50发炮弹
for (int i =0; i < shells.length; i++){
shells[i].draw(g);
/*判断炮弹矩形是否与飞机矩形相碰*/
boolean peng = shells[i].getRect().intersects(p.getRect()); //getRect是获得矩形,设置变量是否了好进行if判断
/*进行if判断是否相碰,飞机和炮弹的碰撞检测*/
if (peng){
// System.out.println("碰到了!!!");
p.live = false; //相碰死掉
// if (boom == null){
//
// /*创建爆炸对象*/
// boom = new Explode(p.x,p.y); //传入飞机的坐标,飞机在哪里爆炸就传入那个坐标
// /*
// 没有if判断的话飞机的矩形在和小球的矩形碰撞的时候
// 小球在飞机的矩形上方一直运动,一直建立对象,总是一个小图片,就看不到效果。
// 直到飞出飞机的矩形外才会停止建立对象
// */
// }
//
// /*画出爆炸效果图*/
// boom.draw(g);
/*结束时刻创建对象*/
endTime = new Date();
/*时间计算*/
period = (int) ((endTime.getTime() - startTime.getTime())/1000); //startTime和endTime都是对象,里面有一个getTime的方法
}
}
/*判断飞机死亡*/
if (!p.live){
/*设置字体颜色*/
g.setColor(Color.YELLOW);
/*改变字体大小等*/
Font f = new Font(