|

Простой тренажёр памяти и внимательности на Питоне (Python)

Хотите улучшить свою память? Ниже комментируется код простейшего тренажёра памяти и внимательности, реализовать который совсем не трудно.

Краткое описание тренажёра

Тренировать краткосрочную память и внимательность можно используя различные упражнения или тренажёры. Например, показывая написанное каким-то цветом слово, которое само обозначает цвет. Требуется быстро ответить на вопрос: каким цветом написано слово. Цвет, на который указывает слово, не обязательно соответствует цвету букв, которым это слово написано.

Например, после прочтения слова «синий», мозг уже подсознательно готов на поставленный вопрос дать именно этот ответ. Несмотря на то, что само слово написано, к примеру, красным. Можете не верить, но это упражнение требует концентрации внимания. В этом можете убедиться сами. Здесь находятся ссылки на видео с упражнением и более детальное описание.

Код тренажёра на языке Питон (Python)

Питон-скрипт генерирует экраны со словом, обозначающим один из цветов радуги, с добавленным чёрным. Но нужно не прочитать это слово, а назвать цвет букв, которыми это слово написано. Сам цвет выбирается случайным образом из названной восьмёрки и почти всегда отличается от оттенка, который обозначает само слово. В этом собственно и заключается тренировка памяти и внимательности: нужно абстрагироваться от названия цвета, заложенного в слове, и определить только колер его букв.

Комментарии

PyGame и другие библиотеки Питон

Загружаемые библиотеки предназначены для работы в интегрированной среде, поддерживающей интерпретатор Python:

— для написания простых вспомогательных функций, работающих с файлами и временем (os и time);
random – для работы с генерацией случайных выборок;
pygame – это библиотека для создания простейших игр на Питон. для отображения самого слова, с вариациями некоторых параметров.

Функция draw_text рассчитывает точку помещения текстового контейнера на поверхности (это такой термин для этой библиотеки), с учетом длины самого слова и центрированием по центру экрана.

Функция clear_screen — очистка экрана в зависимости от типа операционной системы.

Функция get_index — определение номера передаваемого значения в списке. Хотя есть стандартная функция для такой процедуры, хотелось избежать непонятных глюков, иногда возникающих при её использовании.

def draw_text(win_text, bg = (255,255,255)):
    win.fill(bg)
    pos = win_text.get_rect(center=(W//2, H//2))

    win.blit(win_text, pos)
    pygame.display.update()

def clear_screen():
    os.system('cls' if os.name == 'nt' else 'clear')

def get_index(list, target):
    for j in range(len(list)):
        if list[j] == target:
            return j
    return -1    

Функция get_text_container_chars случайным образом генерирует цвет букв слова в формате RGB, в котором выводится текст самого слова. В большинстве этот текст не совпадает с цветом шрифта, которым оно выводится. В более полном варианте кода здесь же определяются и другие меняющиеся параметры вывода.

def get_text_container_chars():
    FONT_COLOR = ["red", "orange", "yellow", "green", "blue", "indigo", "violet", "black", "white"]
    FONT = ["Roboto", "Verdana", "Arial"]
    BOLDNESS = ["bold", "regular", "italic"]
    num = len(FONT_COLOR)
    
    font_color_index = random.randrange(num)
    font_color = FONT_COLOR[font_color_index]
    font_rgb = FONT_RGB[font_color_index]
    font = random.choice(FONT)

    background_color = random.choice(FONT_COLOR)
    while background_color == font_color:
        background_color = random.choice(FONT_COLOR)

    txt_index = random.randrange(num)

    while txt_index == font_color_index:
        new_txt_index = random.randrange(num)
        txt_index = new_txt_index

    txt = TEXT[txt_index]

    boldness = random.choice(BOLDNESS)
    max_font_size = int( W / len(txt) * 1.3)
    min_font_size = int(max_font_size / 1.5)
    font_size = random.randrange(min_font_size, max_font_size)

    return font, font_rgb, txt, font_color, font_size, boldness, background_color

Основной цикл алгоритма, с определением значений параметров и обновлением экрана. Задержка в 2 секунды после каждого шага. Функции time и clock применены для уменьшения интенсивности загрузки сервера запросами.

def get_text_container_chars():
    FONT_COLOR = ["red", "orange", "yellow", "green", "blue", "indigo", "violet", "black", "white"]
    FONT = ["Roboto", "Verdana", "Arial"]
    BOLDNESS = ["bold", "regular", "italic"]
    num = len(FONT_COLOR)
    
    font_color_index = random.randrange(num)
    font_color = FONT_COLOR[font_color_index]
    font_rgb = FONT_RGB[font_color_index]
    font = random.choice(FONT)

    background_color = random.choice(FONT_COLOR)
    while background_color == font_color:
        background_color = random.choice(FONT_COLOR)

    txt_index = random.randrange(num)

    while txt_index == font_color_index:
        new_txt_index = random.randrange(num)
        txt_index = new_txt_index

    txt = TEXT[txt_index]

    boldness = random.choice(BOLDNESS)
    max_font_size = int( W / len(txt) * 1.3)
    min_font_size = int(max_font_size / 1.5)
    font_size = random.randrange(min_font_size, max_font_size)

    return font, font_rgb, txt, font_color, font_size, boldness, background_color

В данном Питон-скрипте показан только код простейшей реализации такого тренажёра памяти и внимательности.
У меня код работает в среде Visual Studio Code (VSC). Пробовал запускать через блокнот Jupyter. Но в графике не пошло. Разбираться почему, не стал.
Дополнительную информацию, вместе со ссылками на соответствующие демо-файлы с более сложными вариациями этого тренажёра, можно найти ЗДЕСЬ >>

Также может быть интересно: