Add File
This commit is contained in:
@@ -0,0 +1,52 @@
|
|||||||
|
package com.gitee.drinkjava2.frog.judge;
|
||||||
|
|
||||||
|
import com.gitee.drinkjava2.frog.Animal;
|
||||||
|
import com.gitee.drinkjava2.frog.Env;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TreeShapeJudge to create a tree
|
||||||
|
*/
|
||||||
|
public class TreeShapeJudge {//NOSONAR
|
||||||
|
|
||||||
|
private static boolean hasCell(long[][][] cells, int x, int y, int z) { //检查指定位置是否有TREE_CELL
|
||||||
|
if (Animal.outBrainRange(x, y, z))
|
||||||
|
return false;
|
||||||
|
return (cells[x][y][z] & 1) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//@formatter:off
|
||||||
|
private static boolean hasCellAround(long[][][] cells, int x, int y, int z) {//检查四周是否有TREE_CELL
|
||||||
|
if (hasCell(cells, x + 1, y, z))return true;
|
||||||
|
if (hasCell(cells, x - 1, y, z))return true;
|
||||||
|
if (hasCell(cells, x + 1, y+1, z))return true;
|
||||||
|
if (hasCell(cells, x - 1, y+1, z))return true;
|
||||||
|
if (hasCell(cells, x + 1, y-1, z))return true;
|
||||||
|
if (hasCell(cells, x - 1, y-1, z))return true;
|
||||||
|
if (hasCell(cells, x, y+1, z))return true;
|
||||||
|
if (hasCell(cells, x, y-1, z))return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//@formatter:on
|
||||||
|
|
||||||
|
public static void judge(Animal animal) {
|
||||||
|
long[][][] cells = animal.cells;
|
||||||
|
for (int x = 0; x < Env.BRAIN_CUBE_SIZE; x++)
|
||||||
|
for (int y = 0; y < Env.BRAIN_CUBE_SIZE; y++)
|
||||||
|
for (int z = 0; z <= Env.BRAIN_CUBE_SIZE - 2; z++) {
|
||||||
|
long cell = cells[x][y][z];
|
||||||
|
if ((cell & 1) > 0) {
|
||||||
|
if ((z == 0 && x == Env.BRAIN_XSIZE / 2 && y == Env.BRAIN_YSIZE / 2) //如果在底部中心
|
||||||
|
|| //或
|
||||||
|
(!hasCell(cells, x, y, z - 1) // 正下方没有cell
|
||||||
|
&& !hasCellAround(cells, x, y, z) //且周围没有cell
|
||||||
|
&& hasCellAround(cells, x, y, z - 1) //且下方周围有cell
|
||||||
|
))
|
||||||
|
animal.awardAA();
|
||||||
|
else
|
||||||
|
animal.penaltyAA();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user