gapoera.api
View Source
from gapoera.envs.surakarta import Surakarta from gapoera.envs.mancala import Mancala import requests __all__ = ['Game', 'LocalGame'] class Game(object): """ Class `Game` digunakan untuk menggunakan Gapoera API secara online. Class ini berisikan perintah-perintah utama dalam menggunakan environment dengan mengakses server Gapoera API menggunakan fungsi python `request`. """ def __init__(self, game_name, host_url="http://api.gapoera.com"): self.url = host_url self.game_name = game_name def start(self): resp = requests.get(url=self.url+"/"+self.game_name) print(resp) self.data = resp.json() self.game_id = self.data["game_id"] self.state = self.data["state"] return self.game_id def step(self, player_id=0, action=0): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/step/"+str(player_id)+"/" + str(action)).json() if response["message"]=="OK": self.state = response["state"] return response def bot_step(self): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/bot", timeout=None).json() if response["message"]=="OK": self.state = response["state"] return response def valid_act(self, player_id=0): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/valid/"+str(player_id)).json() return list(response["return"]) def get_state(self): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/state").json() if response["message"]=="OK": self.state = response["state"] return self.state def observe(self, player_id=0): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/observe/"+str(player_id)).json() if response["message"]=="OK": self.state = response["state"] return self.state def reset_state(self): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/reset_state").json() if response["message"]=="OK": self.state = response["state"] return response def score(self): return self.state["score"] def is_over(self): return self.state["is_over"] def current_player(self): return self.state["current_player"] def simulate_start(self): requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/sim_start") def simulate_stop(self): requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/sim_stop") class LocalGame(object): """ Class `LocalGame` digunakan untuk menggunakan Gapoera API secara offline. Class ini berisikan perintah-perintah utama dalam menggunakan environment dengan mengakses langsung package `envs`. """ def __init__(self, game_name, game_params=None): self.__states = [] if game_name.lower()=="surakarta": self.env = Surakarta() elif game_name.lower()=="mancala": if game_params: self.env = Mancala(len_board=game_params[0], stone_each=game_params[1]) else: self.env = Mancala(len_board=7, stone_each=7) def step(self, player_id=0, action=0): status, reward = self.env.step(player_id, action) return {"status":status, "reward":reward} def valid_act(self, player_id=0): return self.env.valid_act(player_id) def simulate_start(self): self.__states.append(self.env.game_state()) def simulate_stop(self): if self.in_simulation(): self.env.set_game_state(self.__states.pop()) def in_simulation(self): return len(self.__states)!=0 def get_state(self): return self.env.game_state() def observe(self, player_id): return self.env.observe(player_id) def set_game_state(self, state): return self.env.set_game_state(state) def render(self, state=None): if state==None: state = self.get_state() self.env.render(state) def reset_state(self): self.env.reset() def score(self): return self.env.get_score() def is_over(self): return self.env.gameover() def describe(self): return self.env.describe() def current_player(self): return self.env.get_current_player()
View Source
class Game(object): """ Class `Game` digunakan untuk menggunakan Gapoera API secara online. Class ini berisikan perintah-perintah utama dalam menggunakan environment dengan mengakses server Gapoera API menggunakan fungsi python `request`. """ def __init__(self, game_name, host_url="http://api.gapoera.com"): self.url = host_url self.game_name = game_name def start(self): resp = requests.get(url=self.url+"/"+self.game_name) print(resp) self.data = resp.json() self.game_id = self.data["game_id"] self.state = self.data["state"] return self.game_id def step(self, player_id=0, action=0): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/step/"+str(player_id)+"/" + str(action)).json() if response["message"]=="OK": self.state = response["state"] return response def bot_step(self): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/bot", timeout=None).json() if response["message"]=="OK": self.state = response["state"] return response def valid_act(self, player_id=0): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/valid/"+str(player_id)).json() return list(response["return"]) def get_state(self): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/state").json() if response["message"]=="OK": self.state = response["state"] return self.state def observe(self, player_id=0): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/observe/"+str(player_id)).json() if response["message"]=="OK": self.state = response["state"] return self.state def reset_state(self): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/reset_state").json() if response["message"]=="OK": self.state = response["state"] return response def score(self): return self.state["score"] def is_over(self): return self.state["is_over"] def current_player(self): return self.state["current_player"] def simulate_start(self): requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/sim_start") def simulate_stop(self): requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/sim_stop")
Class Game
digunakan untuk menggunakan Gapoera API secara online. Class ini berisikan perintah-perintah utama dalam menggunakan environment dengan mengakses server Gapoera API menggunakan fungsi python request
.
View Source
def __init__(self, game_name, host_url="http://api.gapoera.com"): self.url = host_url self.game_name = game_name
View Source
def start(self): resp = requests.get(url=self.url+"/"+self.game_name) print(resp) self.data = resp.json() self.game_id = self.data["game_id"] self.state = self.data["state"] return self.game_id
View Source
def step(self, player_id=0, action=0): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/step/"+str(player_id)+"/" + str(action)).json() if response["message"]=="OK": self.state = response["state"] return response
View Source
def bot_step(self): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/bot", timeout=None).json() if response["message"]=="OK": self.state = response["state"] return response
View Source
def valid_act(self, player_id=0): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/valid/"+str(player_id)).json() return list(response["return"])
View Source
def get_state(self): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/state").json() if response["message"]=="OK": self.state = response["state"] return self.state
View Source
def observe(self, player_id=0): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/observe/"+str(player_id)).json() if response["message"]=="OK": self.state = response["state"] return self.state
View Source
def reset_state(self): response = requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/reset_state").json() if response["message"]=="OK": self.state = response["state"] return response
View Source
def score(self): return self.state["score"]
View Source
def is_over(self): return self.state["is_over"]
View Source
def current_player(self): return self.state["current_player"]
View Source
def simulate_start(self): requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/sim_start")
View Source
def simulate_stop(self): requests.get(url=self.url+"/"+self.game_name+"/"+self.game_id+"/sim_stop")
View Source
class LocalGame(object): """ Class `LocalGame` digunakan untuk menggunakan Gapoera API secara offline. Class ini berisikan perintah-perintah utama dalam menggunakan environment dengan mengakses langsung package `envs`. """ def __init__(self, game_name, game_params=None): self.__states = [] if game_name.lower()=="surakarta": self.env = Surakarta() elif game_name.lower()=="mancala": if game_params: self.env = Mancala(len_board=game_params[0], stone_each=game_params[1]) else: self.env = Mancala(len_board=7, stone_each=7) def step(self, player_id=0, action=0): status, reward = self.env.step(player_id, action) return {"status":status, "reward":reward} def valid_act(self, player_id=0): return self.env.valid_act(player_id) def simulate_start(self): self.__states.append(self.env.game_state()) def simulate_stop(self): if self.in_simulation(): self.env.set_game_state(self.__states.pop()) def in_simulation(self): return len(self.__states)!=0 def get_state(self): return self.env.game_state() def observe(self, player_id): return self.env.observe(player_id) def set_game_state(self, state): return self.env.set_game_state(state) def render(self, state=None): if state==None: state = self.get_state() self.env.render(state) def reset_state(self): self.env.reset() def score(self): return self.env.get_score() def is_over(self): return self.env.gameover() def describe(self): return self.env.describe() def current_player(self): return self.env.get_current_player()
Class LocalGame
digunakan untuk menggunakan Gapoera API secara offline. Class ini berisikan perintah-perintah utama dalam menggunakan environment dengan mengakses langsung package envs
.
View Source
def __init__(self, game_name, game_params=None): self.__states = [] if game_name.lower()=="surakarta": self.env = Surakarta() elif game_name.lower()=="mancala": if game_params: self.env = Mancala(len_board=game_params[0], stone_each=game_params[1]) else: self.env = Mancala(len_board=7, stone_each=7)
View Source
def step(self, player_id=0, action=0): status, reward = self.env.step(player_id, action) return {"status":status, "reward":reward}
View Source
def valid_act(self, player_id=0): return self.env.valid_act(player_id)
View Source
def simulate_start(self): self.__states.append(self.env.game_state())
View Source
def simulate_stop(self): if self.in_simulation(): self.env.set_game_state(self.__states.pop())
View Source
def in_simulation(self): return len(self.__states)!=0
View Source
def get_state(self): return self.env.game_state()
View Source
def observe(self, player_id): return self.env.observe(player_id)
View Source
def set_game_state(self, state): return self.env.set_game_state(state)
View Source
def render(self, state=None): if state==None: state = self.get_state() self.env.render(state)
View Source
def reset_state(self): self.env.reset()
View Source
def score(self): return self.env.get_score()
View Source
def is_over(self): return self.env.gameover()
View Source
def describe(self): return self.env.describe()
View Source
def current_player(self): return self.env.get_current_player()