Exemplo n.º 1
0
    def __init__(self, teamname, goalie=False, connect=True):
        # Player attributes
        self.stamina = 0
        self.speed = 0
        self.effort = 0
        self.head_angle = 0
        self.tackled = 0
        self.game_status = "before_kick_off"  # Initial mode
        self.observables = []
        self.side = 'l'  # l or r
        self.unum = None  # Uniform number

        # Instantiate parser to update info
        self.parser = Parser()

        # Set server IP
        # With is a safety wrapper
        with open("ip_address.txt", "r") as file:
            self.ip = file.read()

        if connect:
            # Server on port 6000 by default
            self.init_port = 6000
            self.serverAddressPort = (self.ip, self.init_port)

            # Create client via UDP socket
            self.UDPClientSocket = socket.socket(family=socket.AF_INET,
                                                 type=socket.SOCK_DGRAM)

            # Initialize player on team
            if not goalie:
                self.initString = "(init " + teamname + " (version 16)" + ")"
            else:
                self.initString = "(init " + teamname + " (version 16) (goalie))"

            self.send_init(self.initString)

            # Update unum then get formation
            self.update_info()
            self.std_pos = Formations.standard_formation(self.unum)
            self.gchar_pos = Formations.g_letter_wrapper(self.unum, self.side)
            self.gchar_pos2 = Formations.shift_letter(self.gchar_pos,
                                                      self.side)

            # Set initial formation
            self.send_action('(move {} {})'.format(self.std_pos[0],
                                                   self.std_pos[1]))