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

📄 gamemap.java

📁 手机游戏连连看JAVA源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			g.setColor(24,142,24);
			xPos = 20 + 52 - (iTimeCount * 4);
			g.drawRect(xPos,113 + 4 ,iTimeCount * 4,4);
			g.fillRect(xPos,113 + 4,iTimeCount * 4,4);
			//strV = String.valueOf(iTimeCount);
			//g.drawString(strV, 0, 113, Graphics.LEFT | Graphics.TOP);
			
			g.setColor(0, 0, 255);
			//显示游戏关数
			strV = String.valueOf(m_GameLevelValue);
			g.drawString(strV, 0, 113, Graphics.LEFT | Graphics.TOP);

			
			//显示金币数
			strV = String.valueOf(m_GameCurAmt);
			g.drawString(strV, 90, 113, Graphics.LEFT | Graphics.TOP);
			

		} catch (IllegalArgumentException ei) {
			System.err.println("catch(IllegalArgumentException ei)");
		} catch (NullPointerException en) {
			System.err.println("catch(NullPointerException en");
		}
	}

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

		g.setColor(41, 24, 90);
		if (m_SelectOne) {//画选择框
			tx = 5 + (m_select_x - 1) * 13 + (m_select_x - 1) * 2 - 2;
			ty = 5 + (m_select_y - 1) * 13 + (m_select_y - 1) * 2 - 2;
			g.drawRect(tx, ty, 16, 16);
		}
		//画移动框
		tx = 4 + (m_role_x - 1) * 13 + (m_role_x - 1) * 2 - 1;
		ty = 4 + (m_role_y - 1) * 13 + (m_role_y - 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);
		//g.drawRect(tx,ty, 17, 17);
		//g.drawLine();

	}

	private void PaintGameMap(Graphics g) {

		int ix, iy, irx, iry;

		g.setColor(255, 182, 255);
		g.fillRect(0, 0, stPixel_x, stPixel_y);

		iry = 5;
		for (int y = 1; y < stMap_y - 1; y++) {
			irx = 5;
			for (int x = 1; x < stMap_x - 1; x++) {
				try {
					//位置已经为空
					if (m_map[y][x] == ISEMPTY) {
						irx += 2;
						continue;
					}

					//画出当前的图片
					g.drawImage(m_image[m_map[y][x]], irx + (x - 1) * stPic_x,
							iry + (y - 1) * stPic_y, Graphics.LEFT
									| Graphics.TOP);

				} catch (IllegalArgumentException ei) {
					System.err.println("catch(IllegalArgumentException ei)");
				} catch (NullPointerException en) {
					System.err.println("catch(NullPointerException en");
				}

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

	}

	//考虑四周空白的地方,不需要出现对准框
	public int RoleMove(int GameAction) {

		int iRtn;

		iRtn = 0;
		switch (GameAction) {
		case Canvas.LEFT:
			if ((m_role_x - 1) >= 1) {
				{
					m_role_x--;
				}
			}
			iRtn = 1;
			break;
		case Canvas.RIGHT:
			if ((m_role_x + 1) < stMap_x - 1) {
				{
					m_role_x++;
				}
			}
			iRtn = 1;
			break;
		case Canvas.UP:
			if ((m_role_y - 1) >= 1) {
				{
					m_role_y--;
				}
			}
			iRtn = 1;
			break;
		case Canvas.DOWN:
			if ((m_role_y + 1) < stMap_y - 1) {
				{
					m_role_y++;
				}
			}
			iRtn = 1;
			break;
		case Canvas.FIRE:
			//是否在空区域做了选择动作
			if (m_map[m_role_y][m_role_x] == ISEMPTY)
				break;

			if (!m_SelectOne) {
				//第一次选择
				m_select_x = m_role_x;
				m_select_y = m_role_y;
				m_SelectOne = true;

			} else {
				//是否重复点,如果重复点,取消上次所选择的
				if ((m_select_x == m_role_x) && (m_select_y == m_role_y)) {
					m_SelectOne = false;
					break;
				}

				//	System.out.println("sy:" + m_select_y + ";sx:" + m_select_x);
				//	System.out.println("ry:" + m_role_y + ";rx:" + m_role_x);
				//	System.out.println("map 1:" + m_map[m_select_y][m_select_x]);
				//	System.out.println("map 2:" + m_map[m_role_y][m_role_x]);
				//第二次选择
				if ((m_map[m_select_y][m_select_x] == m_map[m_role_y][m_role_x])
						&& (!m_cleanFlag))//还没有处理完已经连接好的块
				{

					if (CheckPoint(m_select_x, m_select_y, m_role_x, m_role_y) == 0) {
						m_SelectOne = false;

						//选择的与规则相符
						m_cleanFlag = true;
						m_cf_sx = m_select_x;
						m_cf_sy = m_select_y;
						m_cf_ex = m_role_x;
						m_cf_ey = m_role_y;

						iRtn = 2;

						m_iLeaveImageCount = m_iLeaveImageCount - 2;
						//m_map[m_select_y][m_select_x] = ISEMPTY;
						//m_map[m_role_y][m_role_x] = ISEMPTY;
						break;
					}
				}
				//选择的不合符规则
				m_select_x = m_role_x;
				m_select_y = m_role_y;
				m_SelectOne = true;
			}
			iRtn = 1;
			break;
		default:
			iRtn = 0;
			;
		}

		return iRtn;
	};

	//连接线的路径
	private void SetCntMaps(int x, int y) {

		int ix, iy;

		ix = x;
		iy = y;
		//System.out.println("x:" + ix + "/y:" + iy);

		if (m_CntMapsCount == 0) {
			m_CntX[m_CntMapsCount] = x;
			m_CntY[m_CntMapsCount] = y;
			m_CntMapsCount++;
			return;
		}

		if (((x == m_CntX[m_CntMapsCount - 1]) && (y == m_CntY[m_CntMapsCount - 1] + 1))
				|| ((x == m_CntX[m_CntMapsCount - 1]) && (y == m_CntY[m_CntMapsCount - 1] - 1))
				|| ((x == m_CntX[m_CntMapsCount - 1] + 1) && (y == m_CntY[m_CntMapsCount - 1]))
				|| ((x == m_CntX[m_CntMapsCount - 1] - 1) && (y == m_CntY[m_CntMapsCount - 1]))) {
		} else {
			for (;;) {

				if (((x == m_CntX[m_CntMapsCount - 1]) && (y == m_CntY[m_CntMapsCount - 1] + 1))
						|| ((x == m_CntX[m_CntMapsCount - 1]) && (y == m_CntY[m_CntMapsCount - 1] - 1))
						|| ((x == m_CntX[m_CntMapsCount - 1] + 1) && (y == m_CntY[m_CntMapsCount - 1]))
						|| ((x == m_CntX[m_CntMapsCount - 1] - 1) && (y == m_CntY[m_CntMapsCount - 1])))
					break;
				m_CntMapsCount--;
			}
		}

		m_CntX[m_CntMapsCount] = x;
		m_CntY[m_CntMapsCount] = y;

		m_CntMapsCount++;
	}

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

		//	int isx, isy, itx, ity;

		//	isx = iSx;
		//	isy = iSy;
		//	itx = iTx;
		//	ity = iTy;
		//	System.out.println("it is; sx:" + isx + ",sy:" + isy + ",tx:" + itx
		//			+ ",ty:" + ity);

		//*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
		//up
		m_CntMapsCount = 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 (m_map[y1][iSx] != ISEMPTY)
					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 (m_map[y1][x2] != ISEMPTY)
							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 (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // down
								for (y2 = (int) (y1 + 1); y2 <= iTy; y2++) {
									if (y2 == iTy) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (m_map[y2][x2] != ISEMPTY)
										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 (m_map[y1][x2] != ISEMPTY)
							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 (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // down
								for (y2 = (int) (y1 + 1); y2 <= iTy; y2++) {
									if (y2 == iTy) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				}

			} // end of up

		//*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
		//down
		m_CntMapsCount = 0;
		SetCntMaps(iSx, iSy);
		if (iSy < stMap_y)
			for (y1 = (int) (iSy + 1); y1 < stMap_y; y1++) {
				if ((y1 == iTy) && (iTx == iSx)) {
					SetCntMaps(iTx, iTy);
					return 0;
				}

				if (m_map[y1][iSx] != ISEMPTY)
					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 (m_map[y1][x2] != ISEMPTY)
							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 (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // down
								for (y2 = (int) (y1 + 1); y2 <= iTy; y2++) {
									if (y2 == iTy) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (m_map[y2][x2] != ISEMPTY)
										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 (m_map[y1][x2] != ISEMPTY)
							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 (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // down
								for (y2 = (int) (y1 + 1); y2 <= iTy; y2++) {
									if (y2 == iTy) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				}

			} // end of down

		//*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
		//left
		m_CntMapsCount = 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 (m_map[iSy][x1] != ISEMPTY)
					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 (m_map[y2][x1] != ISEMPTY)
							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 (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // right
								for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) {
									if (x2 == iTx) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (m_map[y2][x2] != ISEMPTY)
										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 (m_map[y2][x1] != ISEMPTY)
							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 (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // right
								for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) {
									if (x2 == iTx) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				}

			} // end of left

		//*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
		//right
		m_CntMapsCount = 0;
		SetCntMaps(iSx, iSy);
		if (iSx < stMap_x)
			for (x1 = (int) (iSx + 1); x1 < stMap_x; x1++) {
				if ((x1 == iTx) && (iSy == iTy)) {
					SetCntMaps(iTx, iTy);
					return 0;
				}

				if (m_map[iSy][x1] != ISEMPTY)
					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 (m_map[y2][x1] != ISEMPTY)
							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 (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // right
								for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) {
									if (x2 == iTx) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (m_map[y2][x2] != ISEMPTY)
										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 (m_map[y2][x1] != ISEMPTY)
							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 (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							} else { // right
								for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) {
									if (x2 == iTx) {
										SetCntMaps(iTx, iTy);
										return 0;
									}
									if (m_map[y2][x2] != ISEMPTY)
										break;
									SetCntMaps(x2, y2);
								}
							}
						}

					}
				}

			} // end of right

		return 1;
	}
}

⌨️ 快捷键说明

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