所以我正在构建一个剪刀石头布机器人,我需要人们能够确保机器人不会“作弊”并在玩家选择投掷后做出选择。
通常,对于计算机查看,这是通过散列选项并可能提供盐,然后显示选项+盐来完成的。但我想要一些可以被人类“立即”验证的东西。如果我只是散列选择,人们会在操纵散列时哭泣。
所以我的想法是有一种“视觉散列算法”——一种人类可以轻松执行自己并验证的散列算法。
我现在的想法是拥有三个盒子:Rock、Paper 和 Scissors,然后在 RPS 盒子对面放置另外三个未标记的盒子 A、B 和 C。然后我使用缠结的线将 Rock 连接到其中一个,Paper 连接到另一个,C 连接到另一个。这些线是缠结在一起的,因此需要一些时间才能将线从框 B“向后”到例如 Scissors。
当计算机选择它的投掷时,它会“突出显示”对应的投掷框——也就是说,如果 Scissors 的纠缠线通向框 B,它会突出显示框 B。但它不会显示它是 Scissors。然后,人类有 3 秒钟的时间来选择投掷。希望 3 秒不足以让他们理清线并从盒子 B 回溯到 Scissors。
然后,当人类选择投掷时,计算机会显示 Scissors,并且还会突出显示从 Scissors 到 Box B 的纠结线,因此很明显 Scissors 一直都指向 Box B,它不可能只是作弊。
虽然这可行,但我认为......它有点丑陋,而且不雅。人类可以很容易地验证计算机没有作弊,但与此同时,它看起来很不寻常或奇怪,并且引入了太多的 UI 元素,以至于屏幕看起来可能显得杂乱或不可信。UI 元素/图形足迹越少越好。
现在有没有解决这个问题的解决方案?
- 展示了投掷的“散列”,以及需要时间(至少 3 秒)“撤消”的散列算法。
- 当 throw 显示出来时,应该可以轻松、直观地立即识别出散列算法是否有效执行,并且 throw 确实对应于散列
- 它使用尽可能少的 UI 元素并具有尽可能小的图形占用空间