diff options
| author | Carlo Zancanaro <carlo@zancanaro.id.au> | 2022-09-25 00:10:13 +1000 | 
|---|---|---|
| committer | Carlo Zancanaro <carlo@zancanaro.id.au> | 2022-09-25 00:38:04 +1000 | 
| commit | 7daa5284f9eddf6d4b4e7838919e80ce25324bb0 (patch) | |
| tree | ac92d9aa97621b4c314441a4cb7cdcab60b4f85e /example-bots/random_valid.py | |
| parent | e031af6e5e8324fe4cda66d9597904040b17ca80 (diff) | |
Diffstat (limited to 'example-bots/random_valid.py')
| -rw-r--r-- | example-bots/random_valid.py | 30 | 
1 files changed, 30 insertions, 0 deletions
| diff --git a/example-bots/random_valid.py b/example-bots/random_valid.py new file mode 100644 index 0000000..0a84b96 --- /dev/null +++ b/example-bots/random_valid.py @@ -0,0 +1,30 @@ +import random + +def calculate_orders(whoami, state): +    orders = [] + +    my_robots = state.robots_by_player[whoami] +    for rx, ry, energy in my_robots: +        if state[rx, ry].city == '+' and state[rx, ry].allegiance != whoami: +            orders.append('P') +            continue +        potential_orders = [] +        if state[rx, ry].allegiance != whoami: +            potential_orders.append('P') +        if state[rx + 1, ry].city != 'X': +            potential_orders.append('R') +        if state[rx - 1, ry].city != 'X': +            potential_orders.append('L') +        if state[rx, ry + 1].city != 'X': +            potential_orders.append('D') +        if state[rx, ry - 1].city != 'X': +            potential_orders.append('U') + +        if potential_orders: +            # Make a random move for each robot +            orders.append(random.choice(potential_orders)) +        else: +            # There are no valid moves, so do nothing for this robot +            orders.append('-') + +    return orders | 
