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

📄 shrimpscreen.java

📁 刚刚编的j2me 小游戏
💻 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 + -