假设我有两个按钮,按钮A和按钮B,我需要它,这样如果我按B,它将循环显示不同的值,按A将打印它们

问题描述 投票:0回答:1

在我的 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]))
}

据我所知,我无法使用数组来检测可以按下某物的次数。然后在输入之间移动该信息。

javascript button hex bbc-microbit
1个回答
0
投票

一种可能的方法是让按钮 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 可以以相反的方式浏览列表。 “摇一摇”可以掷骰子。

© www.soinside.com 2019 - 2024. All rights reserved.