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

📄 npc.java

📁 一个小游戏.可以在手机上用的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					if (cpc.bVar == CPC.B_VAR_DOOR) {
						r1x1 = cpc.nX;
						r1y1 = cpc.nY;
						r1x2 = cpc.nX + 16;
						r1y2 = cpc.nY + 16;

						r2x1 = nX;
						r2y1 = nY;
						r2x2 = nX + 16;
						r2y2 = nY + 16;

						if (r2y1 == cpc.nY) {
							if (r2x1 + 16 == cpc.nX) {
								isMapChange = true;

							}
							if (r2x1 - 16 == cpc.nX) {
								isMapChange = true;
							}

						}
						if (r2x1 == cpc.nX) {
							if (r2y1 + 16 == cpc.nY) {
								isMapChange = true;
							}
							if (r2y1 - 16 == cpc.nY) {
								isMapChange = true;
							}

						}
						if (isMapChange) {
							MyGameCanvas.instance.nMapId = cpc.nMapID;
							MyGameCanvas.instance
									.doStateChange(MyGameCanvas.SB_STATE_GAMEING);
							break;
						}

					}

				}
				// 宝物箱
				for (int i = 0; i < MyGameCanvas.vecticUnits.size(); i++) {
					CPC cpc = (CPC) MyGameCanvas.vecticUnits.elementAt(i);
					if (cpc.bVar == CPC.B_VAR_SAVING) {
						boolean tff = false;
						if (!cpc.isOpened) {
							// Consts.log("hello");
							if (r2y1 == cpc.nY) {
								if (r2x1 + 16 == cpc.nX) {
									if (Canvas.RIGHT == bDirection) {
										tff = true;
									}
								}
								if (r2x1 - 16 == cpc.nX) {
									if (Canvas.LEFT == bDirection) {
										tff = true;
									}
								}

							}
							if (r2x1 == cpc.nX) {
								if (r2y1 + 16 == cpc.nY) {
									if (Canvas.DOWN == bDirection) {
										tff = true;
									}
								}
								if (r2y1 - 16 == cpc.nY) {
									if (Canvas.UP == bDirection) {
										tff = true;
									}
								}

							}
							if (tff) {
								cpc.isOpened = true;
								// adddomoe
								cpc.anim.changeAction(Canvas.DOWN);
								cpc.anim.isStop = true;
								// Consts.log("heello");
								isFighting = false;
								nHP = nHPMax;
								MyGameCanvas.instance.strInfo = new String(
										"生命值全满");
								break;
							}
						}
					}
				}
				if (isFighting) {

					int num = 0;
					for (int i = 0; i < MyGameCanvas.instance.vecticUnits
							.size(); i++) {
						CPC cpc = (CPC) MyGameCanvas.instance.vecticUnits
								.elementAt(i);
						if (cpc.bVar == CPC.B_VAR_BOMB) {
							num++;
						}
					}
					if (num < MyGameCanvas.instance.nBombNumCMax) {
						MyGameCanvas.instance.cpc2 = new CPC(
								(byte) CPC.B_VAR_BOMB);
						MyGameCanvas.instance.cpc2.initBasic("LISA_BALL", 16,
								20, bDirection, 0, true, true, 0);
						MyGameCanvas.instance.cpc2.initAbsXY(nX, nY);

						MyGameCanvas.instance.cpc2.initParam(10, 50, 50, 50,
								50, 50, nAttackPower, 2);
						MyGameCanvas.instance.cpc2.initAnim(MyGameCanvas.instance.animBomb.copy());

						// MyGameCanvas.instance.cpc2.anim.changeAction(bDirection);
						// MyGameCanvas.instance.cpc2.anim.isStop = true;
						if (isBoomHere(MyGameCanvas.instance.cpc2.nX,
								MyGameCanvas.instance.cpc2.nY)) {

							// Consts.log("不能放置东西");
						} else {
							MyGameCanvas.instance.vecticUnits
									.addElement(MyGameCanvas.instance.cpc2);
						}

						MyGameCanvas.instance.cpc2 = null;
					}

					//

				}

			} else {
				for (int i = 0; i < MyGameCanvas.vecticUnits.size(); i++) {
					CPC cpc = (CPC) MyGameCanvas.vecticUnits.elementAt(i);
					if (cpc.bVar == CPC.B_VAR_BOX) {
						if (cpc.isHandleByNPC) {
							cpc.downBox();
							break;
						}
					}
				}
			}
		}
			break;
		default: {
			isMoving = false;
			anim.isStop = true;
		}
			break;
		}
	}

	public boolean isBoomHere(int x, int y) {
		for (int i = 0; i < MyGameCanvas.instance.vecticUnits.size(); i++) {
			CPC cpc = (CPC) MyGameCanvas.instance.vecticUnits.elementAt(i);
			if (cpc.bVar == cpc.B_VAR_BOMB) {
				if (cpc.nX == x && cpc.nY == y) {
					return true;
				}
			}

		}
		return false;

	}

	// up down left right ,是否检测墙体?
	// 对于特殊位置的碰撞进行单独的处理
	public boolean[] getCollosionWithMap(int x, int y) {
		boolean[] flags = new boolean[4];

		int tx[] = new int[4];
		int ty[] = new int[4];

		for (int i = 0; i < flags.length; i++) {
			flags[i] = false;
		}
		for (int i = 0; i < 4; i++) {

			for (int j = 0; j < nRectCollosion[i].length; j++) {
				boolean flag = false;
				int t_x0 = nRectCollosion[i][j][0] + x;
				int t_y0 = nRectCollosion[i][j][1] + y;

				int t_x1 = nRectCollosion[i][j][2] + x;
				int t_y1 = nRectCollosion[i][j][3] + y;

				tx[0] = t_x0 + 1;
				ty[0] = t_y0 + 1;

				tx[1] = t_x1 - 1;
				ty[1] = t_y0 + 1;

				tx[2] = t_x0 + 1;
				ty[2] = t_y1 - 1;

				tx[3] = t_x1 - 1;
				ty[3] = t_y1 - 1;
				for (int m = 0; m < 4; m++) {

					int tempx = tx[m] / Consts.SN_TILE_WIDTH;
					int tempy = ty[m] / Consts.SN_TILE_HEIGHT;

					if (!MyGameCanvas.isXYInTiles(tempx, tempy,
							MyGameCanvas.snsTiles)) {
						flags[i] = true;
						flag = true;
						break;

					} else {
						byte block_val = Consts
								.getTileVar((short) MyGameCanvas.snsTiles[tempy][tempx]);
						if (Consts.SB_TILE_NULL != block_val) {
							flags[i] = true;
							flag = true;

							break;
						}

					}
				}
				if (flag) {
					break;
				}
			}
		}

		return flags;
	}

	public boolean isCollsionWithCPC(int dir) {
		int r1x1 = 0;
		int r1y1 = 0;
		int r1x2 = 0;
		int r1y2 = 0;
		int r2x1 = nX;
		int r2y1 = nY;
		int r2x2 = nX + 16;
		int r2y2 = nY + 16;
		for (int i = 0; i < MyGameCanvas.vecticUnits.size(); i++) {
			CPC cpc = (CPC) (MyGameCanvas.vecticUnits.elementAt(i));
			r1x1 = cpc.nX;
			r1y1 = cpc.nY;
			r1x2 = cpc.nX + 16;
			r1y2 = cpc.nY + 16;
			if (MyGameCanvas.isIntersectRect(r1x1, r1y1, r1x2, r1y2, r2x1,
					r2y1, r2x2, r2y2)) {

				if (cpc.bVar == CPC.B_VAR_BOX || cpc.bVar == CPC.B_VAR_NPC
						|| cpc.bVar == CPC.B_VAR_DOOR
						|| cpc.bVar == CPC.B_VAR_SAVING) {
					if (cpc.bVar == CPC.B_VAR_BOX) {
						if (MyGameCanvas.instance.npcLisa.isHandleCPC) {
							if (cpc.isHandleByNPC == true) {
								continue;
							}
						}
					}
					return true;

				}
				if (isHandleCPC) {
					if (cpc.bVar == CPC.B_VAR_BOMB
							|| cpc.bVar == CPC.B_VAR_BOSS_SNAKE
							|| cpc.bVar == CPC.B_VAR_ZHEN) {
						if (cpc.bVar == CPC.B_VAR_BOSS_SNAKE) {
							delHp(-1);
						}
						if (cpc.bVar == CPC.B_VAR_ZHEN) {
							if (cpc.bBossState == 2) {
								delHp(-1);
							}
						}

					} else {
						if (cpc.bVar == CPC.B_VAR_BOMB
								|| cpc.bVar == CPC.B_VAR_BOSS_SNAKE
								|| cpc.bVar == CPC.B_VAR_ZHEN) {
							delHp(-1);
						} else {
							if (cpc.bVar == CPC.B_VAR_MAGIC_CPC_FIRE_BALL
									|| cpc.bVar == CPC.B_VAR_RABIT
									|| cpc.bVar == CPC.B_VAR_WORM) {
								delHp(-1);
							}
							// return true;
						}

					}
				} else {
					if (cpc.bVar == CPC.B_VAR_BOMB
							|| cpc.bVar == CPC.B_VAR_BOSS_SNAKE
							|| cpc.bVar == CPC.B_VAR_ZHEN) {
						if (cpc.bVar == CPC.B_VAR_BOSS_SNAKE) {
							delHp(-1);
						}
						if (cpc.bVar == CPC.B_VAR_ZHEN) {
							if (cpc.bBossState == 2) {
								delHp(-1);
							}
						}

					} else {
						if (cpc.bVar == CPC.B_VAR_MAGIC_CPC_FIRE_BALL
								|| cpc.bVar == CPC.B_VAR_RABIT
								|| cpc.bVar == CPC.B_VAR_WORM) {
							delHp(-1);
						}
						// return true;
					}
				}

			}
		}
		return false;
	}

	public boolean isCollsionWithMap(int dir, boolean[] br) {
		boolean flag = false;
		switch (dir) {
		case Canvas.UP: {
			flag = br[0];
		}
			break;
		case Canvas.DOWN: {
			flag = br[1];
		}
			break;
		case Canvas.LEFT: {
			flag = br[2];
		}
			break;
		case Canvas.RIGHT: {
			flag = br[3];
		}
			break;
		}
		return flag;
	}

	public void setDirection(byte dir) {
		bDirection = dir;
		anim.changeAction(dir);
	}

	//
	public void addHP(int hp_num) {
		nHP += hp_num;
		if (nHP > nHPMax) {
			nHP = nHPMax;
		}
	}

	public void addMP(int mp_num) {
		nMP += mp_num;
		if (nMP > nMPMax) {
			nMP = nMPMax;
		}
	}

	int nHpTimer = 0;

	int nHpTimerMax = 10;

	public void delHp(int val) {
		if (MyGameCanvas.instance.bGameResult == 0) {
			if (nHpTimer >= nHpTimerMax) {
				nHP += val;
				nHpTimer = 0;
			}
		}
	}
}

⌨️ 快捷键说明

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