/** * Can i kill enemy in one shoot at the next turn * * @param en * @param enemyLife * @return */ private boolean enoughDamageToKillInOneShootNextTurn(Enemy en, DataPoint dp) { int dist = computeDistance( getCoordX(), getCoordY(), getNextXForEnemy(en, dp), getNextYForEnemy(en, dp)); int damage = computeImpactEfficiency(dist); return damage >= en.getEnemyLife() ? true : false; }
private int getTurnToKillEnemyInThisPosition(Enemy en, DataPoint dp) { int i = 0; int enemyLife = en.getEnemyLife(); int currentX = en.getCoordX(); int currentY = en.getCoordY(); while (enemyLife > 0) { currentX = getNextXForEnemy(currentX, currentY, dp); currentY = getNextYForEnemy(currentX, currentY, dp); int dist = computeDistance(getCoordX(), getCoordX(), currentX, currentY); enemyLife -= computeImpactEfficiency(dist); i++; } return i; }
private boolean willBeAbleToKillInOneShoot(int turnLeft, Enemy en, DataPoint dp) { int playerX = getCoordX(); int playerY = getCoordY(); int currentX = en.getCoordX(); int currentY = en.getCoordY(); while (turnLeft > 0) { currentX = getNextXForEnemy(currentX, currentY, dp); currentY = getNextYForEnemy(currentX, currentY, dp); playerX = getXCoordsCloser(currentX, currentY); playerY = getYCoordsCloser(currentX, currentY); turnLeft--; } int dist = computeDistance(playerX, playerY, currentX, currentY); if (enoughDamageToKillInOneShootInGivenDistance(dist, en.getEnemyLife())) { return true; } else { return false; } }