我现在正在 Golang 中创建基于 CUI 的扫雷器。 我想处理键盘事件来操纵游戏。
你有什么想法来实现这个目标吗?
最佳答案
每个操作系统处理键盘按下的方式略有不同。您可以编写一个库,将这些抽象成一个通用接口(interface),或者更好的是,使用其他人已经编写的接口(interface)。
如评论中所述,termbox-go是一个不错的选择。它很稳定并且被广泛采用。
另一个不错的选择是 eiannone/keyboard它更小,受到 termbox-go 的积极开发和启发。
对于您的特定用例,您可能希望有一个监听键盘事件的 go 例程和一个处理它们的 channel 。以下是使用其文档中的键盘库的示例。
package main
import (
"fmt"
"github.com/eiannone/keyboard"
)
func main() {
keysEvents, err := keyboard.GetKeys(10)
if err != nil {
panic(err)
}
defer func() {
_ = keyboard.Close()
}()
fmt.Println("Press ESC to quit")
for {
event := <-keysEvents
if event.Err != nil {
panic(event.Err)
}
fmt.Printf("You pressed: rune %q, key %X\r\n", event.Rune, event.Key)
if event.Key == keyboard.KeyEsc {
break
}
}
}
关于go - Golang 控制台上的键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30191171/