⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 egg.java

📁 Position.java :辅助类 SerpentGameCanvas.java :游戏主控类 Maze.java :迷宫 SerpentGame.java :应用主控类 Serpent.java
💻 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 + -