📄 play.java
字号:
/*
* Created on 2005-9-11
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package shipwar;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.rms.*;
/**
* @author wanggang
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Play extends GameCanvas implements Runnable, CommandListener {
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
private Command exit=new Command("退出",Command.EXIT,5);
private Command replay=new Command("重玩",Command.EXIT,1);
private Play play;
private LayerManager layermanager;
private TiledLayer background;
private Sprite shipsprite;
private Sprite enemyship_die;
private Sprite explosive;
private Graphics g;
private int shipX,shipY;
private int shipwidth,shipheight;
private int enemyshipheight;
private int enemyfire=0;
private TiledLayer bottomground;
private Thread thread;
private boolean gameover;
private boolean ispause;
private boolean FIRE=false;
private int direction;
private sunken sunken1;
private sunken sunken2;
private int firetime=0;
private Font deffont=Font.getDefaultFont();
private int type;
private int score=0;
private int tmpscore=0;
private int minrecord;
private String scorestring;
private String levelstring;
private Displayable upinstance;
private int enemycount=0;
private int timecount=15;
private int level=3;
private int speed=0;
private int showspeed=150;
private int showX=0;
private boolean exist=false;
public static int movehorizontal=0;
public static int movevertical=1;
public static int movediagonal=2;
private byte [][]backgroundmap={ {1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1}
};
private Missile[] shipmissile;
private Missile[] enemymissile;
private fishobject[] fisharray;
private byte[][]bottomgroundmap={
{1,1,1,1,1,1,1}
};
private enemyship[] enemyshiparray;
public Play(Displayable instance){
super(false);
play=this;
this.addCommand(exit);
this.setCommandListener(this);
this.upinstance=instance;
this.level=MainMenu.level;
ispause=false;
this.g=this.getGraphics();
try{
Image backimage=Image.createImage("/res/densityLayer0.png");
Image bottomimage=Image.createImage("/res/bottom.png");
Image ship=Image.createImage("/res/sub.png");
Image sunkenimage=Image.createImage("/res/sunkenboat.png");
Image fish0image=Image.createImage("/res/fishType0.png");
Image fish1image=Image.createImage("/res/fishType1.png");
Image fish2image=Image.createImage("/res/fishType2.png");
Image fish3image=Image.createImage("/res/fishType3.png");
Image fish4image=Image.createImage("/res/fishType4.png");
Image fish5image=Image.createImage("/res/fishType5.png");
Image fish6image=Image.createImage("/res/fishType6.png");
Image enemyshipimage=Image.createImage("/res/enemysub_f.png");
Image enemydieimage=Image.createImage("/res/enemysub_die.png");
Image shipmissileimage=Image.createImage("/res/tinfish3.png");
Image enemymissileimage=Image.createImage("/res/tinfish2.png");
Image explosiveimage=Image.createImage("/res/explosion.png");
shipsprite=new Sprite(ship,20,10);
enemyship_die=new Sprite(enemydieimage,16,11);
explosive=new Sprite(explosiveimage,13,14);
fisharray=new fishobject[]{
new fishobject(fish0image,fish0image.getWidth(),fish0image.getHeight(),this.getWidth(),this.getHeight(),movehorizontal),
new fishobject(fish1image,fish1image.getWidth(),fish1image.getHeight(),this.getWidth(),this.getHeight(),movehorizontal),
new fishobject(fish2image,fish2image.getWidth(),fish2image.getHeight(),this.getWidth(),this.getHeight(),movehorizontal),
new fishobject(fish3image,fish3image.getWidth(),fish3image.getHeight(),this.getWidth(),this.getHeight(),movehorizontal),
new fishobject(fish4image,fish4image.getWidth(),fish4image.getHeight(),this.getWidth(),this.getHeight(),movevertical),
new fishobject(fish5image,fish5image.getWidth(),fish5image.getHeight(),this.getWidth(),this.getHeight(),movediagonal),
new fishobject(fish6image,fish6image.getWidth(),fish6image.getHeight(),this.getWidth(),this.getHeight(),movehorizontal)
};
enemyshiparray=new enemyship[]{
new enemyship(enemyshipimage,this.getWidth(),this.getHeight()),
new enemyship(enemyshipimage,this.getWidth(),this.getHeight()),
new enemyship(enemyshipimage,this.getWidth(),this.getHeight()),
new enemyship(enemyshipimage,this.getWidth(),this.getHeight()),
new enemyship(enemyshipimage,this.getWidth(),this.getHeight())
};
shipmissile=new Missile[]{
new Missile(shipmissileimage,this.getWidth(),this.getHeight(),10,5),
new Missile(shipmissileimage,this.getWidth(),this.getHeight(),10,5),
new Missile(shipmissileimage,this.getWidth(),this.getHeight(),10,5)
};
enemymissile=new Missile[]{
new Missile(enemymissileimage,this.getWidth(),this.getHeight(),10,3),
new Missile(enemymissileimage,this.getWidth(),this.getHeight(),10,3),
new Missile(enemymissileimage,this.getWidth(),this.getHeight(),10,3),
new Missile(enemymissileimage,this.getWidth(),this.getHeight(),10,3),
new Missile(enemymissileimage,this.getWidth(),this.getHeight(),10,3)
};
background=new TiledLayer(7,29,backimage,40,10);
for (int i=0;i<29;i++)
for(int j=0;j<7;j++){
background.setCell(j,i,backgroundmap[i][j]);
}
bottomground=new TiledLayer(7,1,bottomimage,40,10);
for (int i=0;i<1;i++)
for(int j=0;j<7;j++){
bottomground.setCell(j,i,bottomgroundmap[i][j]);
}
shipsprite.setFrame(0);
enemyship_die.setFrame(0);
sunken1=new sunken(sunkenimage,this.getWidth());
sunken2=new sunken(sunkenimage,this.getWidth());
sunken1.setDrawX((this.getWidth()-sunkenimage.getWidth())/2);
shipwidth=ship.getWidth();
shipheight=ship.getHeight();
enemyshipheight=enemyshipimage.getHeight();
}catch(Exception e){}
sunken2.setDrawX(this.getWidth());
gameover=false;
layermanager=new LayerManager();
shipX=20;
shipY=this.getHeight()/2;
System.gc();
thread=new Thread(this);
thread.start();
}
public void run() {
// TODO Auto-generated method stub
while (!gameover) {
while (!ispause && !gameover) {
try {
switch (speed) {
case 0:
Thread.sleep(showspeed);
break;
case 1:
Thread.sleep(showspeed - 10);
break;
case 2:
Thread.sleep(showspeed - 20);
break;
case 3:
Thread.sleep(showspeed - 30);
break;
case 4:
Thread.sleep(showspeed - 40);
break;
case 5:
Thread.sleep(showspeed - 50);
break;
}
} catch (InterruptedException e) {}
switch(score){
case 500:
if(score!=tmpscore){
if(level<5)
level++;
else
speed++;
}
break;
case 1000:
if(score!=tmpscore){
if(level<5)
level++;
else
speed++;
}
break;
case 1500:
if(score!=tmpscore){
if(speed<5)
speed++;
}
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -