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

📄 monstersprite.java

📁 一个RPG的JAVA游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
						chgDir();
					}
					break;
				}
				if (!collidesWith(herosprite, true))
				{
					if (isStop)
					{
						setFrameSequence(ru_seq);
						isStop = false;
					}
					if (isBattle)
					{
						isBattle = false;
						setFrameSequence(rd_seq);
					}
					if (isWalkable[ldX][ldY - 1] && isWalkable[rdX][rdY - 1] && isWalkable[rdX + 1][rdY])
					{
						x = x + 2;
						y = y - 2;
						nextFrame();
					} else
					{
						isSmart = false;
						dir = 6;
						setFrameSequence(ld_seq);
					}
					break;
				}
				isStop = true;
				if (!isBattle)
				{
					isBattle = true;
					setFrameSequence(rub_seq);
					nextFrame();
					break;
				}
				if (j < stopTime - battleSpeed)
				{
					j++;
					isStopb = true;
					setFrameSequence(ru);
					break;
				}
				if (isStopb)
				{
					isStopb = false;
					setFrameSequence(rub_seq);
				}
				if (getFrame() == 2)
				{
					if (i2 > 0)
						i2 -= heroBd;
					j = 0;
				}
				nextFrame();
				break;

			case 8: // '\b'
				if (!isSmart)
				{
					if (centerDis < moveDis)
					{
						i = 0;
						if (isWalkable[rdX + 1][rdY] && isWalkable[ldX][ldY + 1] && isWalkable[rdX][rdY + 1])
						{
							x = x + 2;
							y = y + 2;
							nextFrame();
						} else
						{
							dir = 4;
							setFrameSequence(lu_seq);
						}
						break;
					}
					setFrameSequence(rd);
					i++;
					if (i == stopTime)
					{
						tempX = x;
						tempY = y;
						chgDir();
					}
					break;
				}
				if (!collidesWith(herosprite, true))
				{
					if (isBattle)
					{
						isBattle = false;
						setFrameSequence(rd_seq);
					}
					if (isStop)
					{
						setFrameSequence(rd_seq);
						isStop = false;
					}
					if (isWalkable[rdX + 1][rdY] && isWalkable[ldX][ldY + 1] && isWalkable[rdX][rdY + 1])
					{
						x = x + 2;
						y = y + 2;
						nextFrame();
					} else
					{
						isSmart = false;
						dir = 4;
						setFrameSequence(lu_seq);
					}
					break;
				}
				isStop = true;
				if (!isBattle)
				{
					isBattle = true;
					setFrameSequence(rdb_seq);
					nextFrame();
					break;
				}
				if (j < stopTime - battleSpeed)
				{
					j++;
					isStopb = true;
					setFrameSequence(rd);
					break;
				}
				if (isStopb)
				{
					isStopb = false;
					setFrameSequence(rdb_seq);
				}
				if (getFrame() == 2)
				{
					if (i2 > 0)
						i2 -= heroBd;
					j = 0;
				}
				nextFrame();
				break;

			case 7: // '\007'
				if (!isSmart)
				{
					if (centerDis < moveDis)
					{
						i = 0;
						if (isWalkable[ldX - 1][ldY] && isWalkable[ldX][ldY + 1] && isWalkable[rdX][rdY + 1])
						{
							x = x - 2;
							y = y + 2;
							nextFrame();
						} else
						{
							dir = 5;
							setFrameSequence(ru_seq);
						}
						break;
					}
					setFrameSequence(ld);
					i++;
					if (i == stopTime)
					{
						tempX = x;
						tempY = y;
						chgDir();
					}
					break;
				}
				if (!collidesWith(herosprite, true))
				{
					if (isBattle)
					{
						isBattle = false;
						setFrameSequence(ld_seq);
					}
					if (isStop)
					{
						setFrameSequence(ld_seq);
						isStop = false;
					}
					if (isWalkable[ldX - 1][ldY] && isWalkable[ldX][ldY + 1] && isWalkable[rdX][rdY + 1])
					{
						x = x - 2;
						y = y + 2;
						nextFrame();
					} else
					{
						isSmart = false;
						dir = 5;
						setFrameSequence(ru_seq);
					}
					break;
				}
				isStop = true;
				if (!isBattle)
				{
					isBattle = true;
					setFrameSequence(ldb_seq);
					nextFrame();
					break;
				}
				if (j < stopTime - battleSpeed)
				{
					j++;
					isStopb = true;
					setFrameSequence(ld);
					break;
				}
				if (isStopb)
				{
					isStopb = false;
					setFrameSequence(ldb_seq);
				}
				if (getFrame() == 2)
				{
					if (i2 > 0)
						i2 -= heroBd;
					j = 0;
				}
				nextFrame();
				break;
			}
			isFaced();
			isAttach();
			if (isSmart && heroDis > 10000)
			{
				isSmart = false;
				chgDir();
			}
			dx = x - width;
			dy = y - height;
		} else
		{
			if (!isWaiting)
			{
				setVisible(false);
				isWaiting = true;
				if (i2 + lv * lv * 4 < heroMaxhp)
				{
					i2 += lv * lv * 4;
					goldOritem = Math.abs(random.nextInt() % 2);
					goldforhero = lv * 15 + random.nextInt() % 5;
				} else
				{
					i2 = heroMaxhp;
				}
				deadlv = lv;
				isGet = false;
			}
			if (k < 600)
			{
				if (k > 0)
					deadlv = 0;
				k++;
			} else
			{
				k = 0;
				isSmart = false;
				isAlive = true;
				setVisible(true);
				hp = maxHp;
				x = centerX;
				y = centerY;
			}
		}
		return i2;
	}

	public boolean isAttach()
	{
		if (collidesWith(heroSprite, true) && isFaced() && isAttach)
		{
			if (!isSmart)
				isSmart = true;
			if (hp > 0)
				hp = hp - mBd;
			else
				isAlive = false;
			return true;
		} else
		{
			return false;
		}
	}

	public boolean isFaced()
	{
		if (x == heroX && y >= heroY)
		{
			if (isSmart && dir != 2)
			{
				dir = 2;
				setFrameSequence(up_seq);
			}
			return heroDir == 1;
		}
		if (x == heroX && y < heroY)
		{
			if (isSmart && dir != 0)
			{
				dir = 0;
				setFrameSequence(down_seq);
			}
			return heroDir == 3;
		}
		if (x > heroX && y >= heroY)
		{
			if (tan041 < ((y - heroY) * 10000) / (x - heroX) && tan241 > ((y - heroY) * 10000) / (x - heroX))
			{
				if (isSmart && dir != 4)
				{
					dir = 4;
					setFrameSequence(lu_seq);
				}
				return heroDir == 8;
			}
			if (0 <= ((y - heroY) * 10000) / (x - heroX) && ((y - heroY) * 10000) / (x - heroX) <= tan241)
			{
				if (isSmart && dir != 1)
				{
					dir = 1;
					setFrameSequence(left_seq);
				}
				return heroDir == 4;
			}
			if (((y - heroY) * 10000) / (x - heroX) >= tan241)
			{
				if (isSmart && dir != 2)
				{
					dir = 2;
					setFrameSequence(up_seq);
				}
				return heroDir == 1;
			} else
			{
				return false;
			}
		}
		if (x < heroX && y >= heroY)
		{
			if (-tan241 < ((y - heroY) * 10000) / (x - heroX) && -tan041 > ((y - heroY) * 10000) / (x - heroX))
			{
				if (isSmart && dir != 5)
				{
					dir = 5;
					setFrameSequence(ru_seq);
				}
				return heroDir == 7;
			}
			if (0 >= ((y - heroY) * 10000) / (x - heroX) && ((y - heroY) * 10000) / (x - heroX) >= -tan041)
			{
				if (isSmart && dir != 3)
				{
					dir = 3;
					setFrameSequence(right_seq);
				}
				return heroDir == 2;
			}
			if (((y - heroY) * 10000) / (x - heroX) <= -tan241)
			{
				if (isSmart && dir != 2)
				{
					dir = 2;
					setFrameSequence(up_seq);
				}
				return heroDir == 1;
			} else
			{
				return false;
			}
		}
		if (x < heroX && y <= heroY)
		{
			if (tan041 < ((y - heroY) * 10000) / (x - heroX) && tan241 > ((y - heroY) * 10000) / (x - heroX))
			{
				if (isSmart && dir != 7)
				{
					dir = 7;
					setFrameSequence(rd_seq);
				}
				return heroDir == 5;
			}
			if (0 <= ((y - heroY) * 10000) / (x - heroX) && ((y - heroY) * 10000) / (x - heroX) <= tan041)
			{
				if (isSmart && dir != 3)
				{
					dir = 3;
					setFrameSequence(right_seq);
				}
				return heroDir == 2;
			}
			if (((y - heroY) * 10000) / (x - heroX) >= tan241)
			{
				if (isSmart && dir != 0)
				{
					dir = 0;
					setFrameSequence(down_seq);
				}
				return heroDir == 3;
			} else
			{
				return false;
			}
		}
		if (x > heroX && y <= heroY)
		{
			if (-tan241 < ((y - heroY) * 10000) / (x - heroX) && -tan041 > ((y - heroY) * 10000) / (x - heroX))
			{
				if (isSmart && dir != 6)
				{
					dir = 6;
					setFrameSequence(ld_seq);
				}
				return heroDir == 6;
			}
			if (0 >= ((y - heroY) * 10000) / (x - heroX) && ((y - heroY) * 10000) / (x - heroX) >= -tan041)
			{
				if (isSmart && dir != 1)
				{
					dir = 1;
					setFrameSequence(left_seq);
				}
				return heroDir == 4;
			}
			if (((y - heroY) * 10000) / (x - heroX) <= -tan241)
			{
				if (isSmart && dir != 0)
				{
					dir = 0;
					setFrameSequence(down_seq);
				}
				return heroDir == 3;
			} else
			{
				return false;
			}
		} else
		{
			return false;
		}
	}
}

⌨️ 快捷键说明

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