在我的 BBC micro:bit V1 上,我正在尝试制作虚拟 DND 骰子集,但我只有两个按钮可以使用。所以我试图做到这样,如果我按一个按钮,我就能从 D4 转到 D6 再到 D8 等。如果我按另一个按钮,它会显示 D4 或 D6 的号码。不幸的是,我找不到其他人遇到过这个问题或解决它的方法。
我尝试过使用数组,但我几乎肯定它们不能与 Randit 相关使用。
input.onButtonPressed(Button.A, function () {
D20 = randint(1, 20)
basic.showString("D20 = " + D20)
})
input.onButtonPressed(Button.B, function () {
})
let D20 = 0
let swapOut = [randint(0, 10), randint(0, 20)]
basic.pause(2000)
basic.showString("Press A to roll D20")
if (input.buttonIsPressed(Button.B) <= 1) {
basic.showString("" + (swapOut[0]))
}
if (input.buttonIsPressed(Button.B) <= 1) {
basic.showString("" + (swapOut[1]))
}
据我所知,我无法使用数组来检测可以按下某物的次数。然后在输入之间移动该信息。
一种可能的方法是让按钮 A 增加一个索引,该索引引用可能的骰子类型列表。 然后按钮 B 将使用索引值生成骰子,以查找应使用的数字范围(骰子类型)。
实现这一点的一个例子是:
input.onButtonPressed(Button.A, function () {
ActiveDice += 1
if (ActiveDice > DTypes.length) {
ActiveDice = 0
}
basic.showString("D" + convertToText(DTypes[ActiveDice]))
})
input.onButtonPressed(Button.B, function () {
basic.showNumber(randint(1, DTypes[ActiveDice]))
})
let DTypes: number[] = []
let ActiveDice = 0
ActiveDice = 0
DTypes = [
20,
12,
10,
8,
6,
4
]
您在 micro:bit V1 上还有其他输入。例如,您有“摇动”。因此按钮 A 可以单向浏览列表。按钮 B 可以以相反的方式浏览列表。 “摇一摇”可以掷骰子。