作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在 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/
我正在开发一个在 VS 社区 2017 中开发并使用 IIS Express 10 的 .net Core MVVC 项目,我遇到了 TempData 无法在我开发的 3 台计算机中的两台上运行的问题
我是一名优秀的程序员,十分优秀!