package mian;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Date;
import 工具类.Constant;
import 工具类.GameU;
import 工具类.MyFream;
public class PlaneGameFream extends MyFream
{
Image bg = GameU.getImage("jpg/场景.jpg");
Image btt = GameU.getImage("jpg/bt.png");
Image bz = GameU.getImage("jpg/bz.png");
Image bang = GameU.getImage("jpg/bz.jpg");
Image sy = GameU.getImage("jpg/sy.jpg");// 背景帮助等一系列图片
paotai p = new paotai(Constant.Game_width / 2, Constant.Game_height - 30);// 中间新建一个炮台
ArrayList planeList = new ArrayList();// 飞机数组
Yuansu y = new Yuansu();// 新建元素对象
ArrayList zhadanList = new ArrayList();// 炸弹数组
ArrayList BoomList = new ArrayList();// 炸弹效果数组
ArrayList armorList = new ArrayList();// 特殊奖励数组
boolean peng, peng1, bt = true, peng2, bangz;// peng,peng1,peng2均为碰撞检测,bt表示是否为标题画面,bz表示是否为帮助画面
long l = Date.parse("Mon 6 Jan 1997 13:3:00");
ArrayList MusicPlayList = new ArrayList();// 爆炸音效数组
ArrayList MusicPlayList2 = new ArrayList();// 背景音乐数组
MusicPlay Boom = new MusicPlay("sound/boom.wav");// 爆炸音效
Date t3 = new Date(l);
Date t4 = new Date();
Date t1 = new Date(l);
Date t2 = new Date();
Date t5 = new Date();
Date t6 = new Date();
Date t7 = new Date();
Date t8 = new Date();
Date t9 = new Date(l);
Date t10 = new Date();// 均为时间判断
int planenumber = 0, musicnumber = 0;// planenumber表示同屏几架飞机,music表示歌曲数组位置
long lonn, lonn2;// 时间间隔
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);
}
public void LaunchFrame()
{// 画图函数
super.LaunchFrame();
addKeyListener(new KeyMonitor());
}
class KeyMonitor extends KeyAdapter
{
@Override
public void keyPressed(KeyEvent e)
{
switch (e.getKeyCode())
{// 键盘监听
case 65:
p.left = true;
break;
case 68:
p.right = true;
break;
case 74:
p.zd = true;
break;
case 10:
if (p.livee > 0)
{
bt = false;
} else
{
bt = true;
p.livee = 3;
}
break;
case KeyEvent.VK_SPACE:
if (bt)
{
if (bangz)
{
bangz = false;
} else
{
bangz = true;
}
}
}
}
public void keyReleased(KeyEvent e)
{
switch (e.getKeyCode())
{
case 65:
p.left = false;
break;
case 68:
p.right = false;
break;
case 74:
p.zd = false;
break;
}
}
}
public void boommusic()// 播放爆炸音效
{
MusicPlay pll = new MusicPlay("sound/boom.wav");
MusicPlayList.add(pll);
pll.start();
}
public void newbgmmusic()// 新建一个背景音乐
{
bgmmusicSTOP();
MusicPlay pll = new MusicPlay("sound/bgm.wav");
MusicPlayList.add(pll);
musicnumber++;
t9 = new Date();
}
public void bgmmusicSTOP()// 背景音乐停止
{
if (musicnumber > 0)
{
MusicPlay b = (MusicPlay) MusicPlayList.get(musicnumber - 1);
b.stop();
}
}
public void bgmmusicSTART()// 背景音乐开始
{
MusicPlay b = (MusicPlay) MusicPlayList.get(musicnumber - 1);
b.start();
}
public void paint(Graphics g)
{ // 画图函数
if (p.livee <= 0)
{ // 游戏完成清除数组
bgmmusicSTOP();
g.drawImage(bg, 0, 0, null);
p.bulletList.clear();
zhadanList.clear();
BoomList.clear();
armorList.clear();
planeList.clear();
p.draw(g);
planenumber = 0;
p.x = Constant.Game_width / 2;
} else if (bt) // 游戏开始画面
{
if (bangz)
{
g.drawImage(bang, 0, 0, null);
p.number = 0;
p.livee = 3;
} else
{
p.number = 0;
p.livee = 3;
p.draw(g);
g.drawImage(sy, 0, 0, null);
}
} else
{
t10 = new Date();
if (t10.getTime() - t9.getTime() > 150000)// 背景音乐
{
newbgmmusic();
} else
{
bgmmusicSTART();
}
g.drawImage(bg, 0, 0, null);
p.draw(g);
t2 = new Date();
if (p.number >= (3 * planenumber * planenumber + 3 * planenumber) / 2) // 随时间生成飞机,增加难度
{
plane pll = new plane();
planeList.add(pll);
planenumber++;
t1 = new Date();
}
if (p.bf)
{
t6 = new Date();
lonn = t6.getTime() - t5.getTime();
if (lonn > 5000)
{
p.bf = false;
}
}
if (p.wd)
{
t8 = new Date();
lonn2 = t8.getTime() - t7.getTime();
if (lonn2 > 5000)
{
p.wd = false;
}
}
y.draw(g, p, planenumber, lonn, lonn2);
for (int i = 0; i < p.bulletList.size(); i++)
{// 画子弹
bullet b = (bullet) p.bulletList.get(i);
if (b.y < 0)
{
p.bulletList.remove(b);
}
b.draw(g);
}
for (int i = 0; i < zhadanList.size(); i++)
{ // 画炸弹
zhadan b = (zhadan) zhadanList.get(i);
if (b.y > 436)
{
zhadanList.remove(b);
}
b.draw(g);
}
for (int i = 0; i < BoomList.size(); i++)// 爆炸效果
{
Boom b = (Boom) BoomList.get(i);
b.draw(g);
}
for (int i = 0; i < zhadanList.size(); i++)
{ // 炸弹碰撞检测
zhadan b = (zhadan) zhadanList.get(i);
if (b.y > Constant.Game_height + 10)
{
zhadanList.remove(b);
continue;
}
peng1 = b.getrect().intersects(p.getrect());
if (peng1)
{
if (p.wd)
{
boommusic();
Boom boo = new Boom(p.x, p.y);
BoomList.add(boo);
zhadanList.remove(b);
} else
{
boommusic();
Boom boo = new Boom(p.x, p.y);
BoomList.add(boo);
zhadanList.remove(b);
if (p.zhuangjia > 0)
{
p.zhuangjia--;
} else
{
p.livee--;
}
}
}
}
for (int i = 0; i < armorList.size(); i++)
{ // 奖励的碰撞检测
armor b = (armor) armorList.get(i);
if (b.y > Constant.Game_height + 10)
{
armorList.remove(b);
continue;
}
b.draw(g);
peng2 = b.getrect().intersects(p.getrect());
if (peng2)
{
b.live = false;
switch (b.dddd)
{
case 0:
p.zhuangjia++;
break;
case 1:
p.bf = true;
t5 = new Date();
break;
case 2:
p.wd = true;
t7 = new Date();
break;
}
armorList.remove(b);
}
}
for (int j = planeList.size() - planenumber; j < planeList.size(); j++)// 画飞机
{
plane c = (plane) planeList.get(j);
if (!c.live)
{
planeList.remove(c);
continue;
}
c.draw(g);
}
for (int j = planeList.size() - planenumber; j < planeList.size(); j++)// 飞机的函数
{
plane c = (plane) planeList.get(j);
c.t4 = new Date();
if (c.t4.getTime() - c.t3.getTime() > c.b) // 生成炸弹
{
zhadan b = new zhadan(c.x, c.y, c);
zhadanList.add(b);
c.t3 = c.t4;
}
if (c.x > 742 || c.x < -50)
{
c.live = false;
plane pll = new plane();
planeList.add(pll);
}
for (int i = 0; i < p.bulletList.size(); i++)
{// 子弹碰撞检测
bullet b = (bullet) p.bulletList.get(i);
if (b.y < -10)
{
p.bulletList.remove(b);
continue;
}
peng = b.getrect().intersects(c.getrect());
if (peng)
{
if (c.ccc == 1)
{
armor baaa = new armor(c.x, c.y, c.ddd);
armorList.add(baaa);
}
boommusic();
p.bulletList.remove(b);
planeList.remove(c);
c.live = false;
Boom boo = new Boom(c.x, c.y);
BoomList.add(boo);
plane pll = new plane();
planeList.add(pll);
p.
评论0
最新资源