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

📄 map.java

📁 一个RPG游戏的DEMO.用到了脚本技术。图片也有封装过。
💻 JAVA
字号:
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;

class Map
{
	private TiledLayer mapLayers[];
	//private Charactor npc[];
	private Other others[];
	private Charactor me;
	public static final int REACHABLE=0,UNREACHABLE=1;
	private final int CELL=16,DOWN[]={0},UP[]={9},RIGHT[]={3},LEFT[]={6},MOVEDOWN[]={1,0,2,0},MOVERIGHT[]= {4, 3, 5, 3},MOVELEFT[]= {7, 6, 8, 6},MOVEUP[]= {10, 9, 11, 9};
	public int mapId,entrance[][];
	private boolean hasEnemy=false;
	private Image charImg;
	private String mapName;
	
	
	public Map(int mapId,int mapState,int x,int y)
	{
		mapLayers=new TiledLayer[2];
		this.mapId=mapId;
		int reach[][]=null,unreach[][]=null;
		Image img;
		switch(mapId)
		{
			case 0:
				hasEnemy=false;
				mapName="屋内一层";
				reach=Resourse.readMap(0);
				unreach=Resourse.readMap(1);
				img=Resourse.readImage(Resourse.ROOM);
				mapLayers[0]=new TiledLayer(10,10,img,CELL,CELL);
				mapLayers[1]=new TiledLayer(10,10,img,CELL,CELL);
				for(int i=0;i<10;i++)
				{
					for(int j=0;j<10;j++)
					{
						mapLayers[0].setCell(i,j,reach[i][j]);
						mapLayers[1].setCell(i,j,unreach[i][j]);
					}
				}
				others=new Other[2];
				others[0]=new Other(6,6);
				entrance=new int[2][5];
				entrance[0][0]=1;
				entrance[0][1]=5;
				entrance[0][2]=1;
				entrance[0][3]=2;
				entrance[0][4]=4;
				entrance[1][0]=3;
				entrance[1][1]=8;
				entrance[1][2]=2;
				entrance[1][3]=5;
				entrance[1][4]=6;
				if(mapState==0)
					others[1]=new Other(2,2,1);
				else if(mapState==1)
				{
					mapLayers[1].setCell(2,2,11);
					others[1]=new Other(2,2,0);
				}
				break;
			case 1:
				hasEnemy=false;
				mapName="屋内地下";
				reach=Resourse.readMap(2);
				unreach=Resourse.readMap(3);
				img=Resourse.readImage(Resourse.ROOM);
				mapLayers[0]=new TiledLayer(10,10,img,CELL,CELL);
				mapLayers[1]=new TiledLayer(10,10,img,CELL,CELL);
				for(int i=0;i<10;i++)
				{
					for(int j=0;j<10;j++)
					{
						mapLayers[0].setCell(i,j,reach[i][j]);
						mapLayers[1].setCell(i,j,unreach[i][j]);
					}
				}
				others=new Other[1];
				entrance=new int[1][5];
				entrance[0][0]=1;
				entrance[0][1]=5;
				entrance[0][2]=0;
				entrance[0][3]=2;
				entrance[0][4]=4;
				if(mapState==0)
					others[0]=new Other(4,2,150);
				else if(mapState==1)
				{
					mapLayers[1].setCell(4,2,11);
					others[0]=new Other(4,2,0);
				}
				break;
			case 2:
				hasEnemy=true;
				mapName="树林一";
				reach=Resourse.readMap(4);
				unreach=Resourse.readMap(5);
				img=Resourse.readImage(Resourse.GROUND);
				mapLayers[0]=new TiledLayer(10,10,img,CELL,CELL);
				mapLayers[1]=new TiledLayer(10,10,img,CELL,CELL);
				for(int i=0;i<10;i++)
				{
					for(int j=0;j<10;j++)
					{
						mapLayers[0].setCell(i,j,reach[i][j]);
						mapLayers[1].setCell(i,j,unreach[i][j]);
					}
				}
				others=new Other[1];
				others[0]=new Other(6,7,"云深不知处");
				entrance=new int[2][5];
				entrance[0][0]=5;
				entrance[0][1]=6;
				entrance[0][2]=0;
				entrance[0][3]=3;
				entrance[0][4]=6;
				break;
			default:
				break;
		}
		charImg=Resourse.readImage(Resourse.MAINCHAR);
		me=new Charactor(charImg,16,25);
		me.setPosition(x,y);
	}
	
	String getMapName()
	{
		return mapName;
	}
	
	Other[] getOthers()
	{
		return others;
	}
	
	Charactor getMe()
	{
		return me;
	}
	
	int[][] getEntrance()
	{
		return entrance;
	}
	
	TiledLayer getLayer(int num)
	{
		return mapLayers[num];
	}
	
	boolean hasEnemy()
	{
		return hasEnemy;
	}
	
	int getMapId()
	{
		return mapId;
	}
	
	Map toMap(int mapId,int mapState,int x,int y)
	{
		return (new Map(mapId,mapState,x,y));
	}
	
	class Charactor extends Sprite
	{
		private int fX,fY,foot,face;
		public static final int Down=0,Right=1,Up=2,Left=3;
		
		public Charactor(Image arg0, int arg1, int arg2) 
		{
			super(arg0, arg1, arg2);
			fX=0;
			fY=0;
			foot=4;
			setFrameSequence(DOWN);
		}	
		
		void up()
		{
			setFrameSequence(MOVEUP);
			fX=0;
			fY=-1;
			face=Up;
		}
		
		void down()
		{
			setFrameSequence(MOVEDOWN);
			fX=0;
			fY=1;
			face=Down;
		}
		
		void left()
		{
			setFrameSequence(MOVELEFT);
			fX=-1;
			fY=0;
			face=Left;
		}
		
		void right()
		{
			setFrameSequence(MOVERIGHT);
			fX=1;
			fY=0;
			face=Right;
		}
		
		int getFace()
		{
			return face;
		}
		
		void stop()
		{
			if(fX==1)
			{
				setFrameSequence(RIGHT);
				face=Right;
			}
			else if(fX==-1)
			{
				setFrameSequence(LEFT);
				face=Left;
			}
			else if(fY==1)
			{
				setFrameSequence(DOWN);
				face=Down;
			}
			else if(fY==-1)
			{
				setFrameSequence(UP);
				face=Up;
			}
			fX=0;
			fY=0;
		}
		
		void go()
		{
			if((fY==-1)&&(mapLayers[UNREACHABLE].getCell((getX()+8)/16,(getY()+16-3)/16)!=0))
				stop();
			else if(fY==1&&(mapLayers[UNREACHABLE].getCell((getX()+8)/16,(getY()+25+3)/16)!=0))
				stop();
			else if(fX==-1&&(mapLayers[UNREACHABLE].getCell((getX()-3)/16,(getY()+25)/16)!=0))
				stop();
			else if(fX==1&&(mapLayers[UNREACHABLE].getCell((getX()+16+3)/16,(getY()+25)/16)!=0))
				stop();
			move(fX*foot,fY*foot);
			nextFrame();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -