def settings_standard_bool(input_text, key): val = HostIO.get_input( f"Set {input_text} (should be 1, true, True, 0, false or False): ") if val in ['1', 'true', 'True']: SettingsParser.set_setting(key=key, value=1) elif val in ['0', 'false', 'False']: SettingsParser.set_setting(key=key, value=0) else: HostIO.print("Input is not a bool")
def write_player(player_id, out): if not PlayerIO.mockup: HostNetworking.player_write( player_id, out + ('' if out != '' and out[-1] == '\n' else '\n')) else: HostIO.print(f'From player {player_id}\'s terminal: \"{out}\"', clear_screen=False, direct_continue=True)
def connect_to_clients(number_of_connections, on_connect, args=None): try: HostNetworking.open_socket() while len(HostNetworking.connections) < number_of_connections: connection, _ = HostNetworking.server_socket.accept() HostNetworking.connections.append(connection) if args is not None: on_connect(len(HostNetworking.connections) - 1, args) else: on_connect(len(HostNetworking.connections) - 1) except PermissionError: HostIO.print( "Unable to bind to socket. Permission denied. Try running as sudo" ) exit(6)
def run_game(boggle_class, mockup=False, moves=None, predefined_boggle_instance=None): if SettingsParser.get_setting('number_players') < 2: if not mockup: HostIO.print( "To few player for a game. The minimal number of players are 2.", clear_screen=True) HostIO.get_input("Press any key to end\n") return -1 PlayerIO.mockup = mockup if not mockup: HostIO.print( f"The game is {boggle_class.get_name()}!\nWaiting for players", direct_continue=True, clear_screen=True) HostNetworking.connect_to_clients( number_of_connections=SettingsParser.get_setting( 'number_players'), on_connect=GameLogic.on_client_connect) HostIO.print("All players registered. Begin game.") HostIO.clear() boggle_instance, \ base_manager, \ players, \ processes = GameLogic.generate_game(boggle_class, moves, predefined_boggle_instance) try: for i in range(SettingsParser.get_setting('game_time'), 0, -1): HostIO.print(f'Time left: {i}', clear_screen=True, direct_continue=True) sleep(1) except KeyboardInterrupt: HostIO.print("\nTerminated") return GameLogic.terminate_game(boggle_instance, base_manager, players, processes, mockup)
def on_client_connect(key): HostIO.print(f"player {key} joined", direct_continue=True) HostNetworking.player_write(key, f"Welcome player {key}\n")