コード例 #1
0
 Universe haveEveryPlanetAttack(Planet mine, Planets planetsToAttack) {
   List<Planet> newPlanets = new ArrayList<Planet>();
   List<Fleet> additionalFleets = new ArrayList<Fleet>();
   for (Planet p : planetsToAttack.minus(mine).items) {
     if (!p.isNeutral()) {
       newPlanets.add(p.removeShips(p.numShips));
       additionalFleets.add(p.attack(mine));
     }
   }
   return new Universe(
       planets.replace(new Planets(newPlanets)),
       fleets.union(new Fleets(additionalFleets)),
       turn,
       reservations);
 }
コード例 #2
0
 public Universe(Planets planets, Fleets fleets, int turn, Reservations reservations) {
   this.turn = turn;
   Fleets sentThisTurn = new Fleets();
   for (Reservation reservation : reservations.items) {
     if (turn == reservation.turn) {
       Planet planet = planets.find(reservation.attack.homePlanet.id);
       if (planet.isMine() && planet.numShips >= reservation.attack.ships) {
         sentThisTurn = sentThisTurn.plus(new Fleet(reservation.attack));
         planets = planets.remove(planet);
         planet = planet.removeShips(reservation.attack.ships);
         planets = planets.union(planet);
       }
     }
   }
   this.planets = planets;
   this.fleets = fleets.plus(sentThisTurn);
   this.reservations = reservations;
 }