import java.util.Random;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
public class PlaneCanvas extends GameCanvas implements Runnable
{
public static int SrcW;
public static int SrcH;
public static int Level = 1;
private LayerManager layerManager = null;
private Map map = null;
private int rstart = 0;
public static MyPlane myPlane = null;
public static smallBoss sBoss = null;
public static BossPlane bossPlane = null;
private boolean isGameOver = false;
public boolean GameStart = false;
/*private boolean Die = false;
private boolean isRunning = true;*/
private int time = 50;
private int LogoW = 0;
private int LogoH = 0;
private int MoveCount = 0;
private int movecolor1=255;
private int movecolor2=255;
private int movecolor3=255;
private int MoveY=0;
protected PlaneCanvas()
{
super(false);
this.setFullScreenMode(true);
SrcW = this.getWidth();
SrcH = this.getHeight();
layerManager = new LayerManager();
map = new Map();
sBoss = new smallBoss();
bossPlane = new BossPlane();
map.LoadMap();
myPlane = new MyPlane();
sBoss.setLayerManager(layerManager);
bossPlane.setLayerManager(layerManager);
EnemyPlane.setLayerManager(layerManager);
myPlane.setLayerManager(layerManager);
Bullet.setLayerManager(layerManager);
Explosion.setLayerManager(layerManager);
Cloud.setLayerManager(layerManager);
map.setLayerManager(layerManager);
LogoW = ResImg.PlaneLogo.getWidth();
LogoH = ResImg.PlaneLogo.getHeight();
Start();
}
public void Start()
{
Thread thread = new Thread(this);
thread.start();
}
public void Logic()
{
MoveCount = (++MoveCount)%160;
myPlane.Logic();
if(isGameOver)
{
return;
}
EnemyPlane.Logic();
sBoss.Logic();
bossPlane.Logic();
Bullet.Logic();
Explosion.Logic();
Cloud.Logic();
if(-map.getLayerY()<=3*map.getRow()*map.elSize/5&&!bossPlane.died)
{
bossPlane.setVisible(true);
}
if(-map.getLayerY()<=4*map.getRow()*map.elSize/5&&!sBoss.died)
{
sBoss.setVisible(true);
}
if(myPlane.died)
{
rstart++;
//System.out.println(rstart);
if(rstart == 10)
{
myPlane.Restart();
if(myPlane.MyPlaneNum<=0)
{
isGameOver = true;
GameStart=false;
return;
}
}
if(rstart <= 15&&rstart >= 13)
{
myPlane.setVisible(false);
}else if(rstart <= 21&&rstart >= 19)
{
myPlane.setVisible(true);
}else if(rstart <= 27&&rstart >= 25)
{
myPlane.setVisible(false);
}
else if(rstart >= 32)
{
myPlane.setVisible(true);
myPlane.died = false;
rstart = 0;
}
else myPlane.setVisible(true);
}
}
public void Move()
{
myPlane.Move();
EnemyPlane.eMove();
sBoss.Move();
bossPlane.Move();
Bullet.Move();
Cloud.Move();
map.MoveMap();
}
public void paint(Graphics g)
{
if(isGameOver)
{
//g.setColor(255,0,0);
//g.drawString("退出", this.getWidth()-50, this.getHeight()-50, Graphics.LEFT|Graphics.TOP);
g.setColor(0);
g.fillRect(0, 0, SrcW, SrcH);
g.setColor(movecolor1,movecolor2,movecolor3);
g.drawString("G a m e O v e r", SrcW/2-30, MoveY*2, 0);
}
else
{
layerManager.paint(g, 0, 0);
g.setColor(-1);
g.drawString("SCORE:"+myPlane.score, 3, 2, 0);
if(rstart!=0)
{
g.setColor(0);
g.clipRect(this.getWidth()-40, 10, 40, 10);
g.setColor(255, 0, 0);
g.fillRect(this.getWidth()-41, 11, 60-rstart*2, 8);
}
for(int i=0;i<myPlane.MyPlaneNum;i++)
{
g.drawImage(ResImg.PlaneLogo, 10+(this.LogoW+5)*i, SrcH-this.LogoH, 0);
}
}
}
//输入判断
protected void keyPressed(int keyCode)
{
int gameAction = 0;
switch(keyCode)
{
case Canvas.KEY_NUM2:
gameAction=Canvas.UP;
break;
case Canvas.KEY_NUM8:
gameAction=Canvas.DOWN;
break;
case Canvas.KEY_NUM5:
gameAction=Canvas.FIRE;
break;
case Canvas.KEY_NUM4:
gameAction=Canvas.LEFT;
break;
case Canvas.KEY_NUM6:
gameAction=Canvas.RIGHT;
break;
default:
gameAction = getGameAction(keyCode);
}
if(!isGameOver)
{
myPlane.keyPressed(gameAction);
}
if(gameAction == Canvas.FIRE&&isGameOver)
{
ResImg.display.setCurrent(new WelScreen());
}
if(isGameOver)
{
return;
}
}
protected void keyReleased(int keyCode)
{
int gameAction = 0;
switch(keyCode){
case Canvas.KEY_NUM2:
gameAction=Canvas.UP;
break;
case Canvas.KEY_NUM8:
gameAction=Canvas.DOWN;
break;
case Canvas.KEY_NUM5:
gameAction=Canvas.FIRE;
break;
case Canvas.KEY_NUM4:
gameAction=Canvas.LEFT;
break;
case Canvas.KEY_NUM6:
gameAction=Canvas.RIGHT;
break;
default:
gameAction = getGameAction(keyCode);
}
if(!isGameOver)
{
myPlane.keyReleased(gameAction);
}
if(isGameOver)
{
return;
}
}
public void run()
{
Random r=new Random();
//long oldTime = 0;
//long nowTime = 0;
while(true)
{
if(GameStart){
//nowTime = System.currentTimeMillis();
//if(isRunning&&(nowTime-oldTime)>=time)
{
//oldTime = nowTime;
Logic();
Move();
paint(this.getGraphics());
System.gc();
try
{
Thread.sleep(time);
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}
if(isGameOver)
{
movecolor1=r.nextInt(255);
movecolor2=r.nextInt(255);
movecolor3=r.nextInt(255);
MoveY = (++MoveY)%80;
try
{
Thread.sleep(500);
}catch(Exception ex)
{
ex.printStackTrace();
}
}
this.repaint();
}
}
public static MyPlane getMyPlane()
{
return myPlane;
}
public void ReStart()
{
isGameOver = false;
rstart = 0;
myPlane.Relive();
map.ReStart();
EnemyPlane.ReStart();
Bullet.ReStart();
Explosion.ReStart();
bossPlane.ReStart();
sBoss.ReStart();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
lastplane.rar_游戏_Java_
共73个文件
class:28个
png:18个
java:14个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
1 下载量 136 浏览量
2021-08-12
02:24:32
上传
评论
收藏 298KB RAR 举报
温馨提示
打飞机游戏,里面包括小飞机,小BOSS,还有大BOSS
资源推荐
资源详情
资源评论
收起资源包目录
lastplane.rar (73个子文件)
lastplane
res
map
mapData.dat 2KB
pic
MyPlaneFrames.png 1020B
playerbiaozhi.png 698B
jplane2.png 11KB
smallboss.png 7KB
boss.png 8KB
cloud1.png 260B
bullet.png 230B
explosion.png 1KB
beijing.png 12KB
Thumbs.db 18KB
MyPlane.jad 193B
src
Map.java 3KB
PlaneCanvas.java 6KB
Explosion.java 1KB
BossPlane.java 1KB
PlaneMIDlet.java 622B
Plane.java 2KB
MyPlane.java 3KB
EnemyPlane.java 4KB
WelScreen.java 1KB
smallBoss.java 1KB
Actor.java 48B
ResImg.java 1KB
Cloud.java 1KB
Bullet.java 5KB
bin
Plane.class 2KB
Cloud.class 2KB
ResImg.class 2KB
MyPlane.class 3KB
Bullet.class 4KB
PlaneMIDlet.class 995B
Map.class 3KB
smallBoss.class 2KB
Actor.class 112B
EnemyPlane.class 4KB
BossPlane.class 2KB
map
mapData.dat 2KB
PlaneCanvas.class 6KB
Explosion.class 2KB
pic
MyPlaneFrames.png 1020B
playerbiaozhi.png 698B
jplane2.png 11KB
smallboss.png 7KB
boss.png 8KB
cloud1.png 260B
bullet.png 230B
explosion.png 1KB
beijing.png 12KB
Thumbs.db 18KB
WelScreen.class 2KB
.classpath 242B
.settings
org.eclipse.jdt.core.prefs 208B
.eclipseme 242B
qqq.jad 185B
.project 539B
.eclipseme.tmp
verified
classes
Plane.class 2KB
Cloud.class 2KB
ResImg.class 2KB
MyPlane.class 3KB
Bullet.class 4KB
PlaneMIDlet.class 995B
Map.class 4KB
smallBoss.class 2KB
Actor.class 112B
EnemyPlane.class 4KB
BossPlane.class 2KB
PlaneCanvas.class 6KB
Explosion.class 2KB
WelScreen.class 2KB
libs
emulation
qqq.jar 73KB
MyPlane.jar 72KB
MyPlane.jad 217B
共 73 条
- 1
资源评论
pudn01
- 粉丝: 40
- 资源: 4万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功