296. Определение сопоставления клавиатуры в main

Определение сопоставления клавиш клавиатуры с кнопками NES для main_only_background.py.

Урок 296 из 356 · tests/chapter_08_manual_main/test_296_main_keyboard_mapping_definition.py

Файл для обновления

main_only_background.py

Зачем нужен этот шаг

main_only_background.py — это исторический визуальный запускатель на pygame, отображающий только фон. Чтобы сделать ROM интерактивным, нужно небольшое сопоставление имён кнопок геймпада NES с константами клавиш pygame.

Этот первый шаг с клавиатурой только определяет словарь сопоставления. Следующий тест охватывает вспомогательную функцию, применяющую события клавиш к булевым значениям кнопок Controller, и подключает её к циклу событий pygame.

Пример предполагаемой реализации

import pygame


KEYS = {
    "a": pygame.K_z,
    "b": pygame.K_x,
    "select": pygame.K_RSHIFT,
    "start": pygame.K_RETURN,
    "up": pygame.K_UP,
    "down": pygame.K_DOWN,
    "left": pygame.K_LEFT,
    "right": pygame.K_RIGHT,
}

Почему именно такое направление?

Этот словарь отвечает на вопрос

"Which keyboard key controls this NES button?"

Например, в следующем тесте мы сделаем

KEYS["a"] == pygame.K_z

означает, что клавиша Z клавиатуры управляет кнопкой A NES.

Вне рамок этого шага

  • обработка событий KEYDOWN / KEYUP
  • поддержка джойстика/геймпада pygame
  • интерфейс переназначения клавиш
  • порт геймпада 2

Запустить этот урок

uv run pytest tests/chapter_08_manual_main/test_296_main_keyboard_mapping_definition.py -v