📄 anemy.java
字号:
&& map[oldRow + 1][oldColumn + 1] != Map.ISLAND
&& map[oldRow + 1][oldColumn + 1] != Map.TREE
&& map[oldRow + 1][oldColumn + 1] != Map.BONE
&& map[oldRow + 1][oldColumn + 1] != Map.SWIRL
&& !TestBomb(mainRow, mainColumn, oldRow + 1, oldColumn + 1,
mainDir)) {
shDirection = 3;
row = oldRow + 1;
column = oldColumn + 1;
shCurrPic = imageShip[3];
direction = true;
} else
direction = false;
;
}
protected void AdvancedLeftUp() {
if (oldRow - 1 >= 0
&& oldRow - 1 < 11
&& oldColumn - 1 >= 0
&& oldColumn - 1 < 11
&& map[oldRow - 1][oldColumn - 1] != Map.ISLAND
&& map[oldRow - 1][oldColumn - 1] != Map.TREE
&& map[oldRow - 1][oldColumn - 1] != Map.BONE
&& map[oldRow - 1][oldColumn - 1] != Map.SWIRL
&& !TestBomb(mainRow, mainColumn, oldRow - 1, oldColumn - 1,
mainDir)) {
shDirection = 7;
row = oldRow - 1;
column = oldColumn - 1;
shCurrPic = imageShip[7];
direction = true;
} else
direction = false;
}
protected void AdvancedLeftDown() {
if (oldRow + 1 >= 0
&& oldRow + 1 < 11
&& oldColumn - 1 >= 0
&& oldColumn - 1 < 11
&& map[oldRow + 1][oldColumn - 1] != Map.ISLAND
&& map[oldRow + 1][oldColumn - 1] != Map.TREE
&& map[oldRow + 1][oldColumn - 1] != Map.BONE
&& map[oldRow + 1][oldColumn - 1] != Map.SWIRL
&& !TestBomb(mainRow, mainColumn, oldRow + 1, oldColumn - 1,
mainDir)) {
shDirection = 1;
row = oldRow + 1;
column = oldColumn - 1;
shCurrPic = imageShip[1];
direction = true;
} else
direction = false;
}
protected void AdvancedLeft() {
if (oldRow >= 0
&& oldRow < 11
&& oldColumn - 1 >= 0
&& oldColumn - 1 < 11
&& map[oldRow][oldColumn - 1] != Map.ISLAND
&& map[oldRow][oldColumn - 1] != Map.TREE
&& map[oldRow][oldColumn - 1] != Map.BONE
&& map[oldRow][oldColumn - 1] != Map.SWIRL
&& !TestBomb(mainRow, mainColumn, oldRow, oldColumn - 1,
mainDir)) {
shDirection = 4;
row = oldRow;
column = oldColumn - 1;
shCurrPic = imageShip[4];
direction = true;
} else
direction = false;
}
protected void AdvancedUp() {
if (oldRow - 1 >= 0
&& oldRow - 1 < 11
&& oldColumn >= 0
&& oldColumn < 11
&& map[oldRow - 1][oldColumn] != Map.ISLAND
&& map[oldRow - 1][oldColumn] != Map.TREE
&& map[oldRow - 1][oldColumn] != Map.BONE
&& map[oldRow - 1][oldColumn] != Map.SWIRL
&& !TestBomb(mainRow, mainColumn, oldRow - 1, oldColumn,
mainDir)) {
shDirection = 8;
row = oldRow - 1;
column = oldColumn;
shCurrPic = imageShip[8];
direction = true;
} else
direction = false;
}
protected void AdvancedDown() {
if (oldRow + 1 >= 0
&& oldRow + 1 < 11
&& oldColumn >= 0
&& oldColumn < 11
&& map[oldRow + 1][oldColumn] != Map.ISLAND
&& map[oldRow + 1][oldColumn] != Map.TREE
&& map[oldRow + 1][oldColumn] != Map.BONE
&& map[oldRow + 1][oldColumn] != Map.SWIRL
&& !TestBomb(mainRow, mainColumn, oldRow + 1, oldColumn,
mainDir)) {
shDirection = 2;
row = oldRow + 1;
column = oldColumn;
shCurrPic = imageShip[2];
direction = true;
} else
direction = false;
}
protected boolean TestBomb(int mainRow, int mainColumn, int enemyRow,
int enemyColumn, int mainDir) {
boolean test = false;
if (mainDir == 5) { //如果主船发炮,位置则没有变化,与最后一次变化过的位置相同
mainDir = oldMainDir;
}
switch (mainDir) {
case 1: //主船45度角
case 9:
if ((mainColumn + 3 == enemyColumn) && (mainRow + 3 == enemyRow)
|| (mainColumn - 3 == enemyColumn)
&& (mainRow - 3 == enemyRow)) {
test = true;
}
break;
case 2: //主船90度角
case 8:
if (mainRow == enemyRow) {
if ((mainColumn + 3 == enemyColumn)
|| (mainColumn - 3 == enemyColumn)
|| (mainColumn + 2 == enemyColumn)
|| (mainColumn - 2 == enemyColumn)
|| (mainColumn + 1 == enemyColumn)
|| (mainColumn - 1 == enemyColumn)) {
test = true;
}
}
break;
case 3: //主船-45度角
case 7:
if ((mainColumn - 3 == enemyColumn) && (mainRow + 3 == enemyRow)
|| (mainColumn + 3 == enemyColumn)
&& (mainRow - 3 == enemyRow)) {
test = true;
}
break;
case 4: //主船0度角
case 6:
if (mainColumn == enemyColumn) {
if ((mainRow + 3 == enemyRow) || (mainRow - 3 == enemyRow)
|| (mainRow + 2 == enemyRow)
|| (mainRow - 2 == enemyRow)
|| (mainRow + 1 == enemyRow)
|| (mainRow - 1 == enemyRow)) {
test = true;
}
}
break;
}
if (mainDir != 5) {
oldMainDir = mainDir;
}
return test;
}
protected void General() {
try {
if (oldRow == mainRow) {
row = oldRow;
if (oldColumn < mainColumn) {
shDirection = 6;
column = oldColumn + 1;
shCurrPic = imageGenShip[6];
} else if (oldColumn > mainColumn) {
shDirection = 4;
column = oldColumn - 1;
shCurrPic = imageGenShip[4];
}
}
//如果敌船与玩家在同一列,则行数不变,列数向玩家的位置靠拢
else if (oldColumn == mainColumn) {
column = oldColumn;
if (oldRow < mainRow) {
row = oldRow + 1;
shDirection = 2;
shCurrPic = imageGenShip[2];
} else if (oldRow > mainRow) {
row = oldRow - 1;
shDirection = 8;
shCurrPic = imageGenShip[8];
}
}
//如果敌船与玩家不在同一行且不在同一列,行、列数向玩家的位置靠拢
if ((oldRow != mainRow) && (oldColumn != mainColumn)) {
if ((oldRow < mainRow) && (oldColumn < mainColumn)) {
row = oldRow + 1;
column = oldColumn + 1;
shDirection = 3;
shCurrPic = imageGenShip[3];
}
if ((oldRow < mainRow) && (oldColumn > mainColumn)) {
row = oldRow + 1;
column = oldColumn - 1;
shDirection = 1;
shCurrPic = imageGenShip[1];
}
if ((oldRow > mainRow) && (oldColumn < mainColumn)) {
row = oldRow - 1;
column = oldColumn + 1;
shDirection = 9;
shCurrPic = imageGenShip[9];
}
if ((oldRow > mainRow) && (oldColumn > mainColumn)) {
row = oldRow - 1;
column = oldColumn - 1;
shDirection = 7;
shCurrPic = imageGenShip[7];
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
protected void Beat() {
beatDirChange = false;
beatDir = getRandomInt(1, 9);
while (beatDir == 5)
beatDir = getRandomInt(1, 9);
while (!beatDirChange) {
switch (beatDir) {
case 1:
beatTest(oldRow + 1, oldColumn - 1, 1);
break;
case 2:
beatTest(oldRow + 1, oldColumn, 2);
break;
case 3:
beatTest(oldRow + 1, oldColumn + 1, 3);
break;
case 4:
beatTest(oldRow, oldColumn - 1, 4);
break;
case 6:
beatTest(oldRow, oldColumn + 1, 6);
break;
case 7:
beatTest(oldRow - 1, oldColumn - 1, 7);
break;
case 8:
beatTest(oldRow - 1, oldColumn, 8);
break;
case 9:
beatTest(oldRow - 1, oldColumn + 1, 9);
break;
}
}
}
protected void beatTest(int beatRow, int beatColumn, int angel) {
if (beatRow >= 0 && beatRow < 11 && beatColumn >= 0 && beatColumn < 11
&& map[beatRow][beatColumn] != Map.ISLAND
&& map[beatRow][beatColumn] != Map.TREE
&& map[beatRow][beatColumn] != Map.ENEMY1
&& map[beatRow][beatColumn] != Map.BONE
&& map[beatRow][beatColumn] != Map.BOTTLE
&& map[beatRow][beatColumn] != Map.HELPMAN
&& map[beatRow][beatColumn] != Map.ENEMY2
&& map[beatRow][beatColumn] != Map.SWIRL) {
shDirection = angel;
shCurrPic = imageBeat[angel];
row = beatRow;
column = beatColumn;
beatDirChange = true;
} else
beatDir = getRandomInt(1, 9);
while (beatDir == 5)
beatDir = getRandomInt(1, 9);
}
public void move() {
switch (shDirection) {
case 1://Downleft
pixColumn -= 4;
pixRow += 4;
break;
case 2://Down
pixRow += 4;
break;
case 3://DownRight
pixColumn += 4;
pixRow += 4;
break;
case 4://Left
pixColumn -= 4;
break;
case 6://Right
pixColumn += 4;
break;
case 7://UpLeft
pixColumn -= 4;
pixRow -= 4;
break;
case 8://Up
pixRow -= 4;
break;
case 9://UpRight
pixColumn += 4;
pixRow -= 4;
break;
}
}
protected int getRandomInt(int min, int max) {
return Math.abs(rd.nextInt()) % (max - min + 1) + min;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -