📄 shrimpscreen.java
字号:
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.TiledLayer;
public class ShrimpScreen extends GameCanvas
{
private int r=1;
private Display dis;
private int mapfloor[][]; //背景
private int maplava[][]; //岩浆
private int mapwall[][]; //墙
private int maphome[][]; //家
private ShrimpLayer floor=new ShrimpLayer();
private ShrimpLayer wall=new ShrimpLayer();
private ShrimpLayer home=new ShrimpLayer();
private ShrimpLayer lava=new ShrimpLayer();
private LayerManager lm=new LayerManager();
private Graphics g=this.getGraphics();
private int w=getWidth();
private int h=getHeight();
private int ilava=0;
private int intlava[];
private ShrimpPlayer player[];
private ShrimpPlayer splayer;
private ShrimpSelect ss;
private TiledLayer tl=new TiledLayer(1,1,ShrimpImage.button,64,48);
private boolean b=true;
private int n=1;
public ShrimpScreen(Display dis)
{
super(true);
this.dis=dis;
this.setFullScreenMode(true);
clearScreen();
wall.setName("Wall");
home.setName("Home");
floor.setName("Floor");
lava.setName("Lava");
Num();
lm.paint(g,0,0);
this.flushGraphics();
tl.setCell(0,0,1);
new Thlava().start();
new KeyThread().start();
new AllThread().start();
}
public void clearScreen()
{
g.setColor(0xffffff);
g.fillRect(0,0,w,h+10);
}
class Thlava extends Thread //岩浆动画线程
{
public void run()
{
while(true)
{
lava.setAnimatedTile(-1,intlava[ilava]);
ilava++;
ilava%=2;
try
{
Thlava.sleep(500);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
class KeyThread extends Thread //键盘控制线程
{
public void run()
{
AGAIN:
while(true)
{
int key=ShrimpScreen.this.getKeyStates();
for(int i=0;i<player.length;i++)
{
if(player[i]==null) continue AGAIN;
}
if(b)
{
for(int i=0;i<player.length;i++)
{
if((key&GameCanvas.DOWN_PRESSED)!=0)
{
player[i].changeDir(ShrimpPlayer.Shrimp_DOWN);
player[i].move(lm);
}
if((key&GameCanvas.UP_PRESSED)!=0)
{
player[i].changeDir(ShrimpPlayer.Shrimp_UP);
player[i].move(lm);
}
if((key&GameCanvas.LEFT_PRESSED)!=0)
{
player[i].changeDir(ShrimpPlayer.Shrimp_LEFT);
player[i].move(lm);
}
if((key&GameCanvas.RIGHT_PRESSED)!=0)
{
player[i].changeDir(ShrimpPlayer.Shrimp_RIGHT);
player[i].move(lm);
}
if((key&GameCanvas.FIRE_PRESSED)!=0)
{
splayer=new ShrimpPlayer(lm);
//splayer.setPosition(0,0);
splayer.setLayer(lm);
lmremove();
lm.append(tl);
lm.append(splayer);
lmappend();
b=false;
}
}
Notouch();
isDead();
isHome();
}
if(!b)
{
if((key&GameCanvas.DOWN_PRESSED)!=0)
{
splayer.changeDir(ShrimpPlayer.Shrimp_DOWN);
splayer.move(lm);
n++;
if(n==4)
{
n=3;
splayer.moveR();
}
}
if((key&GameCanvas.UP_PRESSED)!=0)
{
splayer.changeDir(ShrimpPlayer.Shrimp_UP);
splayer.move(lm);
n--;
if(n==0)
{
n=1;
splayer.moveR();
}
}
if((key&GameCanvas.FIRE_PRESSED)!=0)
{
if(n==1)
{
lm.remove(tl);
lm.remove(splayer);
splayer=null;
b=true;
}
if(n==2)
{
lmremove();
for(int i=0;i<player.length;i++)
{
ShrimpScreen.this.lm.remove(player[i]);
}
Num();
}
if(n==3)
{
ss=new ShrimpSelect(dis);
dis.setCurrent(ss);
}
}
}
try
{
Thread.sleep(100);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
class AllThread extends Thread //总线程
{
public void run()
{
while(true)
{
clearScreen();
lm.paint(g,0,0);
flushGraphics();
try
{
Thread.sleep(10);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
public void Notouch() //使虾子不重合
{
boolean r=true;
while(r)
{
r=false;
for(int i=0;i<player.length;i++)
{
for(int j=i+1;j<player.length;j++)
{
if(player[i].getX()==player[j].getX()&&player[i].getY()==player[j].getY())
{
player[i].moveR();
r=true;
}
}
}
}
}
public void isDead() //虾子死亡
{
for(int i=0;i<player.length;i++)
{
if(player[i]!=null && player[i].isDead(lm))
{
lm.remove(player[i]);
lm.insert(new ShrimpDead(player[i].getX(),player[i].getY(),lm),0);
player[i]=null;
}
}
}
public void isHome() //虾子回家
{
boolean ish=true;
for(int i=0;i<player.length;i++)
{
ish=ish && player[i].ishome(lm);
}
if(ish)
{
r++;
lmremove();
for(int i=0;i<player.length;i++)
{
ShrimpScreen.this.lm.remove(player[i]);
}
Num();
}
}
public void Num() //关口
{
switch(r)
{
case 1:
mapfloor=ShrimpMap.mapfloor1;
maplava=ShrimpMap.maplava1;
mapwall=ShrimpMap.mapwall1;
maphome=ShrimpMap.maphome1;
player=new ShrimpPlayer[2];
for(int i=0;i<player.length;i++)
{
player[i]=new ShrimpPlayer(new LayerManager());
}
player[0].setPosition(128,64);
player[1].setPosition(128,144);
break;
case 2:
mapfloor=ShrimpMap.mapfloor2;
maplava=ShrimpMap.maplava2;
mapwall=ShrimpMap.mapwall2;
maphome=ShrimpMap.maphome2;
player=new ShrimpPlayer[4];
for(int i=0;i<player.length;i++)
{
player[i]=new ShrimpPlayer(new LayerManager());
}
player[0].setPosition(176,80);
player[1].setPosition(176,96);
player[2].setPosition(176,112);
player[3].setPosition(176,128);
break;
case 3:
mapfloor=ShrimpMap.mapfloor3;
maplava=ShrimpMap.maplava3;
mapwall=ShrimpMap.mapwall3;
maphome=ShrimpMap.maphome3;
player=new ShrimpPlayer[8];
for(int i=0;i<player.length;i++)
{
player[i]=new ShrimpPlayer(new LayerManager());
}
player[0].setPosition(48,96);
player[1].setPosition(48,112);
player[2].setPosition(80,48);
player[3].setPosition(80,160);
player[4].setPosition(112,48);
player[5].setPosition(112,160);
player[6].setPosition(144,96);
player[7].setPosition(144,112);
break;
}
for(int i=0;i<player.length;i++)
{
player[i].setLayer(lm);
lm.append(player[i]);
}
wall.fillMap(mapwall);
home.fillMap(maphome);
floor.fillMap(mapfloor);
intlava=new int[]{4,5};
lava.createAnimatedTile(intlava[0]);
lava.fillMap(maplava);
lmappend();
}
public void lmappend()
{
lm.append(wall);
lm.append(home);
lm.append(floor);
lm.append(lava);
}
public void lmremove()
{
ShrimpScreen.this.lm.remove(wall);
ShrimpScreen.this.lm.remove(home);
ShrimpScreen.this.lm.remove(floor);
ShrimpScreen.this.lm.remove(lava);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -