public void initEnemy() { List<Map<String, Object>> lst = gameDao.getSimpleJdbcTemplate().queryForList(RelationDAO.SQL_SELECT_ENEMY, player.getId()); for (Map<String, Object> map : lst) { Enemy enemy = gameDao.getRelationDAO().loadEnemy(map); if (enemy != null) { emyMgr.put(enemy.getEnemyId(), enemy); } } }
private void findClosestEnemyFromMeAndDP() { // Liste des enemies avec leur DP le plus proche Map<Enemy, DataPoint> enemyDataPoint = new HashMap<Enemy, DataPoint>(); for (Enemy en : enemyList) { enemyDataPoint.put(en, findClosestDPForEnemy(en)); } // On a vise un enemy avant, doit-on continuer sur celui-la if (targettedEnemy != null && enemyList.contains(targettedEnemy)) { System.err.println("keep the same enemy"); hasToShoot = true; } else { Collections.sort(enemyList, new EnemyCloserThanDPComparator()); Enemy en = enemyList.get(0); DataPoint dp = enemyDataPoint.get(en); int turnNumberBeforeEnemyReachData = getLeftTurnNumberBeforeEnemyReachData(en, dp); int turnNumberBeforeEnemyDie = getTurnToKillEnemyInThisPosition(en, dp); boolean test = testCoordsWithEnemyPrevision( getXCoordsCloser(en.getCoordX(), en.getCoordY()), getYCoordsCloser(en.getCoordX(), en.getCoordY())); System.err.println("Can i get closer " + test); System.err.println("Turn to reach data " + turnNumberBeforeEnemyReachData); System.err.println("Turn to kill in this pos " + turnNumberBeforeEnemyDie); // Si on peut le tuer avant qu'il atteigne sa cible et qu'on ne peut pas se rapprocher if (turnNumberBeforeEnemyDie == turnNumberBeforeEnemyReachData || (enoughDamageToKillInOneShootNextTurn(en, dp) || test == false)) { hasToShoot = true; targettedEnemy = en.getEnemyId(); } else { if (test == true) { coordXToMove = getXCoordsCloser(en.getCoordX(), en.getCoordY()); coordYToMove = getYCoordsCloser(en.getCoordX(), en.getCoordY()); hasToShoot = false; additionnalText = "I 'm getting closer !"; System.err.println("Move to get closer from him"); } else { avoidEnemy(en); hasToShoot = false; } } } }