Skip to content

Commit

Permalink
Balancing (#96)
Browse files Browse the repository at this point in the history
* Balancing changes

* Team and game creation script

* Commented bot

* Commented bot
  • Loading branch information
nitko12 authored Mar 29, 2024
1 parent e346d61 commit 882577e
Show file tree
Hide file tree
Showing 3 changed files with 210 additions and 287 deletions.
12 changes: 12 additions & 0 deletions scripts/make_teams.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import requests
from datetime import datetime, timedelta
from pprint import pprint

URL = "localhost:8000"
ADMIN_SECRET = "mojkljuc"
Expand Down Expand Up @@ -34,13 +35,22 @@ def make_team(team):
json=team, params={"admin_secret": ADMIN_SECRET})
assert r.status_code == 200, r.text

print(f"Team {team['team_name']} created")
pprint(r.json())

def make_game(game):
r = requests.post(f"http://{URL}/admin/game/create",
json=game, params={"admin_secret": ADMIN_SECRET})
assert r.status_code == 200, r.text


def list_games():
r = requests.get(f"http://{URL}/admin/game/list",
params={"admin_secret": ADMIN_SECRET})
assert r.status_code == 200, r.text
print("Games:")
pprint(r.json())

if __name__ == "__main__":
datasets = get_datasets()

Expand All @@ -60,3 +70,5 @@ def make_game(game):
del game["dataset_name"]

make_game(game)

list_games()
282 changes: 134 additions & 148 deletions testing/algotrade_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,6 @@
import requests


URL = "localhost:8000"

team_secret = "<missing>"
game_id = "1"
player_id = "1"


def set_url(new_URL):
global URL
URL = new_URL


def set_team_secret(new_team_secret):
global team_secret
team_secret = new_team_secret


def set_game_id(new_game_id):
global game_id
game_id = new_game_id


def set_player_id(new_player_id):
global player_id
player_id = new_player_id


class Resource():
energy = "ENERGY"
coal = "COAL"
Expand All @@ -55,125 +28,138 @@ class OrderSide():
SELL = "SELL"


def get_games():
return requests.get(f"http://{URL}/game/list",
params={"team_secret": team_secret})


def get_game():
return requests.get(f"http://{URL}/game/{game_id}",
params={"team_secret": team_secret})


def get_players():
return requests.get(f"http://{URL}/game/{game_id}/player/list",
params={"team_secret": team_secret})


def create_player(player_name: str = None):
return requests.post(
f"http://{URL}/game/{game_id}/player/create",
params={"team_secret": team_secret},
json={"player_name": player_name})


def get_player():
return requests.get(f"http://{URL}/game/{game_id}/player/{player_id}",
params={"team_secret": team_secret})


def delete_player():
return requests.get(f"http://{URL}/game/{game_id}/player/{player_id}/delete",
params={"team_secret": team_secret})


def get_orders(restriction=None):
return requests.get(f"http://{URL}/game/{game_id}/orders",
params={"team_secret": team_secret,
"restriction": restriction})


def get_player_orders():
return requests.get(f"http://{URL}/game/{game_id}/player/{player_id}/orders",
params={"team_secret": team_secret})


def get_prices(start_tick=None, end_tick=None, resource=None):
url = f"http://{URL}/game/{game_id}/market/prices"
params = {"team_secret": team_secret}
if start_tick:
params["start_tick"] = start_tick
if end_tick:
params["end_tick"] = end_tick
if resource:
class AlgotradeApi:
def __init__(self, url, team_secret, game_id, player_id):
self.team_secret = team_secret
self.URL = url

self.team_secret = team_secret
self.game_id = game_id
self.player_id = player_id

def set_url(self, new_URL):
self.URL = new_URL

def set_team_secret(self, new_team_secret):
self.team_secret = new_team_secret

def set_game_id(self, new_game_id):
self.game_id = new_game_id

def set_player_id(self, new_player_id):
self.player_id = new_player_id

def get_games(self):
return requests.get(f"http://{self.URL}/game/list",
params={"team_secret": self.team_secret})

def get_game(self):
return requests.get(f"http://{self.URL}/game/{self.game_id}",
params={"team_secret": self.team_secret})

def get_players(self):
return requests.get(f"http://{self.URL}/game/{self.game_id}/player/list",
params={"team_secret": self.team_secret})

def create_player(self, player_name: str = None):
return requests.post(
f"http://{self.URL}/game/{self.game_id}/player/create",
params={"team_secret": self.team_secret},
json={"player_name": player_name})

def get_player(self):
return requests.get(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}",
params={"team_secret": self.team_secret})

def delete_player(self):
return requests.get(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/delete",
params={"team_secret": self.team_secret})

def get_orders(self, restriction=None):
return requests.get(f"http://{self.URL}/game/{self.game_id}/orders",
params={"team_secret": self.team_secret,
"restriction": restriction})

