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

📄 boxesworker.java

📁 手机小游戏仓库世家通过移动左右键来推箱子
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			{
				return true;
			}
		}
		return false;		
	}
	/**
	 * 移动人
	 * @param key 方向
	 * @return
	 */
	private void move(int key)
	{
		int r = man_row;	//定义一个参数r来存储man_row
		int c = man_col;	//定义一个参数c来存储man_col
		int r1 = man_row;	//定义一个参数r1来存储特殊man_row
		int c1 = man_col;	//定义一个参数c1来存储特殊man_col
		switch(key)			//判断按键
		{
		case LEFT_PRESSED:c--;c1--;c1--;break;	//当按下左键时
		case UP_PRESSED:r--;r1--;r1--;break;	//当按下上键时
		case RIGHT_PRESSED:c++;c1++;c1++;break;	//当按下右键时
		case DOWN_PRESSED:r++;r1++;r1++;break;	//当按下下键时
		}
		//人的前进方向是地板或目标位置
		if (map[r][c]==5||map[r][c]==2)
		{
			//移动人到地板
			if (map[r][c]==5)
			{
				map[r][c]=4;
			}
			else
			//移动人到目标位置
			{
				map[r][c]=11;
			}
			//人原来的位置如果是普通人,还原成地板
			if (map[man_row][man_col]==4)
			{
				map[man_row][man_col]=5;
			}
			//人原来的位置如果是目标位置上的人,还原成目标位置
			else
			{
				map[man_row][man_col]=2;
			}
			//更新全局变量人的位置
			man_row = r;
			man_col = c;
		}
		//人前进方向是箱子或在目标位置上的特殊箱子
		if (map[r][c]==3 ||map[r][c]==10)
		{
			//箱子前进方向是地板
			if(map[r1][c1]==5)
			{
				map[r1][c1] = 3;	//则把箱子移动到这格上
				if (map[r][c]==3)	//把箱子向前移动一格
				{
					map[r][c] = 4;	//人站到这格上
				}
				else
				{
					map[r][c] = 11;
				}			
				//人离开的位置如果是地板,还原成地板
				if (map[man_row][man_col]==4)
				{
					map[man_row][man_col]=5;
				}
				//人离开的位置如果是目标位置,还原成目标位置
				else
				{
					map[man_row][man_col]=2;
				}
				//更新人的位置,类的属性(全局变量)
				man_row = r;
				man_col = c;
			}
			//箱子前进方向是目标位置
			if(map[r1][c1]==2)
			{
				map[r1][c1] = 10;
				//箱子原来的位置如果是普通位置,人上来也是普通人
				if (map[r][c]==3)	
				{
					map[r][c] = 4;
				}
				//箱子原来的位置如果是目标位置,人上来之后,变成特殊的人,人在目标位置上
				else
				{
					map[r][c] = 11;
				}
				//人离开的时候,如果人在普通位置上,还原成地板
				if (map[man_row][man_col]==4)
				{				
					map[man_row][man_col]=5;
				}
				//人离开的时候,如果人在目标位置上,还原成目标位置
				else
				{					
					map[man_row][man_col]=2;
				}
				man_row = r;
				man_col = c;
			}
		}				
	}
	private int MainScreenIndex=0;
	//开始界面
	private void DrawScreenMain(Graphics g)
	{
		/**
		 * 清除背景
		 */
		g.setColor(0x000000);						//设置背景色为黑色
		g.fillRect(0,0,screenWidth,screenHeight);	//填充整个背景
		Font font = Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_LARGE);
		g.setFont(font);
		g.setColor(0x00FFF0);							//设置游戏标题的颜色
		g.drawString("仓库世家", 85, 50, 0);				//设置游戏标题文字和位置
		String caption[]={"开始","版本", "帮助","退出"};	//设置各个选项的名称
		for(int i=0;i<4;i++)							//设置各个选项的状态,是否被选中
		{
			if (MainScreenIndex==i)						//被选中则变为蓝色
			{
				g.setColor(0x0F00F0);
			}
			else										//未被选中的选项全为紫红色
			{
				g.setColor(0xFF00FF);
			}
			g.drawString(caption[i], 100, 80+i*20, 0);	//设置各个选项的位置
		}	
	}
	private void onKeyDownMain(int key)							//在主界面时的按键控制
	{
		switch(key)
		{
		case LEFT_PRESSED:MainScreenIndex--;break;				//当按下左键时选项向上移动
		case RIGHT_PRESSED:MainScreenIndex++;break;				//当按下右键时选项向下移动
		case UP_PRESSED:MainScreenIndex--;break;				//当按下上键时选项向上移动
		case DOWN_PRESSED:MainScreenIndex++;break;				//当按下下键时选项向下移动
		case FIRE_PRESSED:ScreenIndex = MainScreenIndex+1;break;//当按下确定键时进入相应界面
		}
		if (MainScreenIndex==-1) MainScreenIndex = 3;			//当选中第一项并按下上键时选中第四项
		if (MainScreenIndex==4) MainScreenIndex = 0;			//当选中第四项并按下下键时选中第一项
	}
	//帮助
	private void DrawScreenHelp(Graphics g)		//绘制帮助文档
	{
		/**
		 * 清除背景
		 */
		g.setColor(0x000000);						//设置背景色为黑色
		g.fillRect(0,0,screenWidth,screenHeight);	//填充整个背景		
		/**
		 * 显示帮助文档
		 */
		g.setColor(0xFFFFFF);					//设置帮助文档的文字颜色
		String str1,str2,str3;					//要输出3句话
		str1 = "游戏玩法:按“上”、“下”、“左”、" ;	//第一句
		str2 ="“右”键控制工人推动箱子到";			//第二句
		str3 ="指定地点。";						//第三句
		g.drawString(str1,0,0,0);				//输出第一句话,并设置它的位置
		g.drawString(str2,60,20,0);				//输出第二句话,并设置它的位置
		g.drawString(str3,70,40,0);				//输出第三句话,并设置它的位置
	}
	private void onKeyDownHelp(int key)			//当选中帮助选项并按下确认键时
	{
		ScreenIndex = 0;
	}
	//版本
	private void DrawScreenAbout(Graphics g)	//绘制版本文档
	{
		/**
		 * 清除背景
		 */
		g.setColor(0x000000);						//设置背景色为黑色
		g.fillRect(0,0,screenWidth,screenHeight);	//填充整个背景				
		/**
		 * 显示版本文档
		 */
		g.setColor(0xFFFFFF);		//设置版本文档的文字颜色
		String str1,str2;			//要输出2句话
		str1="制作人:**";			//第一句
		str2="制作时间:2008-8-8";	//第二句
		g.drawString(str1,0,0,0);	//输出第一句话,并设置它的位置
		g.drawString(str2,0,20,0);	//输出第二句话,并设置它的位置
	}
	private void onKeyDownAbout(int key)	//当选中版本选项并按下确认键时
	{
		ScreenIndex = 0;		
	}
	//游戏界面
	private void DrawScreenPlay(Graphics g)	//绘制开始界面
	{
		/**
		 * 清除背景
		 */
		g.setColor(0x000000);						//设置背景色为黑色
		g.fillRect(0,0,screenWidth,screenHeight);	//填充整个背景
		for(int i=0;i<map_row;i++)					//定义一个参数i
		for(int j=0;j<map_col;j++)					//定义一个参数j
		{
			if (map[i][j]==0)continue;				//当地图位置为0时
			int index=0;							//索引为0
			switch(map[i][j])						
			{
			case 5:index=0;break;					//事件5发生是索引为0
			case 11:index=4;break;					//事件11发生是索引为4
			default:
				index = map[i][j];
			}
			if (index == 4)							//当索引为4时
			{
				index = index + man_way;			//索引位置为当前索引位置家上人的移动
			}
			mapImage.setFrame(index);
			mapImage.setPosition(map_x+j*cell_width, map_y+i*cell_height);
			mapImage.paint(g);
		}
		g.setColor(0xFFFFFF);			//设置文字颜色为白色
		String str;						//定义文字
		if (levelOver())				//判断本关结束
		{
			str = "Mission Complane";	//显示“Mission Complane”
			g.drawString(str,0,20,0);	//设置文字的显示位置
		}	
	}
	private void onKeyDownPlay(int key)
	{
		//改变人的方向
		switch(key)
		{
		case LEFT_PRESSED:man_way = 1;break;		//当按下左键时人的移动情况为1
		case RIGHT_PRESSED:man_way = 2;break;		//当按下右键时人的移动情况为2
		case UP_PRESSED:man_way = 3;break;			//当按下上键时人的移动情况为3
		case DOWN_PRESSED:man_way = 4;break;		//当按下下键时人的移动情况为4
		case FIRE_PRESSED:ScreenIndex = 0;break;	//当按下确定键时游戏回到开始画面
		}
		//判断是否能够移动
		/*
		if (canMove(key))
		{
			move(key);
		}
		*/
		move(key);				
		//stop();		
	}
	private int ScreenIndex=0;
	private void onKeyDown(int key)			//当按键被按下再抬起时才产生事件
	{
		switch(ScreenIndex)					//在开始界面时
		{
		case 0: onKeyDownMain(key);break;	//进入和退出主界面设为事件0
		case 1: onKeyDownPlay(key);break; 	//当选中开始并按下确定为事件1
		case 2: onKeyDownAbout(key);break;	//当选中版本并按下确定为事件2
		case 3: onKeyDownHelp(key);break;	//当选中帮助并按下确定为事件3
		case 4: exit();break;				//当选中退出并按下确定为事件4
		}
	}
	int color = 1;
	private void drawScreen(Graphics g)		//进入各个界面
	{
		switch(ScreenIndex)					//在开始界面时
		{
		case 0: DrawScreenMain(g);break;	//绘制主界面	
		case 1: DrawScreenPlay(g);break; 	//绘制游戏界面
		case 2: DrawScreenAbout(g);break;	//绘制版本界面
		case 3: DrawScreenHelp(g);break;	//绘制帮界面
		case 4: exit();break;				//退出程序
		}		
	}
}

⌨️ 快捷键说明

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