< 返回版块

Neutron3529 发表于 2020-07-06 01:37

想折腾一下Linux环境下的中国象棋

找到了一个神奇的ucci引擎,这个引擎的特点是只接受FEN代码

于是一不做二不休我搞了一个图形界面的象棋程序

目前的输出是这个样子的:

車-馬-象-士-将-士-象-馬-車
|  |  |  |\|/|  |  |  |
・-・-・-・-・-・-・-・-・
|  |  |  |/|\|  |  |  |
・-#-・-・-砲-・-・-砲-・
|  |  |  |  |  |  |  |  |
卒-・-卒-・-卒-・-卒-・-卒
|  |  |  |  |  |  |  |  |
・-・-・-・-・-・-・-・-・
|    楚  河          汉  界    |
・-・-・-・-・-・-・-・-・
|  |  |  |  |  |  |  |  |
兵-・-兵-・-兵-・-兵-・-兵
|  |  |  |  |  |  |  |  |
・-炮-马-・-相-・-・-炮-・
|  |  |  |\|/|  |  |  |
・-・-・-・-・-・-・-・-・
|  |  |  |/|\|  |  |  |
车-・-・-仕-帅-仕-相-马-车

我下一步的计划是,增加光标支持

高亮光标所在位置非常容易(事实上我的棋子都是用format!("{}[1;32m{}{}[0m",27_u8 as char,prints,27_u8 as char)format!("{}[1;33m{}{}[0m",27_u8 as char,prints,27_u8 as char)带上颜色的(Linux终端支持如此上色,Windows……windows有现成的引擎不需要我插手))

现在的问题是没有办法监听键盘事件,除非我输入一串wwddw然后回车,否则程序并不知道我输入了什么

想问一下,Rust应该如何监听键盘事件,在按下按键(比如上下左右)的时候,程序能主动获知(而不需要我们敲回车)

评论区

写评论
作者 Neutron3529 2020-07-06 18:13

看到了,谢谢

可以试试哪个更好用了

--
👇
luojia65: 建议使用TUI框架

作者 Neutron3529 2020-07-06 18:13

感谢~

(其实可能主要的问题是我也不会C的处理)

(C的文件处理只学了fopen……)

--
👇
Aya0wind: 跟是C一样的,Linux下可以调OSAPI,open一个事件文件然后用read去读事件,或者使用termios库来做无阻塞无缓冲的读取输入。实际开发没必要这样,直接调ncurses里的函数就行了,使用非常简单,不仅可以选择有或无阻塞和缓冲的监听键盘事件,鼠标事件也可以,包括你画窗口画字符,颜色啥的都可以做,并且windows也能用pdcurses,API基本一样,很方便移植。上面这些库都有Rust的binding,直接crates.io里面搜就行了,选哪个看你自己。

洛佳 2020-07-06 16:56

建议使用TUI框架

Aya0wind 2020-07-06 09:42

跟是C一样的,Linux下可以调OSAPI,open一个事件文件然后用read去读事件,或者使用termios库来做无阻塞无缓冲的读取输入。实际开发没必要这样,直接调ncurses里的函数就行了,使用非常简单,不仅可以选择有或无阻塞和缓冲的监听键盘事件,鼠标事件也可以,包括你画窗口画字符,颜色啥的都可以做,并且windows也能用pdcurses,API基本一样,很方便移植。上面这些库都有Rust的binding,直接crates.io里面搜就行了,选哪个看你自己。

1 共 4 条评论, 1 页