3 个版本
0.2.3 | 2023年2月7日 |
---|---|
0.2.2 | 2023年2月7日 |
0.2.1 | 2023年2月7日 |
#2103 在 命令行工具
125KB
818 代码行
rustmaton
使用 Rust 实现的康威生命游戏的文本编辑器版本。
概述
- 屏幕代表一个细胞网格。
- 每个细胞可以是活着的或死去的。
- 每次模拟循环都会计算每个细胞的健康状况。
- 细胞的健康状况计算如下
- 当前活着且有 2 或 3 个活着的邻居 => 活着
- 当前死去且有 3 个活着的邻居 => 活着
- 所有其他条件 => 死去
游戏玩法
很简单 - 使用键盘导航并在网格中添加更多图案。
- 上、下、左和右键
- Tab 和反制表符(Shift+Tab)
鼠标点击可以设置光标点以加快导航!
您可以使用 +
或 -
键增加或减少模拟速度。
如果控制台窗口大小发生变化,则需要使用 c
键重置游戏。
安装
安装程序将创建一个名为 rustmaton
的目录,其中包含可执行文件和 patterns.json 文件。
curl --location https://github.com/deweyjose/rustling/releases/download/0.2.3/install.sh | sh
用法
如果 patterns.json 在当前工作目录中,则无需指定任何参数即可运行 rustling。
% rustmaton
或者指定 patterns.json 的路径。
% rustmaton some/path/patterns.json
如果您构建了自己的图案文件,只需提供其路径即可。
% rustmaton path/customize.json
图案
该游戏附带一组预定义的知名 pattern types
:oscillators
、stills
、spaceships。在模拟过程中,只有一个
pattern type
是活动的。可以通过按 p
键更改 pattern type
。每个 pattern type
都有一个图案数组。您通过在网格中输入其索引对应的数字(不是基于 0 的)来放置图案。使用 h
帮助键查看特定图案的数字键。
patterns.json
rustmaton 在启动时加载预定义的模式集。只需将 patterns.json 文件放置在与 rustmaton 可执行文件相同的目录下并运行即可。您可以自由地自定义模式列表,甚至定义自己的模式。
如果在启动时找不到形状文件,则默认加载简单的闪烁形状。
示例结构
[
{
"name": "methuselahs",
"patterns": [
{
"name": "r-pentomino",
"matrix": [
[0,1,1],
[1,1,0],
[0,1,0]
]
}
]
}
]
细胞
可以使用 a
或 d
键手动将单个细胞设置为 Alive
(存活)或 Dead
(死亡)。
帮助
按 h
键显示或隐藏帮助。显示帮助时,模拟将暂停。
以下是帮助屏幕的示例。如果您对 patterns.json 进行了任何自定义,这些更改将反映在帮助屏幕中。
# command keys:
a - toggle cursor point alive
b - move cursor to the beginning of the current line
c - clear the screen
d - toggle cursor point dead
e - move cursor to the end of the current line
h - display help, or exit help if currently rendered
l - print the previous pattern again
p - cycle through the pattern classes defined in patterns.json
q - quit
r - rotate the current shape 90 degrees
s - toggle the simulation run loop
' ' - step the simulation forward
+ - speed up the simulation
- - slow down the simulation
[esc] - exit help
ctrl+c - quit
# pattern classes
Select a different pattern class using the p key
Print a shape using the number in () to the left of the name
oscillators
(1) beacon, (2) blinker, (3) koks galaxy, (4) pulsar, (5) toad
spaceships
(1) glider, (2) lwss, (3) hwss
still
(1) beehive, (2) block, (3) boat, (4) loaf, (5) tub
依赖关系
~1.7–2.8MB
~55K SLoC