def main():
parser = argparse.ArgumentParser(description='Run a Tic Tac Toe game server')
parser.add_argument('board_x_size', metavar='X', type=int, nargs='?', default=3,
help='The horizontal size of the board')
parser.add_argument('board_y_size', metavar='Y', type=int, nargs='?', default=3,
help='The vertical size of the board')
parser.add_argument('needed_symbols', metavar='Z', type=int, nargs='?', default=3,
help='The number of consecutive symbols that account for a winning move.')
parser.add_argument('player_count', metavar='P', type=int, nargs='?', default=2,
help='The number of players.', choices=range(2, 10))
args = parser.parse_args()
server_socket = socket(AF_INET, SOCK_STREAM)
server_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
server_socket.bind((HOSTNAME, PORT))
server_socket.listen(15)
active_games = []
curr_game_serv = GameServer(player_count=args.player_count, board_x_size=args.board_x_size,
board_y_size=args.board_y_size, needed_symbols=args.needed_symbols)
while True:
client_socket, address = await server_socket.accept()
print(f'Accepted a player - {client_socket} @ {address}')
await curr_game_serv.add_player(client_socket, address) # add the player to the server
print(f'Current game server is hosting {len(curr_game_serv.players)}/{len(curr_game_serv.players)} players')
if curr_game_serv.should_start():
# Start the game and start accepting players for the next game
print('Starting Game')
await spawn(curr_game_serv.start_game)
active_games.append(curr_game_serv)
curr_game_serv = GameServer(player_count=args.player_count, board_x_size=args.board_x_size,
board_y_size=args.board_y_size, needed_symbols=args.needed_symbols)