aboutsummaryrefslogtreecommitdiff
path: root/planetwars-cli/assets
diff options
context:
space:
mode:
Diffstat (limited to 'planetwars-cli/assets')
-rw-r--r--planetwars-cli/assets/hex.json43
-rw-r--r--planetwars-cli/assets/pw_project.toml10
-rw-r--r--planetwars-cli/assets/simplebot.py33
3 files changed, 86 insertions, 0 deletions
diff --git a/planetwars-cli/assets/hex.json b/planetwars-cli/assets/hex.json
new file mode 100644
index 0000000..5ef4f31
--- /dev/null
+++ b/planetwars-cli/assets/hex.json
@@ -0,0 +1,43 @@
+{
+ "planets": [
+ {
+ "name": "protos",
+ "x": -6,
+ "y": 0,
+ "owner": 1,
+ "ship_count": 6
+ },
+ {
+ "name": "duteros",
+ "x": -3,
+ "y": 5,
+ "ship_count": 6
+ },
+ {
+ "name": "tritos",
+ "x": 3,
+ "y": 5,
+ "ship_count": 6
+ },
+ {
+ "name": "tetartos",
+ "x": 6,
+ "y": 0,
+ "owner": 2,
+ "ship_count": 6
+ },
+ {
+ "name": "pemptos",
+ "x": 3,
+ "y": -5,
+ "ship_count": 6
+ },
+ {
+ "name": "extos",
+ "x": -3,
+ "y": -5,
+ "ship_count": 6
+ }
+ ]
+}
+
diff --git a/planetwars-cli/assets/pw_project.toml b/planetwars-cli/assets/pw_project.toml
new file mode 100644
index 0000000..85a4ab6
--- /dev/null
+++ b/planetwars-cli/assets/pw_project.toml
@@ -0,0 +1,10 @@
+[bots]
+
+# define a bot called simplebot
+[bots.simplebot]
+
+# The working directory for the bot.
+path = "./bots/simplebot"
+
+# What command to use for running the bot
+argv = ["python", "simplebot.py"] \ No newline at end of file
diff --git a/planetwars-cli/assets/simplebot.py b/planetwars-cli/assets/simplebot.py
new file mode 100644
index 0000000..b2a6b8f
--- /dev/null
+++ b/planetwars-cli/assets/simplebot.py
@@ -0,0 +1,33 @@
+import sys, json
+
+def move(command):
+ """ print a command record to stdout """
+ moves = []
+ if command is not None:
+ moves.append(command)
+
+ print(json.dumps({ 'moves': moves }))
+ # flush the buffer, so that the gameserver can receive the json-encoded line.
+ sys.stdout.flush()
+
+
+for line in sys.stdin:
+ state = json.loads(line)
+ # you are always player 1.
+ my_planets = [p for p in state['planets'] if p['owner'] == 1]
+ other_planets = [p for p in state['planets'] if p['owner'] != 1]
+
+ if not my_planets or not other_planets:
+ # we don't own any planets, so we can't make any moves.
+ move(None)
+ else:
+ # find my planet that has the most ships
+ planet = max(my_planets, key=lambda p: p['ship_count'])
+ # find enemy planet that has the least ships
+ destination = min(other_planets, key=lambda p: p['ship_count'])
+ # attack!
+ move({
+ 'origin': planet['name'],
+ 'destination': destination['name'],
+ 'ship_count': planet['ship_count'] - 1
+ })