我的儿子和我正在尝试实现一个有趣的-science.org微位教程-构建一个“拔河”游戏。基本上,按下按钮A的10次会使精灵更靠近该按钮,同样的情况也适用于按钮B。当你点击屏幕边缘时,在游戏重新开始之前,音乐会播放,屏幕上会滚动一条消息。
我们已经让它完全工作了,但是一旦游戏赢了,它似乎就不能正常重置了。它在模拟器上工作得很好,但在物理设备(微位2)上就不行了。
一旦游戏获胜,行为就会变得不稳定。它通常会将精灵放回中间,有时不会,但通常情况下,一个按钮在下一个游戏中不起作用。偶尔两者都会停止工作。在任何情况下,重新启动都会修复问题。
代码有什么问题吗?我想知道音乐/消息是否破坏了什么,我需要等待它完成。我已经重新下载了十六进制文件,并多次刷新了microbit,所以我想我已经消除了一个损坏的代码文件。
下面显示了代码的Javascript版本,但它实际上是使用微软的MakeCode工具构建的。
input.onButtonPressed(Button.A, function () {
sprite.change(LedSpriteProperty.X, -0.1)
})
input.onButtonPressed(Button.B, function () {
sprite.change(LedSpriteProperty.X, 0.1)
})
let sprite: game.LedSprite = null
sprite = game.createSprite(2, 3)
basic.forever(function () {
if (sprite.get(LedSpriteProperty.X) == 0) {
music.startMelody(music.builtInMelody(Melodies.Birthday), MelodyOptions.Once)
basic.showString("liverpool wins")
sprite.set(LedSpriteProperty.X, 2)
} else if (sprite.get(LedSpriteProperty.X) == 4) {
music.startMelody(music.builtInMelody(Melodies.Entertainer), MelodyOptions.Once)
basic.showString("rb leipzig wins")
sprite.set(LedSpriteProperty.X, 2)
}
})发布于 2021-01-03 00:12:08
我发现,如果我在游戏结束时滚动文本和播放音乐时使用game.pause()和game.resume(),会更可靠:
input.onButtonPressed(Button.A, function () {
sprite.change(LedSpriteProperty.X, -0.1)
})
input.onButtonPressed(Button.B, function () {
sprite.change(LedSpriteProperty.X, 0.1)
})
let sprite: game.LedSprite = null
sprite = game.createSprite(2, 3)
basic.forever(function () {
if (sprite.get(LedSpriteProperty.X) == 0) {
game.pause()
music.startMelody(music.builtInMelody(Melodies.Birthday), MelodyOptions.Once)
basic.showString("liverpool wins")
game.resume()
sprite.set(LedSpriteProperty.X, 2)
} else if (sprite.get(LedSpriteProperty.X) == 4) {
game.pause()
music.startMelody(music.builtInMelody(Melodies.Entertainer), MelodyOptions.Once)
basic.showString("rb leipzig wins")
game.resume()
sprite.set(LedSpriteProperty.X, 2)
}
})您还可以查看以下不使用游戏渲染引擎https://makecode.microbit.org/projects/tug-of-led的游戏版本,以了解这是否会有所不同。
https://stackoverflow.com/questions/65538381
复制相似问题