package com.neutech.base;
import com.neutech.runtime.*;
import com.neutech.util.Map.DisposeLevel;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class GameFrame extends Frame {
public GameFrame() {
init();
}
private void init() {
// 设置屏幕的大小
setSize(Constant.WINDOW_OUTER_WIDTH,Constant.WINDOW_OUTER_HEIGHT);
// 设置居中
setLocationRelativeTo(null);
// 不允许改变屏幕大小
setResizable(false);
// 屏蔽输入法
enableInputMethods(false);
// 设置显示
setVisible(true);
// 启动一个线程定时刷新窗口
new Thread()
{
public void run(){
while (true)
{
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
// 添加一个窗口监听事件,用来实现窗口关闭
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// 关虚拟机
System.exit(0);
}
});
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_SPACE)
{
Constant.execute=!Constant.execute;
}
else {
plane.keyPressed(e);
}
}
public void keyReleased(KeyEvent e)
{
plane.keyReleased(e);
}
});
}
// 等级处理
DisposeLevel disposeLevel=new DisposeLevel();
// 上面的地图
Map map1=new Map(-Constant.WINDOW_OUTER_HEIGHT);
// 下面的地图
Map map2=new Map(0);
// 分数
Score score=new Score();
// 飞机
Plane plane=new Plane();
// 飞机子弹集合
public List<PlaneBullet> planeBulletList =new CopyOnWriteArrayList<>();
// 敌机集合
public List<Enemy> enemyList=new CopyOnWriteArrayList<>();
// 敌机子弹集合
public List<EnemyBullet> enemyBulletList=new CopyOnWriteArrayList<>();
// 爆炸效果集合
public List<Explode> explodeList=new CopyOnWriteArrayList<>();
// 血条
Blood blood=new Blood();
@Override
public void paint(Graphics g)
{
if(Constant.execute)
{
map1.move();
map2.move();
map1.draw(g);
map2.draw(g);
plane.move();
plane.draw(g);
plane.fire();
// 遍历飞机的子弹
for (PlaneBullet planeBullet : planeBulletList) {
planeBullet.move();
planeBullet.draw(g);
}
// 遍历敌机
for (Enemy enemy:enemyList) {
enemy.move();
enemy.draw(g);
enemy.fire();
}
// 遍历敌机的子弹
for (EnemyBullet enemyBullet:enemyBulletList) {
enemyBullet.move();
enemyBullet.draw(g);
}
// 分数
score.draw(g);
score.create();
// 我方子弹与敌机的碰撞检测
for (PlaneBullet planeBullet : planeBulletList) {
for (Enemy enemy:enemyList) {
if(planeBullet.creatRectangle().intersects(enemy.creatRectangle()))
{
// 从集合中清除子弹和敌机
planeBulletList.remove(planeBullet);
enemyList.remove(enemy);
// 分数+1
score.setNumber(score.getNumber()+1);
// 爆炸效果
explodeList.add(new Explode(enemy.getX(),enemy.getY()));
}
}
}
// 我方飞机与敌机碰撞检测
for(Enemy enemy:enemyList){
if(plane.creatRectangle().intersects(enemy.creatRectangle()))
{
// 移除敌机
enemyList.remove(enemy);
// 爆炸效果
explodeList.add(new Explode(enemy.getX(),enemy.getY()));
// 血条-1
blood.setWidth(blood.getWidth()-20);
blood.setX(blood.getX()+20);
}
}
// 遍历爆炸效果
for (Explode explode:explodeList) {
explode.draw(g);
}
// 敌方子弹与我方飞机的碰撞检测
for (EnemyBullet enemyBullet : enemyBulletList) {
if(plane.creatRectangle().intersects(enemyBullet.creatRectangle()))
{
// 移除子弹
enemyBulletList.remove(enemyBullet);
// 血条-1
blood.setWidth(blood.getWidth()-20);
blood.setX(blood.getX()+20);
}
}
g.setColor(Color.GRAY);
g.fillRoundRect(400,40,100,30, 10, 10);
blood.draw(g);
}
}
public Image offScreenImage=null;
public void update(Graphics g){
if (offScreenImage==null)
{
offScreenImage=this.createImage(Constant.WINDOW_OUTER_WIDTH,Constant.WINDOW_OUTER_HEIGHT);
}
Graphics gOff=offScreenImage.getGraphics();
paint(gOff);
g.drawImage(offScreenImage,0,0,null);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
plane_wars.zip (99个子文件)
plane_wars
src
com
neutech
music
bg.wav 50.61MB
start.java 683B
img
explode3.png 13KB
img_bg_level_5.jpg 74KB
img_bg_level_2.jpg 190KB
img_plane1.png 6KB
game_over.png 325KB
eff2.png 89KB
explode1.png 3KB
eff1.png 72KB
bullet2.png 5KB
img_plane2.png 6KB
img_bg_level_1.jpg 388KB
explode6.png 13KB
explode2.png 6KB
explode5.png 18KB
img_bg_level_3.jpg 358KB
explode8.png 5KB
hero.png 19KB
explode7.png 8KB
bullet1.png 5KB
img.png 221KB
img_plane3.png 6KB
explode4.png 18KB
img_plane4.png 5KB
img_bg_level_4.jpg 55KB
base
GameFrame.java 6KB
Sprite.java 1018B
Movable.java 78B
Checkpoint.java 1KB
Fire.java 82B
Constant.java 656B
Drawable.java 124B
runtime
Explode.java 1KB
EnemyBullet.java 1KB
Blood.java 740B
Score.java 2KB
GameOver.java 703B
Map.java 1018B
Plane.java 3KB
PlaneBullet.java 1KB
Enemy.java 2KB
util
Map
ImageUtils.java 2KB
DisposeLevel.java 625B
out
production
plane_wars
com
neutech
start.class 1KB
music
bg.wav 50.61MB
img
explode3.png 13KB
img_bg_level_5.jpg 74KB
img_bg_level_2.jpg 190KB
img_plane1.png 6KB
game_over.png 325KB
eff2.png 89KB
explode1.png 3KB
eff1.png 72KB
bullet2.png 5KB
img_plane2.png 6KB
img_bg_level_1.jpg 388KB
explode6.png 13KB
explode2.png 6KB
explode5.png 18KB
img_bg_level_3.jpg 358KB
explode8.png 5KB
hero.png 19KB
explode7.png 8KB
bullet1.png 5KB
img.png 221KB
img_plane3.png 6KB
explode4.png 18KB
img_plane4.png 5KB
img_bg_level_4.jpg 55KB
base
GameFrame$2.class 718B
Fire.class 127B
Drawable.class 154B
GameFrame$1.class 813B
GameFrame.class 5KB
Constant.class 658B
Sprite.class 1KB
Movable.class 133B
Checkpoint.class 2KB
GameFrame$3.class 1KB
runtime
GameOver.class 1KB
Enemy.class 3KB
Plane.class 3KB
Score.class 2KB
Blood.class 1KB
Explode.class 2KB
PlaneBullet.class 2KB
Map.class 1KB
EnemyBullet.class 2KB
util
Map
ImageUtils.class 2KB
DisposeLevel.class 1KB
.idea
uiDesigner.xml 9KB
workspace.xml 5KB
misc.xml 273B
compiler.xml 168B
modules.xml 267B
.gitignore 190B
plane_wars.iml 433B
.gitignore 344B
共 99 条
- 1
资源评论
晓芙蝶
- 粉丝: 15
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功