def get_player_orders(self):
return requests.get(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/orders",
params={"team_secret": self.team_secret})

def get_prices(self, start_tick=None, end_tick=None, resource=None):
url = f"http://{self.URL}/game/{self.game_id}/market/prices"
params = {"team_secret": self.team_secret}
if start_tick:
params["start_tick"] = start_tick
if end_tick:
params["end_tick"] = end_tick
if resource:
params["resource"] = resource
return requests.get(url, params=params)

def set_energy_price(self, price):
return requests.post(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/energy/set_price",
params={"team_secret": self.team_secret},
json={"price": price})

def create_order(self, resource, price, size, side, expiration_tick=None, expiration_length=None):
body = {
"resource": resource,
"price": price,
"size": size,
"expiration_tick": expiration_tick,
"expiration_length": expiration_length,
"side": side
}
return requests.post(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/orders/create",
params={"team_secret": self.team_secret}, json=body)

def cancel_orders(self, ids):
return requests.post(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/orders/cancel",
params={"team_secret": self.team_secret},
json={"ids": ids})

def get_trades(self, start_tick=None, end_tick=None, resource=None):
url = f"http://{URL}/game/{self.game_id}/player/{self.player_id}/trades"
params = {"team_secret": self.team_secret}
if start_tick:
params["start_tick"] = start_tick
if end_tick:
params["end_tick"] = end_tick
params["resource"] = resource
return requests.get(url, params=params)


def set_energy_price(price):
return requests.post(f"http://{URL}/game/{game_id}/player/{player_id}/energy/set_price",
params={"team_secret": team_secret},
json={"price": price})


def create_order(resource, price, size, side, expiration_tick=None, expiration_length=None):
body = {
"resource": resource,
"price": price,
"size": size,
"expiration_tick": expiration_tick,
"expiration_length": expiration_length,
"side": side
}
return requests.post(f"http://{URL}/game/{game_id}/player/{player_id}/orders/create",
params={"team_secret": team_secret}, json=body)


def cancel_orders(ids):
return requests.post(f"http://{URL}/game/{game_id}/player/{player_id}/orders/cancel",
params={"team_secret": team_secret},
json={"ids": ids})


def get_trades(start_tick=None, end_tick=None, resource=None):
url = f"http://{URL}/game/{game_id}/player/{player_id}/trades"
params = {"team_secret": team_secret}
if start_tick:
params["start_tick"] = start_tick
if end_tick:
params["end_tick"] = end_tick
params["resource"] = resource
return requests.get(url, params=params)


def get_plants():
return requests.get(f"http://{URL}/game/{game_id}/player/{player_id}/plant/list",
params={"team_secret": team_secret})


def buy_plant(type):
return requests.post(f"http://{URL}/game/{game_id}/player/{player_id}/plant/buy",
params={"team_secret": team_secret},
json={"type": type})


def sell_plant(type):
return requests.post(f"http://{URL}/game/{game_id}/player/{player_id}/plant/sell",
params={"team_secret": team_secret},
json={"type": type})


def turn_on_plant(type, number):
return requests.post(f"http://{URL}/game/{game_id}/player/{player_id}/plant/on",
params={"team_secret": team_secret},
json={"type": type, "number": number})


def get_dataset(start_tick=None, end_tick=None):
url = f"http://{URL}/game/{game_id}/dataset"
params = {"team_secret": team_secret}
if start_tick:
params["start_tick"] = start_tick
if end_tick:
params["end_tick"] = end_tick
return requests.get(url, params=params)
return requests.get(url, params=params)

def get_plants(self):
return requests.get(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/plant/list",
params={"team_secret": self.team_secret})

def buy_plant(self, type):
return requests.post(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/plant/buy",
params={"team_secret": self.team_secret},
json={"type": type})

def sell_plant(self, type):
return requests.post(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/plant/sell",
params={"team_secret": self.team_secret},
json={"type": type})

def turn_on_plant(self, type, number):
return requests.post(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/plant/on",
params={"team_secret": self.team_secret},
json={"type": type, "number": number})

def get_dataset(self, start_tick=None, end_tick=None):
url = f"http://{self.URL}/game/{self.game_id}/dataset"
params = {"team_secret": self.team_secret}
if start_tick:
params["start_tick"] = start_tick
if end_tick:
params["end_tick"] = end_tick
return requests.get(url, params=params)

def get_plant_prices(self):
return requests.get(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/plant/list",
params={"team_secret": self.team_secret})

def turn_on(self, plant_type, number):
return requests.post(f"http://{self.URL}/game/{self.game_id}/player/{self.player_id}/plant/on",
params={"team_secret": self.team_secret},
json={"type": plant_type, "number": number})
Loading

0 comments on commit 882577e

Please sign in to comment.