本文实例为大家分享了java实现飞机游戏的具体代码,供大家参考,具体内容如下
MyGameFrame类:
主要的调用类
package sc.wh.game;
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import sc.wh.game.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;
public class MyGameFrame extends Frame {
// 调用工具类的getImage方法加载图片对象
Image planeImg = GameUtil.getImage("images/plane.png");
Image bg = GameUtil.getImage("images/bg.jpg");
// 创建飞机,设置初始位置
Plane plane = new Plane(planeImg,250,250);
// 创建炮弹组
Shell shells[] = new Shell[50];
// 设置爆炸效果类的对象的引用
Explode bao;
// 游戏开始时间
Date startTime = new Date();
// 游戏结束时间
Date endTime;
// 游戏进行的时间
int period;
// 记录爆炸效果显示的图片
int BaoCount = 0;
// 在窗口画图方法,由repaint方法自动调用
@Override
public void paint(Graphics g) { // 会自动被调用,g相当于一支画笔
Color c = g.getColor();
// 画背景
g.drawImage(bg,0,0,null);
// 调用飞机类的画图方法并画飞机
plane.drawSelf(g);
// 画炮弹组中的炮弹
for (int i=0;i
// 调用炮弹对象的draw方法
shells[i].draw(g);
// 获取炮弹所在矩形位置并调用intersects判断两矩形是否相交
boolean peng = shells[i].getRect().intersects(plane.getRect());
if(peng) {
// 如果相交则设置飞机存活状态为false
plane.live = false;
// 如果bao对象没有初始化过则才初始化
if(bao == null) {
bao = new Explode(plane.x, plane.y);
endTime = new Date();
period = (int)(endTime.getTime() - startTime.getTime())/1000;
}
if(BaoCount <= 15) {
// 调用爆炸效果显示类的画图方法,每次调用只画一张图
bao.draw(g);
BaoCount++;
}
}
// 如果飞机未存活则显示游戏时间
if(!plane.live) {
// 创建字体对象
Font f = new Font("宋体",Font.BOLD,50);
// 设置字体
g.setFont(f);
// 设置字体