package cn.sxt.game;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;
/**
* 飞机游戏的主窗口
* @author 高淇
*
*/
public class MyGameFrame extends Frame {
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; //游戏持续的时间
@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<shells.length;i++){
shells[i].draw(g);
//飞机和炮弹的碰撞检测!!!
boolean peng = shells[i].getRect().intersects(plane.getRect());
if(peng){
plane.live = false;
if(bao ==null){
bao = new Explode(plane.x, plane.y);
endTime = new Date();
period = (int)((endTime.getTime()-startTime.getTime())/1000);
}
bao.draw(g);
}
//计时功能,给出提示
if(!plane.live){
g.setColor(Color.red);
Font f = new Font("宋体", Font.BOLD, 50);
g.setFont(f);
g.drawString("时间:"+period+"秒", (int)plane.x, (int)plane.y);
}
}
g.setColor(c);
}
//帮助我们反复的重画窗口!
class PaintThread extends Thread {
@Override
public void run() {
while(true){
repaint(); //重画
try {
Thread.sleep(40); //1s=1000ms
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//定义键盘监听的内部类
class KeyMonitor extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
plane.addDirection(e);
}
@Override
public void keyReleased(KeyEvent e) {
plane.minusDirection(e);
}
}
/**
* 初始化窗口
*/
public void launchFrame(){
this.setTitle("尚学堂学员_程序猿作品");
this.setVisible(true);
this.setSize(Constant.GAME_WIDTH , Constant.GAME_HEIGHT);
this.setLocation(300, 300);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
new PaintThread().start(); //启动重画窗口的线程
addKeyListener(new KeyMonitor()); //给窗口增加键盘的监听
//初始化50个炮弹
for(int i=0;i<shells.length;i++){
shells[i] = new Shell();
}
}
public static void main(String[] args) {
MyGameFrame f = new MyGameFrame();
f.launchFrame();
}
private Image offScreenImage = null;
public void update(Graphics g) {
if(offScreenImage == null)
offScreenImage = this.createImage(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);//这是游戏窗口的宽度和高度
Graphics gOff = offScreenImage.getGraphics();
paint(gOff);
g.drawImage(offScreenImage, 0, 0, null);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java飞机游戏源代码【全】.rar_Java 战斗机_Java 游戏开发 源代码_seenicc
共216个文件
gif:64个
class:58个
java:37个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 142 浏览量
2022-09-15
01:42:24
上传
评论
收藏 508KB RAR 举报
温馨提示
Java编程基础,适合java完整学过一遍的人。是综合运用这些知识,开发的一个小项目,关于飞机游戏的,带着乐趣和思考去学习和编程,希望对大家有帮助!!
资源详情
资源评论
资源推荐
收起资源包目录
Java飞机游戏源代码【全】.rar_Java 战斗机_Java 游戏开发 源代码_seenicc (216个子文件)
MyGameFrame.class 4KB
MyGameFrame.class 3KB
MyGameFrame.class 2KB
MyGameFrame.class 2KB
MyGameFrame.class 2KB
MyGameFrame.class 2KB
MyGameFrame.class 2KB
Plane.class 2KB
Plane.class 2KB
MyGameFrame.class 2KB
Plane.class 1KB
Plane.class 1KB
Explode.class 1KB
Explode.class 1KB
GameObject.class 1KB
GameObject.class 1KB
GameObject.class 1KB
GameObject.class 1KB
GameObject.class 1KB
GameObject.class 1KB
Shell.class 1KB
Shell.class 1KB
Shell.class 1KB
MyGameFrame$KeyMonitor.class 1KB
GameUtil.class 990B
GameUtil.class 990B
GameUtil.class 990B
GameUtil.class 990B
GameUtil.class 990B
GameUtil.class 990B
GameUtil.class 990B
GameUtil.class 990B
MyGameFrame.class 919B
MyGameFrame$KeyMonitor.class 846B
MyGameFrame$KeyMonitor.class 846B
MyGameFrame$KeyMonitor.class 846B
MyGameFrame$KeyMonitor.class 846B
MyGameFrame$PaintThread.class 777B
MyGameFrame$PaintThread.class 777B
MyGameFrame$PaintThread.class 777B
MyGameFrame$PaintThread.class 777B
MyGameFrame$PaintThread.class 777B
MyGameFrame$PaintThread.class 777B
MyGameFrame$PaintThread.class 777B
MyGameFrame$1.class 706B
MyGameFrame$1.class 706B
MyGameFrame$1.class 706B
MyGameFrame$1.class 706B
MyGameFrame$1.class 706B
MyGameFrame$1.class 706B
MyGameFrame$1.class 706B
MyGameFrame$1.class 706B
MyGameFrame$1.class 706B
Plane.class 689B
Plane.class 689B
Constant.class 357B
Constant.class 357B
Constant.class 357B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
.classpath 301B
e9.gif 1KB
e9.gif 1KB
e9.gif 1KB
e9.gif 1KB
e8.gif 1KB
e10.gif 1KB
e10.gif 1KB
e8.gif 1KB
e10.gif 1KB
e8.gif 1KB
e8.gif 1KB
e10.gif 1KB
e7.gif 1KB
e7.gif 1KB
e7.gif 1KB
e7.gif 1KB
e11.gif 1KB
e11.gif 1KB
e11.gif 1KB
e11.gif 1KB
e6.gif 1KB
e6.gif 1KB
e6.gif 1KB
e6.gif 1KB
e12.gif 1KB
e12.gif 1KB
e12.gif 1KB
e12.gif 1KB
e5.gif 1KB
e5.gif 1KB
e5.gif 1KB
e5.gif 1KB
e4.gif 1KB
共 216 条
- 1
- 2
- 3
APei
- 粉丝: 63
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0