Esempio n. 1
0
def main(stdscr):

    curses.start_color()
    curses.use_default_colors()
    curses.curs_set(False)
    curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_RED)
    curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK)
    curses.init_pair(3, curses.COLOR_BLACK, curses.COLOR_GREEN)
    curses.init_pair(4, curses.COLOR_BLUE, curses.COLOR_BLACK)
    stdscr.clear()
    stdscr.keypad(True)

    database = load_database(database_file)
    highscores = deepcopy(database['highscores'])
    settings = deepcopy(database['settings'])
    images = deepcopy(database['images'])
    image_choice = deepcopy(database['image choice'])
    main_menu_title = 'Binary Fun Crossword'
    main_menu_list =  ['play game', 'select image', 'manage image',
                       'show highscores', 'settings', 'help', 'quit']


    running = True
    while running:
        command = run_selection_menu(stdscr, main_menu_list, main_menu_title)

        if command == "play game":
            highscores = start_game(stdscr, images, image_choice,
                                    highscores, settings)

        elif command == "select image":
            image_choice = run_selection_menu(stdscr,
                                              list(images.keys()) + ['random'],
                                              'Image Selection Menu')
        elif command == 'manage image':
            images, highscores = show_manage_images_menu(stdscr, images,
                                                         highscores)

        elif command == 'show highscores':
            show_highscores(stdscr, highscores)

        elif command == "settings":
            settings = show_settings_menu(stdscr, settings)

        elif command == "help":
            show_message(stdscr, 'Help', help_text, 80)

        elif command == "quit":
            database = make_database(highscores, settings, images, image_choice)
            save_database(database, database_file)
            running = False
Esempio n. 2
0
    def run_remove_image_menu(img_dict, hs_dict):

        new_img_dict, new_hs_dict = deepcopy(img_dict), deepcopy(hs_dict)

        if img_dict:
            img_name = run_selection_menu(screen,
                                          list(img_dict.keys()) + ['go back'],
                                          'Remove Image')
            if img_name != 'go back':
                confirm = run_selection_menu(screen, ['yes', 'no'],
                                            ('Are you sure that you want to ' +
                                             'delete this image ' +
                                             '"{}"'.format(img_name)))
                if confirm == 'yes':
                    new_img_dict, new_hs_dict = remove_image(new_img_dict,
                                                            new_hs_dict,
                                                            img_name)
        else:
            show_message(screen, 'Error', 'Image list is empty.', 40)

        return new_img_dict, new_hs_dict
Esempio n. 3
0
def show_settings_menu(screen, settings):


    def choose_number(num_range, title):
        return int(run_selection_menu(screen,
                                      [str(num) for num in num_range],
                                      title))

    def choose_boolean(title):
        choice = run_selection_menu(screen, ['yes', 'no'], title)
        return True if choice == 'yes' else False


    dp_settings = deepcopy(settings)
    menu_list = sorted(dp_settings.keys()) + ['go to main menu']

    running = True
    while running:
        menu_item = run_selection_menu(screen, menu_list, 'Settings')

        if menu_item == 'go to main menu':
            running = False
            continue

        elif menu_item == 'cell width':
            dp_settings[menu_item] = choose_number(range(1, 6), 'Cell Width')

        elif menu_item == 'cell height':
            dp_settings[menu_item] = choose_number(range(1, 3), 'Cell Height')

        elif menu_item == 'random plane size':
            p_width = choose_number(range(4, 11), 'Random Plane Width')
            p_height = choose_number(range(4, 11), 'Random Plane Height')
            dp_settings[menu_item] = [p_width, p_height]

        elif menu_item == 'time':
            dp_settings[menu_item] = choose_boolean('Count time and save ' +
                                                    'to highscores?')

        elif menu_item == 'show line count hint':
            dp_settings[menu_item] = choose_boolean('Show line count per line?')

        elif menu_item == 'show binary hint':
            dp_settings[menu_item] = choose_boolean('Show binary hint below ' +
                                                    'plane?')
        elif menu_item == 'show line complete hint':
            dp_settings[menu_item] = choose_boolean('Highlight number if line' +
                                                    'is complete?')

    return dp_settings
Esempio n. 4
0
    def run_add_image_menu(img_dict):

        new_img_dict = deepcopy(img_dict)

        files = list_files_in_dir(images_dir)
        if files:
            chosen_file = run_selection_menu(screen, files + ['go back'],
                                             'Choose file')
            if chosen_file != 'go back':
                image_txt = load_file(images_dir + '/' + chosen_file)
                if check_image(image_txt):
                    plane = create_plane(*calc_image_sizes(image_txt))
                    plane = load_image_on_plane(plane, image_txt, '1')
                    new_img_dict[chosen_file.split('.')[0]] = plane
                else:
                    show_message(screen, 'Error', 'Not valid image.', 40)
        else:
            show_message(screen, 'Error', 'No file found.', 40)

        return new_img_dict
Esempio n. 5
0
def show_manage_images_menu(screen, images, highscores):

    dp_images = deepcopy(images)
    dp_highscores = deepcopy(highscores)


    def run_add_image_menu(img_dict):

        new_img_dict = deepcopy(img_dict)

        files = list_files_in_dir(images_dir)
        if files:
            chosen_file = run_selection_menu(screen, files + ['go back'],
                                             'Choose file')
            if chosen_file != 'go back':
                image_txt = load_file(images_dir + '/' + chosen_file)
                if check_image(image_txt):
                    plane = create_plane(*calc_image_sizes(image_txt))
                    plane = load_image_on_plane(plane, image_txt, '1')
                    new_img_dict[chosen_file.split('.')[0]] = plane
                else:
                    show_message(screen, 'Error', 'Not valid image.', 40)
        else:
            show_message(screen, 'Error', 'No file found.', 40)

        return new_img_dict


    def run_remove_image_menu(img_dict, hs_dict):

        new_img_dict, new_hs_dict = deepcopy(img_dict), deepcopy(hs_dict)

        if img_dict:
            img_name = run_selection_menu(screen,
                                          list(img_dict.keys()) + ['go back'],
                                          'Remove Image')
            if img_name != 'go back':
                confirm = run_selection_menu(screen, ['yes', 'no'],
                                            ('Are you sure that you want to ' +
                                             'delete this image ' +
                                             '"{}"'.format(img_name)))
                if confirm == 'yes':
                    new_img_dict, new_hs_dict = remove_image(new_img_dict,
                                                            new_hs_dict,
                                                            img_name)
        else:
            show_message(screen, 'Error', 'Image list is empty.', 40)

        return new_img_dict, new_hs_dict

    running = True
    while running:
        choice = run_selection_menu(screen,
                                    ['add image', 'remove image',
                                     'go to main menu'],
                                    'Manage Images')
        if choice == 'go to main menu':
            running = False
            continue

        elif choice == 'add image':
            dp_images = run_add_image_menu(dp_images)

        elif choice == 'remove image':
            dp_images, dp_highscores = run_remove_image_menu(dp_images,
                                                             dp_highscores)

    return dp_images, dp_highscores
Esempio n. 6
0
 def choose_boolean(title):
     choice = run_selection_menu(screen, ['yes', 'no'], title)
     return True if choice == 'yes' else False
Esempio n. 7
0
 def choose_number(num_range, title):
     return int(run_selection_menu(screen,
                                   [str(num) for num in num_range],
                                   title))