From 92a13bac9289fd00a6fa2c70129490fa22ef0661 Mon Sep 17 00:00:00 2001 From: Ilion Beyst Date: Sat, 25 Dec 2021 15:36:23 +0100 Subject: add init-project command --- planetwars-localdev/assets/hex.json | 43 ++++++++++++++++++++++++++++++ planetwars-localdev/assets/pw_project.toml | 10 +++++++ planetwars-localdev/assets/simplebot.py | 33 +++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 planetwars-localdev/assets/hex.json create mode 100644 planetwars-localdev/assets/pw_project.toml create mode 100644 planetwars-localdev/assets/simplebot.py (limited to 'planetwars-localdev/assets') diff --git a/planetwars-localdev/assets/hex.json b/planetwars-localdev/assets/hex.json new file mode 100644 index 0000000..5ef4f31 --- /dev/null +++ b/planetwars-localdev/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-localdev/assets/pw_project.toml b/planetwars-localdev/assets/pw_project.toml new file mode 100644 index 0000000..85a4ab6 --- /dev/null +++ b/planetwars-localdev/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-localdev/assets/simplebot.py b/planetwars-localdev/assets/simplebot.py new file mode 100644 index 0000000..b2a6b8f --- /dev/null +++ b/planetwars-localdev/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 + }) -- cgit v1.2.3