296. Main 键盘映射定义

为 main_only_background.py 定义键盘到 NES 按钮的映射。

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 键控制 NES A 键。

超出本步骤范围

  • 处理 KEYDOWN / KEYUP 事件
  • pygame 游戏手柄/手柄支持
  • 重映射界面
  • 控制器端口 2

运行本课

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