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

📄 map类的源代码.txt

📁 j2me书中和程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
			g.drawString(strV, 0, 113, Graphics.LEFT | Graphics.TOP);

			
			strV = String.valueOf(gameCount);
			g.drawString(strV, 90, 113, Graphics.LEFT | Graphics.TOP);
			

		} 
		catch (Exception ex)
		{
			ex.printStackTrace();
		}
	}

	private void PaintCourse(Graphics g) 
	{
		int tx, ty;

		g.setColor(41, 24, 90);
		if (flag) 
		{//画选择框
			tx = 5 + (selectx - 1) * 13 + (selectx - 1) * 2 - 2;
			ty = 5 + (selecty - 1) * 13 + (selecty - 1) * 2 - 2;
			g.drawRect(tx, ty, 16, 16);
		}
		//画移动框
		tx = 4 + (rolex - 1) * 13 + (rolex - 1) * 2 - 1;
		ty = 4 + (roley - 1) * 13 + (roley - 1) * 2 - 1;

		g.drawLine(tx, ty, tx + 5, ty);
		g.drawLine(tx + 10, ty, tx + 16, ty);

		g.drawLine(tx, ty, tx, ty + 5);
		g.drawLine(tx, ty + 10, tx, ty + 16);

		g.drawLine(tx + 16, ty, tx + 16, ty + 5);
		g.drawLine(tx + 16, ty + 10, tx + 16, ty + 16);

		g.drawLine(tx, ty + 16, tx + 5, ty + 16);
		g.drawLine(tx + 10, ty + 16, tx + 16, ty + 16);

		g.drawLine(tx + 8, ty + 4, tx + 8, ty + 11);
		g.drawLine(tx + 4, ty + 8, tx + 11, ty + 8);


	}

	private void PaintGameMap(Graphics g) 
	{

		int ix, iy, irx, iry;

		g.setColor(255, 182, 255);
		g.fillRect(0, 0, px, py);

		iry = 5;
		for (int y = 1; y < my - 1; y++) 
		{
			irx = 5;
			for (int x = 1; x < mx - 1; x++) 
			{
				try 
				{
					//位置已经为空
					if (map[y][x] == e) 
					{
						irx += 2;
						continue;
					}

					//画出当前的图片
					g.drawImage(image[map[y][x]], irx + (x - 1) * picx,
							iry + (y - 1) * picy, Graphics.LEFT
									| Graphics.TOP);

				} 
				catch (Exception ex) 
				{
					ex.printStackTrace();
				}

				irx += 2;
			}
			iry += 2;
		}

	}

	
	public int RoleMove(int GameAction) 
	{

		int iRtn;

		iRtn = 0;
		switch (GameAction) 
		{
		case Canvas.LEFT:
			if ((rolex - 1) >= 1) 
			{
				{
					rolex--;
				}
			}
			iRtn = 1;
			break;
		case Canvas.RIGHT:
			if ((rolex + 1) < mx - 1) 
			{
				{
					rolex++;
				}
			}
			iRtn = 1;
			break;
		case Canvas.UP:
			if ((roley - 1) >= 1) 
			{
				{
					roley--;
				}
			}
			iRtn = 1;
			break;
		case Canvas.DOWN:
			if ((roley + 1) < my - 1) 
			{
				{
					roley++;
				}
			}
			iRtn = 1;
			break;
		case Canvas.FIRE:
			
			if (map[roley][rolex] == e)
				break;

			if (!flag) 
			{
				//第一次选择
				selectx = rolex;
				selecty = roley;
				flag = true;

			} 
			else 
			{
				if ((selectx == rolex) && (selecty == roley)) 
				{
					flag = false;
					break;
				}



				if ((map[selecty][selectx] == map[roley][rolex])&& (!clean))
				{

					if (CheckPoint(selectx, selecty, rolex, roley) == 0) 
					{
						flag = false;

						
						clean = true;
						sx = selectx;
						sy = selecty;
						ex = rolex;
						ey = roley;

						iRtn = 2;

						imagecount = imagecount - 2;
						
						break;
					}
				}
				
				selectx = rolex;
				selecty = roley;
				flag = true;
			}
			iRtn = 1;
			break;
		default:
			iRtn = 0;
			;
		}

		return iRtn;
	};

	
	private void SetCntMaps(int x, int y) 
	{

		int ix, iy;

		ix = x;
		iy = y;
		

		if (cmc == 0) 
		{
			cx[cmc] = x;
			cy[cmc] = y;
			cmc++;
			return;
		}

		if (((x == cx[cmc - 1]) && (y == cy[cmc - 1] + 1))
				|| ((x == cx[cmc - 1]) && (y == cy[cmc - 1] - 1))
				|| ((x == cx[cmc - 1] + 1) && (y == cy[cmc - 1]))
				|| ((x == cx[cmc - 1] - 1) && (y == cy[cmc - 1]))) 
		{
			
		} 
		else 
		{
			while(true) 
			{

				if (((x == cx[cmc - 1]) && (y == cy[cmc - 1] + 1))
						|| ((x == cx[cmc - 1]) && (y == cy[cmc - 1] - 1))
						|| ((x == cx[cmc - 1] + 1) && (y == cy[cmc - 1]))
						|| ((x == cx[cmc - 1] - 1) && (y == cy[cmc - 1])))
					break;
				cmc--;
			}
		}

		cx[cmc] = x;
		cy[cmc] = y;

		cmc++;
	}

	private int CheckPoint(int iSx, int iSy, int iTx, int iTy) 
	{
		int x1, x2, y1, y2;

		
		cmc = 0;
		SetCntMaps(iSx, iSy);
		if (iSy > 0)
			for (y1 = (int) (iSy - 1); y1 >= 0; y1--) 
			{
				if ((y1 == iTy) && (iSx == iTx)) 
				{
					SetCntMaps(iTx, iTy);
					return 0;
				}

				if (map[y1][iSx] != e)
					break;

				SetCntMaps(iSx, y1);
				if (iTx < iSx) 
				{ // left
					for (x2 = (int) (iSx - 1); x2 >= iTx; x2--) 
					{
						if ((x2 == iTx) && (y1 == iTy)) 
						{
							SetCntMaps(iTx, iTy);
							return 0;
						}

						if (map[y1][x2] != e)
							break;

						SetCntMaps(x2, y1);
						if (x2 == iTx) 
						{
							if (iTy < y1) 
							{// up
								for (y2 = (int) (y1 - 1); y2 >= iTy; y2--) 
								{
									if (y2 == iTy) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							} 
							else 
							{ // down
								for (y2 = (int) (y1 + 1); y2 <= iTy; y2++) 
								{
									if (y2 == iTy) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				} 
				else 
				{ // right
					for (x2 = (int) (iSx + 1); x2 <= iTx; x2++) 
					{
						if ((x2 == iTx) && (y1 == iTy)) 
						{
							SetCntMaps(iTx, iTy);
							return 0;
						}

						if (map[y1][x2] != e)
							break;

						SetCntMaps(x2, y1);
						if (x2 == iTx) 
						{
							if (iTy < y1) 
							{// up
								for (y2 = (int) (y1 - 1); y2 >= iTy; y2--) 
								{
									if (y2 == iTy) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							} 
							else 
							{ // down
								for (y2 = (int) (y1 + 1); y2 <= iTy; y2++) 
								{
									if (y2 == iTy) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				}

			} // end of up

		
		cmc = 0;
		SetCntMaps(iSx, iSy);
		if (iSy < my)
			for (y1 = (int) (iSy + 1); y1 < my; y1++) 
			{
				if ((y1 == iTy) && (iTx == iSx)) 
				{
					SetCntMaps(iTx, iTy);
					return 0;
				}

				if (map[y1][iSx] != e)
					break;

				SetCntMaps(iSx, y1);
				if (iTx < iSx) 
				{ // left
					for (x2 = (int) (iSx - 1); x2 >= iTx; x2--) 
					{
						if ((x2 == iTx) && (y1 == iTy)) 
						{
							SetCntMaps(iTx, iTy);
							return 0;
						}

						if (map[y1][x2] != e)
							break;

						SetCntMaps(x2, y1);
						if (x2 == iTx) 
						{
							if (iTy < y1) {// up
								for (y2 = (int) (y1 - 1); y2 >= iTy; y2--) 
								{
									if (y2 == iTy) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							} 
							else 
							{ // down
								for (y2 = (int) (y1 + 1); y2 <= iTy; y2++) 
								{
									if (y2 == iTy) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				} 
				else 
				{ // right
					for (x2 = (int) (iSx + 1); x2 <= iTx; x2++) 
					{
						if ((x2 == iTx) && (y1 == iTy)) 
						{
							SetCntMaps(iTx, iTy);
							return 0;
						}

						if (map[y1][x2] != e)
							break;

						SetCntMaps(x2, y1);
						if (x2 == iTx) 
						{
							if (iTy < y1) 
							{// up
								for (y2 = (int) (y1 - 1); y2 >= iTy; y2--) 
								{
									if (y2 == iTy) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							} 
							else 
							{ // down
								for (y2 = (int) (y1 + 1); y2 <= iTy; y2++) 
								{
									if (y2 == iTy) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				}

			} // end of down

		cmc = 0;
		SetCntMaps(iSx, iSy);
		if (iSx > 0)
			for (x1 = (int) (iSx - 1); x1 >= 0; x1--) 
			{
				if ((x1 == iTx) && (iSy == iTy)) 
				{
					SetCntMaps(iTx, iTy);
					return 0;
				}

				if (map[iSy][x1] != e)
					break;

				SetCntMaps(x1, iSy);
				if (iTy < iSy) { // up
					for (y2 = (int) (iSy - 1); y2 >= iTy; y2--) 
					{
						if ((y2 == iTy) && (x1 == iTx)) 
						{
							SetCntMaps(iTx, iTy);
							return 0;
						}

						if (map[y2][x1] != e)
							break;

						SetCntMaps(x1, y2);
						if (y2 == iTy) 
						{
							if (iTx < x1) 
							{// left
								for (x2 = (int) (x1 - 1); x2 >= iTx; x2--) 
								{
									if (x2 == iTx) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							} 
							else 
							{ // right
								for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) 
								{
									
									if (x2 == iTx) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				} 
				else 
				{ // down
					for (y2 = (int) (iSy + 1); y2 <= iTy; y2++) 
					{
						if ((y2 == iTy) && (x1 == iTx)) 
						{
							SetCntMaps(iTx, iTy);
							return 0;
						}

						if (map[y2][x1] != e)
							break;

						SetCntMaps(x1, y2);
						if (y2 == iTy) 
						{
							if (iTx < x1) 
							{// left
								for (x2 = (int) (x1 - 1); x2 >= iTx; x2--) 
								{
									if (x2 == iTx) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							} 
							else 
							{ // right
								for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) 
								{
									if (x2 == iTx) 
									{
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				}

			} 
		
		
		
		cmc = 0;
		SetCntMaps(iSx, iSy);
		if (iSx < mx)
			for (x1 = (int) (iSx + 1); x1 < mx; x1++) 
			{
				if ((x1 == iTx) && (iSy == iTy)) {
					SetCntMaps(iTx, iTy);
					return 0;
				}

				if (map[iSy][x1] != e)
					break;

				SetCntMaps(x1, iSy);
				if (iTy < iSy) { // up
					for (y2 = (int) (iSy - 1); y2 >= iTy; y2--) {
						if ((y2 == iTy) && (x1 == iTx)) {
							SetCntMaps(iTx, iTy);
							return 0;
						}

						if (map[y2][x1] != e)
							break;

						SetCntMaps(x1, y2);
						if (y2 == iTy) {
							if (iTx < x1) {// left
								for (x2 = (int) (x1 - 1); x2 >= iTx; x2--) {
									if (x2 == iTx) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // right
								for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) {
									if (x2 == iTx) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				} else { // down
					for (y2 = (int) (iSy + 1); y2 <= iTy; y2++) {
						if ((y2 == iTy) && (x1 == iTx)) {
							SetCntMaps(iTx, iTy);
							return 0;
						}

						if (map[y2][x1] != e)
							break;

						SetCntMaps(x1, y2);
						if (y2 == iTy) {
							if (iTx < x1) {// left
								for (x2 = (int) (x1 - 1); x2 >= iTx; x2--) {
									if (x2 == iTx) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // right
								for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) {
									if (x2 == iTx) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (map[y2][x2] != e)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				}

			} // end of right

		return 1;
	}
}

⌨️ 快捷键说明

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