2017-12-10 20:23:10 +08:00
|
|
|
import argparse
|
|
|
|
import time
|
|
|
|
import sys
|
|
|
|
import Pyro4
|
|
|
|
|
|
|
|
from game import Game
|
|
|
|
from engine import GTPEngine
|
|
|
|
|
|
|
|
@Pyro4.expose
|
|
|
|
class Player(object):
|
2017-12-15 22:19:44 +08:00
|
|
|
"""
|
|
|
|
This is the class which defines the object called by Pyro4 (Python remote object).
|
|
|
|
It passes the command to our engine, and return the result.
|
|
|
|
"""
|
2017-12-10 20:23:10 +08:00
|
|
|
def __init__(self, **kwargs):
|
|
|
|
self.role = kwargs['role']
|
|
|
|
self.engine = kwargs['engine']
|
|
|
|
|
|
|
|
def run_cmd(self, command):
|
|
|
|
#return "inside the Player of player.py"
|
|
|
|
return self.engine.run_cmd(command)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
parser = argparse.ArgumentParser()
|
2017-12-19 15:39:31 +08:00
|
|
|
parser.add_argument("--checkpoint_path", type=str, default=None)
|
2017-12-10 20:23:10 +08:00
|
|
|
parser.add_argument("--role", type=str, default="unknown")
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
2017-12-19 15:39:31 +08:00
|
|
|
if args.checkpoint_path == 'None':
|
|
|
|
args.checkpoint_path = None
|
2017-12-10 20:23:10 +08:00
|
|
|
game = Game(checkpoint_path=args.checkpoint_path)
|
|
|
|
engine = GTPEngine(game_obj=game, name='tianshou', version=0)
|
|
|
|
|
|
|
|
daemon = Pyro4.Daemon() # make a Pyro daemon
|
|
|
|
ns = Pyro4.locateNS() # find the name server
|
|
|
|
player = Player(role = args.role, engine = engine)
|
|
|
|
print "Init " + args.role + " player finished"
|
|
|
|
uri = daemon.register(player) # register the greeting maker as a Pyro object
|
|
|
|
print "Start on name " + args.role
|
|
|
|
ns.register(args.role, uri) # register the object with a name in the name server
|
|
|
|
print "Start Request Loop " + str(uri)
|
|
|
|
daemon.requestLoop() # start the event loop of the server to wait for calls
|
|
|
|
|