#终端 #tui #ui #游戏开发 #终端游戏 #光标位置

bin+lib terminity

为游戏提供最佳终端UI质量的平台

1 个不稳定版本

0.1.0 2023年3月5日

#2153 in 游戏开发

BSD-4-Clause

61KB
1.5K SLoC

Terminity

项目的入口点和唯一可执行文件。查看项目的 README 或文档以获取更多信息。


lib.rs:

用于注册多个终端游戏、允许选择游戏并设置运行它们的环境的包。此包处于极早的开发阶段。

要尝试它,请克隆项目并运行 cargo run Chesscargo run SuperTicTacToe

此包的目的和目标是

  1. 使在终端中构建良好的UI更加容易
  2. 使终端游戏对每个人来说都触手可及。一个 Windows .exe 应该是预期的,并且我希望制作一个智能手机应用程序。

我还想设置一个 P2P(对等)系统,允许与任何人在线玩游戏,并为程序员提供一个设置在线游戏的 API,而无需强制需要服务器(尽管如果创建了 P2P 系统,预期将创建服务器-客户端游戏)。创建 P2P 系统似乎是可行的,但对于 API 我还不知道。

当然,这个项目不能单独完成。它至少需要一个社区来尝试并提供反馈。如果您想以任何方式支持此项目,从成为 subreddit 的一部分到成为活跃的开发者,请这样做!您不必是开发者或有钱可花,任何帮助都可能比您预期的更有帮助。

目前,为了简化 UI 构建,进行了一些配置,以帮助创建有质量的东西。具体来说

  • 启用粘贴、焦点更改和鼠标捕获
  • 将终端置于“替代屏幕”
  • 启用原始模式
  • 保存光标位置并将其移至 0,0
  • 当发生任何 unwinding(因此是大多数 panic)时,在显示 unwinding 数据之前恢复终端状态(显示可能得到改进)。如果没有那样做,终端状态将保持配置,并且 sh CLI 变得糟糕。

这些操作的结果可以在棋盘实现中看到,例如,支持用鼠标拖动,并且任何键盘输入都会立即捕获。

依赖项

~6–17MB
~177K SLoC