11个版本 (6个重大更新)

0.8.5 2023年3月24日
0.8.0 2021年6月27日
0.7.1 2021年6月11日
0.6.0 2021年6月3日
0.2.5 2021年5月24日

#33 in 游戏

44 每月下载量

MIT 许可证

105KB
2.5K SLoC

yayagram - 在您的终端中玩非ogram/picross

yayagram 是一款在终端中通过逻辑和数字提示填写网格的益智游戏。

该游戏有多种名称:nonogram、picross、数字拼图、griddlers、pic-a-pix、hanjie 等。

Showcase

一个随机生成的网格,其中白色表示填充的单元格,红色表示划掉的单元格。

查看 此示例 了解如何玩游戏。

玩法很简单

cargo install yayagram
yayagram

二进制文件也提供在 发布 中。

特性

  • 在终端中运行!
  • 跨平台:在Linux和macOS上运行。
  • 有用的功能和工具,如撤销、重做和清除。
  • 随机网格。
  • 自定义网格: 创建自己的网格 以供他人游玩。
  • 一种新的单元格类型: maybed
  • 非常适合 大网格
  • 玩法直观。

控制

该游戏主要使用鼠标和键盘进行操作,但也可以仅使用键盘进行操作。您不需要记住以下控制键。最重要的控制键在游戏中显示。

  • 鼠标移动、箭头键或 HJKL:选择一个单元格。
  • 左键点击或 Q:放置一个单元格。
  • 中键点击或 W可能是一个单元格
  • 右键点击或 E:划掉一个单元格。
  • C:清除网格。
  • A:撤销单元格放置或网格清除。
  • D:重做单元格放置或网格清除。
  • F:填充多个单元格。
  • X:设置 测量点
  • Tab:切换 编辑器
  • S:将 编辑的 网格保存为本地文件。
  • Enter:通过拖放将本地的 .yaya 网格文件加载到窗口中。
  • Esc: 退出。

对于喜欢使用 vi 键盘的人来说,您可能对 @Maugrift 的出色 分支 感兴趣,它具有替代控制方案!

编辑器

Tab 切换编辑器并开始放置网格的单元格。您可以使用所有类型的单元格。在编辑器模式下,按 S 保存网格为新的本地 .yaya 网格文件。请注意,在同一个会话中,除非重命名,否则它总是将网格写入同一个文件。

加载网格文件

  • 您可以在游戏中按 Enter 加载一个 .yaya 网格文件,并将其拖放到窗口上。许多但并非所有终端都支持此功能。
  • 在 Linux 和 macOS 上,可以通过 命令行 传递 .yaya 文件。

img2yaya

作为编辑器的替代方案,您可以使用 @AaronErhardt 的出色 img2yaya 生成 .yaya 网格,以将图像转换为可玩 .yaya 文件!

命令行参数

程序接受一个数字作为正方形网格的大小,两个数字作为宽度和高度,或者 .yaya 网格文件的名称来加载自定义用户创建的网格。

yayagram # a random 5x5 grid
yayagram 10 # a random 10x10 grid
yayagram 5 15 # a random 5x15 grid
yayagram example.yaya # a custom grid

--help-h--version-V 也受支持。

测量工具

尤其是在较大的网格上,有时很难计算所有的单元格。为此,您可以使用测量工具。只需按 X 设置第一个点,然后再次按 X 设置第二个点。您将能够看到这两个点之间的距离,以及出现的测量单元格。测量单元格永远不会覆盖除空单元格及其本身之外的其他单元格类型。

如果您保存包含测量单元格的网格,它们的距离索引将不会保存,并且在加载该网格时,测量单元格将仅以绿色显示。

Maybed

蓝色的 "Maybed" 单元格类型可以通过中击放置在网格上,旨在使 "如果...会怎样" 的推理和尝试事物变得更容易,作为使用画线或填充单元格(可能令人困惑)的替代方案。它可以帮助您更好地想象理论情况。

大网格

yayagram 非常适合大网格,最多 99x99。以下是原因

  • 测量工具可以使计算许多单元格的错误率大大降低,并且更容易。
  • 有一个填充工具可以轻松地一次性填充多个单元格。
  • 指针周围的单元格被突出显示,这样您就不会失去对您关注的单元格行的跟踪。
  • 网格以较小的形式显示在左上角,这使得更容易看到整个图像。

其他提示

  • 尽量避免猜测并保持安全!猜测可能会在未来回来咬你。猜测是 不安全 的。
  • 别忘了勾掉您确定不会填充的单元格。这有助于排除可能性。
  • 如果您想要一个新的随机网格,请将网格右下角的缩小图标拖动到进度条旁边,到您想要的大小。
  • 小心不小心粘贴剪贴板中的数据。一些终端在按下鼠标按钮时粘贴。如果数据包含 'c' 这样的例子,网格将被清除,因为它被识别为按下了 C 键。当然,可以使用 A 键撤销清除,但这可能会令人困惑。同样适用于拖放到窗口中的项。在加载网格文件之前按 Enter 键。

示例

这里有一个简单的例子,帮助你掌握这个游戏。

2 3 2
2
3
2

这是我们需要的网格,我们需要用顶部和左侧的6个提示数字来填写这9个空字段。首先,让我们看看最顶部的3个提示:第一个是 2。这告诉我们,在下面的3个单元格的行中,恰好有2个单元格被填写。通过逻辑我们可以确定这意味着中间的单元格肯定被填写了

2 3 2
2
3
2

让我们看看它旁边的提示告诉我们什么(3)。这个提示意味着在下面的行中恰好有3个单元格被填写。因为我们这里只有3个单元格(因为它是一个3x3网格),我们可以安全地填写这3个单元格

2 3 2
2
3
2

顶部的下一个提示:2。同样,通过逻辑我们可以确定中间的单元格肯定被填写了

2 3 2
2
3
2

现在让我们继续看左侧的提示,从最上面的开始:2。这里也是一样,中间的单元格肯定至少被填写了,所以我们可以直接移动到下一个提示:3。这一行已经填写完毕,让我们继续下一行:2。再次,没有事情要做。这里有一个相当罕见的情况,我们有两个正确的解决方案

2 3 2
2
3
2

2 3 2
2
3
2

两个解决方案都满足要求。

希望这能帮助你稍微掌握这个游戏。现在你可以在3x3或5x5这样的小网格上尝试应用你所学的知识,只需将网格大小作为命令行参数传递给程序:yayagram 3yayagram 5 分别。

您也可以使用此文件example.yaya将上面的示例网格加载到游戏中。

依赖项

~0.6–1.3MB
~22K SLoC