All pastes #1940429 Raw Edit

Someone

public text v1 · immutable
#1940429 ·published 2010-09-14 10:21 UTC
rendered paste body
#!/usr/bin/env python
#
import pw
import planet
import fleet
from sys import stdout

def ParseGameState( s ):

  lines = s.split("\n")

  list_planets = []
  list_fleets = []

  planet_id = 0

  for line in lines:
    line = line.split("#")[0] # remove comments
    tokens = line.split(" ")
    if len(tokens) == 1:
      continue

    if tokens[0] == "P":
      if len(tokens) != 6:
        return 0
      list_planets.append(
          planet.Planet( planet_id       , # The ID of this planet
                  int(tokens[3])  , # Owner
                  int(tokens[4])  , # Num ships
                  int(tokens[5])  , # Growth rate
                  float(tokens[1]), # X
                  float(tokens[2])) # Y
                  )
      planet_id += 1

    elif tokens[0] == "F":
      if len(tokens) != 7:
        return 0
      f = fleet.Fleet(int(tokens[1]), # Owner
                int(tokens[2]), # Num ships
                int(tokens[3]), # Source
                int(tokens[4]), # Destination
                int(tokens[5]), # Total trip length
                int(tokens[6])) # Turns remaining
      list_fleets.append(f)

    else:
      return False

  return pw.PlanetWars(list_planets, list_fleets)


def ToString(PlanetWarObject):
  s = ''
  for p in PlanetWarObject.Planets() :
    s += "P %f %f %d %d %d\n" % \
    (p.X(), p.Y(), p.Owner(), p.NumShips(), p.GrowthRate())
  for f in PlanetWarObject.Fleets() :
    s += "F %d %d %d %d %d %d\n" % \
    (f.Owner(), f.NumShips(), f.SourcePlanet(), f.DestinationPlanet(), \
    f.TotalTripLength(), f.TurnsRemaining())
  return s

def FinishTurn():
  stdout.write("go\n")
  stdout.flush()

def IssueOrder( source_planet, destination_planet, num_ships):
  stdout.write("%d %d %d\n" % \
  (source_planet, destination_planet, num_ships))
  stdout.flush()