コード例 #1
0
 def generate_menu():
     while True:
         menu_items = [
             MenuItem(
                 text=
                 f"{DictionaryParser.get_dict_meta('actions')['play'].capitalize()} standard boggle",
                 key='0',
                 function=GameLogic.run_game,
                 args=(StandardBoggle, )),
             MenuItem(
                 text=
                 f"{DictionaryParser.get_dict_meta('actions')['play'].capitalize()} Battle boggle",
                 key='1',
                 function=GameLogic.run_game,
                 args=(BattleBoggle, )),
             MenuItem(
                 text=
                 f"{DictionaryParser.get_dict_meta('actions')['play'].capitalize()} Foggle boggle",
                 key='2',
                 function=GameLogic.run_game,
                 args=(FoggleBoggle, )),
             MenuItem(
                 text=
                 f"{DictionaryParser.get_dict_meta('actions')['settings'].capitalize()}",
                 key='s',
                 function=MenuParser.generate_settings),
             MenuItem(
                 text=
                 f"{DictionaryParser.get_dict_meta('actions')['quit'].capitalize()}",
                 key='q',
                 function=exit),
         ]
         HostIO.display_main_menu(menu_items)
コード例 #2
0
 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")
コード例 #3
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)
コード例 #4
0
    def generate_settings():
        exit_command = [False]

        while not exit_command[0]:
            menu_items = [
                MenuItem(
                    text=
                    f"{DictionaryParser.get_dict_meta('actions')['language'].capitalize()} "
                    f"{SettingsParser.get_setting('language')}",
                    key='l',
                    function=MenuParser.settings_standard,
                    args=("language", "language")),
                MenuItem(
                    text=
                    f"{DictionaryParser.get_dict_meta('actions')['board size'].capitalize()} "
                    f"{SettingsParser.get_setting('board_size')}x{SettingsParser.get_setting('board_size')}",
                    key='b',
                    function=MenuParser.board_size_setting,
                    args=("board size", "board_size")),
                MenuItem(
                    text=
                    f"{DictionaryParser.get_dict_meta('actions')['show solution'].capitalize()} "
                    f"{SettingsParser.get_setting('show_solution')}",
                    key='s',
                    function=MenuParser.settings_standard_bool,
                    args=("show solutions", "show_solution")),
                MenuItem(
                    text=
                    f"{DictionaryParser.get_dict_meta('actions')['number of players'].capitalize()} "
                    f"{SettingsParser.get_setting('number_players')}",
                    key='n',
                    function=MenuParser.settings_standard_int,
                    args=("number of players", "number_players")),
                MenuItem(
                    text=
                    f"{DictionaryParser.get_dict_meta('actions')['seconds per game'].capitalize()} "
                    f"{SettingsParser.get_setting('game_time')}",
                    key='t',
                    function=MenuParser.settings_standard_int,
                    args=("seconds per game", "game_time")),
                MenuItem(
                    text=
                    f"{DictionaryParser.get_dict_meta('actions')['generous'].capitalize()} boggle "
                    f"{SettingsParser.get_setting('generous_boggle')}",
                    key='g',
                    function=MenuParser.settings_standard_int,
                    args=("generous boggle", "generous_boggle")),
                MenuItem(
                    text=
                    f"{DictionaryParser.get_dict_meta('actions')['save'].capitalize()}",
                    args=(exit_command, ),
                    key='q',
                    function=MenuParser.settings_main_menu),
            ]

            HostIO.display_settings_menu(menu_items)
コード例 #5
0
    def test_get_word_list(self):
        standard_setup()
        load_minimal_language()
        HostIO.set_terminal_output(True)

        standard_boggle = StandardBoggle(number_of_boards=2, board_size=4)
        standard_boggle.set_board_value(position=(0, 0), value='w')
        standard_boggle.set_board_value(position=(0, 1), value='o')
        standard_boggle.set_board_value(position=(0, 2), value='r')
        standard_boggle.set_board_value(position=(0, 3), value='d')

        standard_boggle.game_paralell_process()
        self.assertCountEqual(standard_boggle.get_words_in_board(), ['word'])
コード例 #6
0
    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)
コード例 #7
0
 def settings_standard_int(input_text, key, set=True):
     try:
         val = int(HostIO.get_input(f"Set {input_text}: "))
     except ValueError:
         print("Input is not an int")
         return
     if set:
         SettingsParser.set_setting(key=key, value=val)
     else:
         return val
コード例 #8
0
 def settings_standard(input_text, key):
     SettingsParser.set_setting(
         key=key, value=HostIO.get_input(f"Set {input_text}: "))
コード例 #9
0
 def on_client_connect(key):
     HostIO.print(f"player {key} joined", direct_continue=True)
     HostNetworking.player_write(key, f"Welcome player {key}\n")
コード例 #10
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)
コード例 #11
0
def standard_setup():
    SettingsParser.load_settings()
    DictionaryParser.load_dictionary(language=SettingsParser.get_setting('language'))
    SettingsParser.set_setting('generous_boggle', False)
    HostIO.set_terminal_output(False)