296. Definición del mapeo de teclado en main

Definir el mapeo de teclado a botones de la NES para main_only_background.py.

Lección 296 de 356 · tests/chapter_08_manual_main/test_296_main_keyboard_mapping_definition.py

Archivo a actualizar

main_only_background.py

Por qué existe este paso

main_only_background.py es el ejecutor visual histórico de pygame solo de fondo. Para hacer que la ROM sea interactiva, necesita un pequeño mapeo de los nombres de los botones del mando de la NES a las constantes de teclas de pygame.

Este primer paso de teclado solo define el diccionario de mapeo. La siguiente prueba cubre el ayudante que aplica los eventos de teclas a los booleanos de botones de Controller y lo conecta al bucle de eventos de pygame.

Ejemplo de implementación sugerido

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,
}

¿Por qué esta dirección?

Este diccionario responde a la pregunta

"Which keyboard key controls this NES button?"

Por ejemplo, en la siguiente prueba haremos

KEYS["a"] == pygame.K_z

significa que la tecla Z del teclado controla el botón A de la NES.

Fuera de alcance

  • Manejo de eventos KEYDOWN / KEYUP
  • Soporte de joystick/mando de pygame
  • Interfaz de reasignación de teclas
  • Puerto de mando 2

Ejecutar esta lección

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