📄 frog.java
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
class Frog extends Thread
{
final protected SerpentGameCanvas gameCanvas;
final protected Maze maze;
public Position pos;
public boolean bLive;
// protected Random rand=new Random((new Date()).getTime());
Vector invalidAreas;
Frog(SerpentGameCanvas canv, Maze m, Position initPos)
{
gameCanvas=canv;
maze=m;
pos=new Position(initPos);
bLive=false;
invalidAreas=new Vector();
}
public void run()
{
try {
int randNumber=Math.abs( gameCanvas.rand.nextInt() % 10 );
sleep(randNumber*1000);
bLive=true;
do {
invalidAreas.removeAllElements();
invalidAreas.addElement(pos);
move();
invalidAreas.addElement(pos);
detectEgg();
detectEggP();
for( int i=0;i<invalidAreas.size();i++ ) {
Position pt=(Position)invalidAreas.elementAt(i);
Rect rt=new Rect(pt, gameCanvas.CELL_WIDTH);
gameCanvas.repaint(rt.left, rt.top, rt.width+1, rt.height+1);
}
// gameCanvas.serviceRepaints();
sleep(2000);
} while(bLive);
}
catch(Exception ex)
{
System.out.println("frog error!");
System.out.println(pos);
ex.printStackTrace();
}
}
protected void move()
{
Position posDiff=new Position();
int randomNum=Math.abs( gameCanvas.rand.nextInt()) % 5;
switch(randomNum) {
case 0:
posDiff.setValue(0,-1);
break;
case 1:
posDiff.setValue(0,1);
break;
case 2:
posDiff.setValue(-1,0);
break;
case 3:
posDiff.setValue(1,0);
break;
default:
// System.out.println("no move " + randomNum);
return;
}
Position nextPos=new Position(pos);
nextPos.add(posDiff);
if( nextPos.outOfRange(0,0, Maze.WIDTH-1, Maze.HEIGHT-1 )) {
// System.out.println("conflict " + randomNum + pos);
return;
}
pos.setValue(nextPos);
// System.out.println(pos);
}
public void getKilled()
{
bLive=false;
// stop();
}
protected void detectEggP()
{
if( gameCanvas.eggp==null ) return;
synchronized(gameCanvas) {
if( pos.equals(gameCanvas.eggp.pos)) {
gameCanvas.eggp.getKilled();
gameCanvas.eggp=null;
gameCanvas.player.newEgg();
}
}
}
protected void detectEgg()
{
synchronized(gameCanvas.eggList) {
for( int i=0;i<gameCanvas.eggList.size();i++ ) {
Egg egg=(Egg)gameCanvas.eggList.elementAt(i);
if( pos.equals(egg.pos)) {
egg.getKilled();
}
}
// a little confusing
for( int i=0;i<gameCanvas.eggList.size();i++ ) {
Egg egg=(Egg)gameCanvas.eggList.elementAt(i);
if( !egg.bLive ) {
// System.err.println("remove egg by frog "+egg.pos);
gameCanvas.eggList.removeElementAt(i);
i--;
// 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();
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -