📄 egg.java
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
class Egg extends Thread
{
private Serpent serpent;
private SerpentGameCanvas gameCanvas;
final static int PRE_BORN=0;
final static int PRE_HATCH=1;
final static int HAVE_HATCHED=2;
final static int HATCH=0;
final static int NO_HATCH=1;
int stage;
int type;
boolean bLive;
Position pos=null;
// protected Random rand=new Random((new Date()).getTime());
Egg(SerpentGameCanvas canv, Serpent sep)
{
gameCanvas=canv;
serpent=sep;
pos=new Position();
stage=PRE_BORN;
if( sep.type==Serpent.PLAYER )
type=NO_HATCH;
else
type=HATCH;
bLive=false;
}
public void getKilled()
{
bLive=false;
}
public void run()
{
try {
bLive=true;
// System.out.println("new egg");
stage=PRE_BORN;
int randNumber=Math.abs( gameCanvas.rand.nextInt() % 20 );
sleep(20000 + randNumber*1000);
// sleep(10000);
if( !bornEgg(serpent)) return;
Rect rt=new Rect(pos, gameCanvas.CELL_WIDTH);
gameCanvas.repaint(rt.left, rt.top, rt.width+1, rt.height+1);
if( type==NO_HATCH ) return; // leave to gameCanvas to control that egg
sleep(10000);
if( !hatchEgg()) return;
rt=new Rect(pos, gameCanvas.CELL_WIDTH);
gameCanvas.repaint(rt.left, rt.top, rt.width+1, rt.height+1);
}
catch(Exception ex)
{
System.out.println("egg error!");
ex.printStackTrace();
}
}
private boolean bornEgg(Serpent sep)
{
synchronized(gameCanvas.npc) {
if( !bLive || !serpent.bLive ) {
return false;
}
stage=PRE_HATCH;
int len=sep.body.size();
pos=(Position)sep.body.elementAt( len-1 );
sep.hurtBody(len-1);
pos.setValue(pos);
if( sep.type==Serpent.PLAYER ) {
if( gameCanvas.eggp==null )
gameCanvas.eggp=this;
else
return false;
}
else {
synchronized(gameCanvas.eggList) {
gameCanvas.eggList.addElement(this);
}
// System.out.println("egg " +pos+" of "+serpent+" add to egglist");
// System.err.print("remain eggs ");
// for( int j=0;j<gameCanvas.eggList.size();j++ )
// System.err.print(((Egg)gameCanvas.eggList.elementAt(j)).pos);
// System.err.println();
// for npc serpent, she will born more
serpent.newEgg();
}
}
// System.err.println("egg born");
return true;
}
private boolean hatchEgg()
{
synchronized(gameCanvas.eggList) {
if( !bLive ) return false;
if( isGhost())
System.err.println("Ghost Egg "+ this + " at " + pos);
stage=HAVE_HATCHED;
gameCanvas.eggList.removeElement(this);
bLive=false;
Serpent sep;
sep=new RunnerSerpent(gameCanvas, gameCanvas.maze, new Position(pos), 1);
gameCanvas.npc.addElement(sep);
sep.start();
}
// System.err.println("egg hatched");
return true;
}
protected boolean isGhost()
{
for( int i=0;i<gameCanvas.eggList.size();i++ ) {
if( ((Egg)gameCanvas.eggList.elementAt(i))==this )
return false;
}
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -