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

📄 tilecanvas.java

📁 使用java 开发的手机小游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			angel = 0;
		}
		testenemy(angel);//调用炮弹检测方法
		MoveBomb(bombChange1, bombChange2, angel);//调用炮弹移动方法
	}

	protected void testenemy(int ab) {
		try {
			int ibomb;//炮弹的最大步长
			bombChange1 = 3;
			bombChange2 = 3;
			boolean noEnemy1 = true;
			boolean noEnemy2 = true;
			bWater1 = false;
			bWater2 = false;
			switch (ab) {
			case 45://炮弹在45度方向发射
				for (ibomb = 1; ibomb < 4; ibomb++) {
					if (personRow - ibomb < 0 | personColumn - ibomb < 0) {
						bombChange1 = ibomb - 1;
						break;
					} else if (map[personRow - ibomb][personColumn - ibomb] == Map.ENEMY1
							|| map[personRow - ibomb][personColumn - ibomb] == Map.ENEMY2
							|| map[personRow - ibomb][personColumn - ibomb] == Map.BEAT) {
						bombChange1 = ibomb;
						bFlame1 = true;
						noEnemy1 = false;
						break;
					}
				} //判断炮弹1射程内最近的船的位置

				for (ibomb = 1; ibomb < 4; ibomb++) {
					if (personRow + ibomb > 10 | personColumn + ibomb > 10) {
						bombChange2 = ibomb - 1;
						break;
					} else if (map[personRow + ibomb][personColumn + ibomb] == Map.ENEMY1
							|| map[personRow + ibomb][personColumn + ibomb] == Map.ENEMY2
							|| map[personRow + ibomb][personColumn + ibomb] == Map.BEAT) {
						bombChange2 = ibomb;
						bFlame2 = true;
						noEnemy2 = false;
						break;
					}
				} //判断炮弹2射程内最近的船的位置
				break;

			case -45:
				for (ibomb = 1; ibomb < 4; ibomb++) {
					if (personRow - ibomb < 0 | personColumn + ibomb > 10) {
						bombChange1 = ibomb - 1;
						break;
					} else if (map[personRow - ibomb][personColumn + ibomb] == Map.ENEMY1
							|| map[personRow - ibomb][personColumn + ibomb] == Map.ENEMY2
							|| map[personRow - ibomb][personColumn + ibomb] == Map.BEAT) {
						bombChange1 = ibomb;
						bFlame1 = true;
						noEnemy1 = false;
						break;
					}
				} //判断炮弹1射程内最近的船的位置

				for (ibomb = 1; ibomb < 4; ibomb++) {
					if (personRow + ibomb > 10 | personColumn - ibomb < 0) {
						bombChange2 = ibomb - 1;
						break;
					} else if (map[personRow + ibomb][personColumn - ibomb] == Map.ENEMY1
							|| map[personRow + ibomb][personColumn - ibomb] == Map.ENEMY2
							|| map[personRow + ibomb][personColumn - ibomb] == Map.BEAT) {
						bombChange2 = ibomb;
						bFlame2 = true;
						noEnemy2 = false;
						break;
					}
				} //判断炮弹2射程内最近的船的位置
				break;

			case 0:
				for (ibomb = 1; ibomb < 4; ibomb++) {
					if (personRow - ibomb < 0) {
						bombChange1 = ibomb - 1;
						break;
					} else if (map[personRow - ibomb][personColumn] == Map.ENEMY1
							|| map[personRow - ibomb][personColumn] == Map.ENEMY2
							|| map[personRow - ibomb][personColumn] == Map.BEAT) {
						bombChange1 = ibomb;
						bFlame1 = true;
						noEnemy1 = false;
						break;
					}
				} //判断炮弹1射程内最近的船的位置

				for (ibomb = 1; ibomb < 4; ibomb++) {
					if (personRow + ibomb > 10) {
						bombChange2 = ibomb - 1;
						break;
					} else if (map[personRow + ibomb][personColumn] == Map.ENEMY1
							|| map[personRow + ibomb][personColumn] == Map.ENEMY2
							|| map[personRow + ibomb][personColumn] == Map.BEAT) {
						bombChange2 = ibomb;
						bFlame2 = true;
						noEnemy2 = false;
						break;
					}
				} //判断炮弹2射程内最近的船的位置
				break;

			case 90:
				for (ibomb = 1; ibomb < 4; ibomb++) {
					if (personColumn - ibomb < 0) {
						bombChange1 = ibomb - 1;
						break;
					} else if (map[personRow][personColumn - ibomb] == Map.ENEMY1
							|| map[personRow][personColumn - ibomb] == Map.ENEMY2
							|| map[personRow][personColumn - ibomb] == Map.BEAT) {
						bombChange1 = ibomb;
						bFlame1 = true;
						noEnemy1 = false;
						break;
					}
				} //判断炮弹1射程内最近的船的位置

				for (ibomb = 1; ibomb < 4; ibomb++) {
					if (personColumn + ibomb > 10) {
						bombChange2 = ibomb - 1;
						break;
					} else if (map[personRow][personColumn + ibomb] == Map.ENEMY1
							|| map[personRow][personColumn + ibomb] == Map.ENEMY2
							|| map[personRow][personColumn + ibomb] == Map.BEAT) {
						bombChange2 = ibomb;
						bFlame2 = true;
						noEnemy2 = false;
						break;
					}
				} //判断炮弹2射程内最近的船的位置
				break;

			}
			if (noEnemy1 == true && bombChange1 != 0) {
				bWater1 = true;
			}
			if (noEnemy2 == true && bombChange2 != 0) {
				bWater2 = true;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	protected void MoveBomb(int bc1, int bc2, int ab) {
		xBomb1 = x;//炮弹1的轨迹上x座标
		yBomb1 = y;//炮弹1的轨迹上y座标
		xBomb2 = x;//炮弹2的轨迹上x座标
		yBomb2 = y;//炮弹2的轨迹上y座标

		int maxbc = 0;//炮弹1和炮弹2中最远的发射距离
		if (bc1 < bc2)
			maxbc = bc2;
		else
			maxbc = bc1;

		try {
			switch (ab)//根据角度来判断
			{
			case 45:
				for (int ibmove = 0; ibmove <= step * maxbc; ibmove += 8) {
					if (ibmove == bc1 * step)//判断炮弹是否移动到预期位置
					{
						bbc1 = false;
						bombEnemy(xBomb1, yBomb1);
						if (map[personRow - bc1][personColumn - bc1] == Map.ENEMY1
								|| map[personRow - bc1][personColumn - bc1] == Map.ENEMY2) {
							map[personRow - bc1][personColumn - bc1] = Map.BONE;
						}
					}

					if (ibmove == bc2 * step) {
						bbc2 = false;
						bombEnemy(xBomb2, yBomb2);
						if (map[personRow + bc2][personColumn + bc2] == Map.ENEMY1
								|| map[personRow + bc2][personColumn + bc2] == Map.ENEMY2) {
							map[personRow + bc2][personColumn + bc2] = Map.BONE;
						}
					}

					if (bbc1)//炮弹1移动过程,移动到预期位置
					{
						xBomb1 -= 8;
						yBomb1 -= 8;
					}
					if (bbc2)//炮弹2移动过程,移动到预期位置
					{
						xBomb2 += 8;
						yBomb2 += 8;
					}
					repaint();
					Thread.sleep(50);
				}
				bbc1 = true;
				bbc2 = true;
				break;

			case -45:
				for (int ibmove = 0; ibmove <= step * maxbc; ibmove += 8) {
					if (ibmove == bc1 * step)//判断炮弹是否移动到预期位置
					{
						bbc1 = false;
						bombEnemy(xBomb1, yBomb1);
						if (map[personRow - bc1][personColumn + bc1] == Map.ENEMY1
								|| map[personRow - bc1][personColumn + bc1] == Map.ENEMY2) {
							map[personRow - bc1][personColumn + bc1] = Map.BONE;
						}
					}
					if (ibmove == bc2 * step) {
						bbc2 = false;
						bombEnemy(xBomb2, yBomb2);
						if (map[personRow + bc2][personColumn - bc2] == Map.ENEMY1
								|| map[personRow + bc2][personColumn - bc2] == Map.ENEMY2) {
							map[personRow + bc2][personColumn - bc2] = Map.BONE;
						}
					}
					if (bbc1)//炮弹1移动过程,移动到预期位置
					{
						xBomb1 += 8;
						yBomb1 -= 8;
					}
					if (bbc2)//炮弹2移动过程,移动到预期位置
					{
						xBomb2 -= 8;
						yBomb2 += 8;
					}
					repaint();
					Thread.sleep(50);
				}
				bbc1 = true;
				bbc2 = true;
				break;

			case 0:
				for (int ibmove = 0; ibmove <= step * maxbc; ibmove += 8) {
					if (ibmove == bc1 * step)//判断炮弹是否移动到预期位置
					{
						bbc1 = false;
						bombEnemy(xBomb1, yBomb1);
						if (map[personRow - bc1][personColumn] == Map.ENEMY1
								|| map[personRow - bc1][personColumn] == Map.ENEMY2) {
							map[personRow - bc1][personColumn] = Map.BONE;
						}
					}
					if (ibmove == bc2 * step) {
						bbc2 = false;
						bombEnemy(xBomb2, yBomb2);
						if (map[personRow + bc2][personColumn] == Map.ENEMY1
								|| map[personRow + bc2][personColumn] == Map.ENEMY2) {
							map[personRow + bc2][personColumn] = Map.BONE;
						}
					}
					if (bbc1)//炮弹1移动过程,移动到预期位置
					{
						yBomb1 -= 8;
					}
					if (bbc2)//炮弹2移动过程,移动到预期位置
					{
						yBomb2 += 8;
					}
					repaint();
					Thread.sleep(50);
				}
				bbc1 = true;
				bbc2 = true;
				break;

			case 90:
				for (int ibmove = 0; ibmove <= step * maxbc; ibmove += 8) {
					if (ibmove == bc1 * step)//判断炮弹是否移动到预期位置
					{
						bbc1 = false;
						bombEnemy(xBomb1, yBomb1);
						if (map[personRow][personColumn - bc1] == Map.ENEMY1
								|| map[personRow][personColumn - bc1] == Map.ENEMY2) {
							map[personRow][personColumn - bc1] = Map.BONE;
						}
					}
					if (ibmove == bc2 * step) {
						bbc2 = false;
						bombEnemy(xBomb2, yBomb2);
						if (map[personRow][personColumn + bc2] == Map.ENEMY1
								|| map[personRow][personColumn + bc2] == Map.ENEMY2) {
							map[personRow][personColumn + bc2] = Map.BONE;
						}
					}
					if (bbc1)//炮弹1移动过程,移动到预期位置
					{
						xBomb1 -= 8;
					}
					if (bbc2)//炮弹2移动过程,移动到预期位置
					{
						xBomb2 += 8;
					}

					repaint();
					Thread.sleep(50);
				}
				bbc1 = true;
				bbc2 = true;
				break;
			}
			isBomb = false;
			direction = 0;
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	protected void bombEnemy(int xBombEnemy, int yBombEnemy) {

		for (int i = 0; i < nEnemy; i++) {
			if (!anemy[i].isDead) {
				if (((anemy[i].oldRow * 16) == yBombEnemy)
						&& ((anemy[i].oldColumn * 16)) == xBombEnemy) {
					if (anemy[i].shLevel != Map.BEAT) {
						anemy[i].isDead = true;
						anemy[i].willDead = true;
						Score(anemy[i]);
					}
				}
			}
		}
	}

	protected void walkDown() {
		try {
			if ((personRow + 1 < ROWCOL)
					&& (map[personRow + 1][personColumn] != Map.TREE)
					&& (map[personRow + 1][personColumn] != Map.ISLAND)
					&& (map[personRow + 1][personColumn] != Map.ENEMY1)
					&& (map[personRow + 1][personColumn] != Map.ENEMY2)
					&& (map[personRow + 1][personColumn] != Map.BEAT)
					&& (map[personRow + 1][personColumn] != Map.BONE)) { //没有超出边界或障碍
				imgMainPic = imgShip[2];
				oldKeyCode = tmpKeyCode;
				for (int imove = 0; imove < 16; imove = imove + 4) {
					y += 4;
					repaint();
					Thread.sleep(50);
				}
				eat(map[personRow + 1][personColumn], personRow + 1,
						personColumn);

				if (map[personRow + 1][personColumn] == Map.SWIRL) {
					swirl();
				} else
					personRow = personRow + 1;

				changeEnemy = true;
			}

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

	protected void walkDownLeft() {
		try {
			if ((personRow + 1 < ROWCOL) && (personColumn - 1 >= 0)
					&& (map[personRow + 1][personColumn - 1] != Map.TREE)
					&& (map[personRow + 1][personColumn - 1] != Map.ISLAND)
					&& (map[personRow + 1][personColumn - 1] != Map.ENEMY1)
					&& (map[personRow + 1][personColumn - 1] != Map.ENEMY2)
					&& (map[personRow + 1][personColumn - 1] != Map.BEAT)
					&& (map[personRow + 1][personColumn - 1] != Map.BONE)) { //没有超出边界或障碍
				imgMainPic = imgShip[1];
				oldKeyCode = tmpKeyCode;

				for (int imove = 0; imove < 16; imove = imove + 4) {
					y += 4;
					x -= 4;
					repaint();
					Thread.sleep(50);
				}
				eat(map[personRow + 1][personColumn - 1], personRow + 1,
						personColumn - 1);

				if (map[personRow + 1][personColumn - 1] == Map.SWIRL) {
					swirl();
				} else {
					personRow = personRow + 1;
					personColumn = personColumn - 1;
				}

				changeEnemy = true;
			}

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

	protected void walkDownRight() {
		try {
			if ((personRow + 1 < ROWCOL) && (personColumn + 1 < ROWCOL)
					&& (map[personRow + 1][personColumn + 1] != Map.TREE)
					&& (map[personRow + 1][personColumn + 1] != Map.ISLAND)
					&& (map[personRow + 1][personColumn + 1] != Map.ENEMY1)
					&& (map[personRow + 1][personColumn + 1] != Map.ENEMY2)
					&& (map[personRow + 1][personColumn + 1] != Map.BEAT)
					&& (map[personRow + 1][personColumn + 1] != Map.BONE)) { //没有超出边界或障碍
				imgMainPic = imgShip[3];
				oldKeyCode = tmpKeyCode;

				for (int imove = 0; imove < 16; imove = imove + 4) {
					y += 4;
					x += 4;
					repaint();
					Thread.sleep(50);
				}
				changeEnemy = true;
				eat(map[personRow + 1][personColumn + 1], personRow + 1,
						personColumn + 1);

				if (map[personRow + 1][personColumn + 1] == Map.SWIRL) {
					swirl();
				} else {
					personRow = personRow + 1;
					personColumn = personColumn + 1;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	protected void walkUp() {
		try {
			if ((personRow - 1 >= 0)
					&& (map[personRow - 1][personColumn] != Map.TREE)
					&& (map[personRow - 1][personColumn] != Map.ISLAND)
					&& (map[personRow - 1][personColumn] != Map.ENEMY1)
					&& (map[personRow - 1][personColumn] != Map.ENEMY2)
					&& (map[personRow - 1][personColumn] != Map.BEAT)
					&& (map[personRow - 1][personColumn] != Map.BONE)) { //没有超出边界或障碍
				imgMainPic = imgShip[8];
				oldKeyCode = tmpKeyCode;
				for (int imove = 0; imove < 16; imove += 4) {
					y -= 4;
					repaint();
					Thread.sleep(50);
				}

				eat(map[personRow - 1][personColumn], personRow - 1,
						personColumn);
				if (map[personRow - 1][personColumn] == Map.SWIRL) {
					swirl();
				} else
					personRow = personRow - 1;

				changeEnemy = true;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	protected void walkUpLeft() {
		try {
			if ((personRow - 1 >= 0) && (personColumn - 1 >= 0)
					&& (map[personRow - 1][personColumn - 1] != Map.TREE)
					&& (map[personRow - 1][personColumn - 1] != Map.ISLAND)
					&& (map[personRow - 1][personColumn - 1] != Map.ENEMY1)
					&& (map[personRow - 1][personColumn - 1] != Map.ENEMY2)
					&& (map[personRow - 1][personColumn - 1] != Map.BEAT)
					&& (map[personRow - 1][personColumn - 1] != Map.BONE)) { //没有超出边界或障碍

⌨️ 快捷键说明

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