-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMyBot.py
83 lines (73 loc) · 2.76 KB
/
MyBot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import h
import logging
import traceback
import sys
try:
GAME = h.Game("Maccabee")
#
#
##############
# Game Start #
##############
#
#
while True:
MAP = GAME.update_map()
ME = MAP.get_me()
#
# Execute assigned tasks
#
for ship in ME.all_ships():
try:
ship.resolve_task()
except Exception:
exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
for line in lines:
logging.exception(line)
for planet in MAP.all_planets():
if planet.forces:
if planet.is_empty():
logging.info("{} is empty".format(planet))
for ship in planet.forces:
ship.target = planet
ship.task = h.IS.MINING
ship.resolve_task()
elif planet.is_mine():
if planet.is_mineable():
logging.info("{} is mineable".format(planet))
for ship in planet.forces:
ship.target = planet
ship.task = h.IS.MINING
ship.resolve_task()
else:
logging.info("{} is mine".format(planet))
if len(planet.forces) > 4:
for ship in planet.forces:
ship.task = h.IS.INVADING
ship.target = None
ship.resolve_task()
planet.forces = set()
else:
for ship in planet.forces:
ship.navigate(ship.closest_point_to(planet))
elif planet.is_someone_elses():
logging.info("{} is someone elses".format(planet))
ds = planet.all_docked_ships()
for ship in planet.forces:
ds.sort(key=lambda s: s - ship)
ship.navigate(ship.closest_point_to(ds[0]))
logging.info("{}".format(planet.forces))
for ship in ME.all_ships():
if ship.command:
# logging.info(ship.command)
GAME.command(ship.command)
else:
pass
# logging.info("No command: {}".format(ship))
GAME.end_turn()
except Exception as e:
exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
for line in lines:
logging.exception(line)