目前正在尝试为 BBC micro:bit 开发一款小型两键游戏。由于 micro:kit 没有广泛使用,我将尝试详细解释我的问题。
我正在尝试为播放器创建控件,这是一个卡在网格最后一行的“可移动”灯。A 按钮应该将灯向左移动一列,B 按钮应该将灯向右移动 1 列。
我为矩阵创建了 5 个单独的图像(称为player_loc#),每个图像都是 LED 的可能位置。
from microbit import *
import random
player_index = 2
player_loc0 = Image('00000:00000:00000:00000:50000')
player_loc1 = Image('00000:00000:00000:00000:05000')
player_loc2 = Image('00000:00000:00000:00000:00500')
player_loc3 = Image('00000:00000:00000:00000:00050')
player_loc4 = Image('00000:00000:00000:00000:00005')
player_locs = [player_loc0, player_loc1, player_loc2, player_loc3, player_loc4]
# Indexes 0 1 2 3 4
while True:
display.show(player_locs[player_index])
if button_a.is_pressed():
player_index += 1
elif button_b.is_pressed():
player_index -= 1
A 按钮应该从player_index中减去 1 (等于 2),从而使display.show(player_locs[player_index])显示图像player_loc1而不是player_loc2。
B 按钮则相反,它添加了一个,这将导致player_loc3被显示。
我遇到的问题是,当我按下 A 或 B 按钮时,我得到一个 IndexError, list index is out of range, 在第 17 行 display.show(player_locs[player_index])。该索引不应超出范围。在列表player_locs 上,我的索引范围为 0-4。索引 1 和 3 没有超出范围,但它显示 IndexError 超出范围消息。当我删除 player_index 并使用任何整数 0-4 运行它时,它可以工作。
这是我在不按任何按钮的情况下运行脚本时的图像。只要按下按钮,就会显示错误消息。任何帮助将不胜感激。