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")
示例#2
0
 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)
示例#4
0
    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)
示例#5
0
 def on_client_connect(key):
     HostIO.print(f"player {key} joined", direct_continue=True)
     HostNetworking.player_write(key, f"Welcome player {key}\n")