复扫雷 Complexweeper
扫雷,但雷是复数;格子上的数字是它周围所有雷之和的模长。
翻开所有非雷格子就胜利。
无论胜利还是失败,游戏都会在结局告诉玩家标错和标对了哪些雷。
原生 Windows 程序,Zig + Win32,没有第三方库和运行依赖。
介绍:
游戏模式有2种(未来可能还会增加):圆复数模式,闵可夫斯基模式。
圆复数模式:
棋盘上有四种雷,分别是正实雷、负实雷、正虚雷和负虚雷,也就是+1、-1、+i和-i。
一个格子显示的数是周围所有雷之和的模长。
因为周围最多 8 格,所以只可能出现 24 种数字:
0, 1, 2, 3, 4, 5, 6, 7, 8,
√2, √5, √10, √13, √17, √26, √29, √34, √37,
2√2, 2√5, 3√2, 4√2, 5√2, 2√10。
正负雷数量相等时会互相抵消,这种1正1负的正负对我们称为“抵消对”;
0和空白不是一回事。空白格子表示周围完全没有雷;0表示周围完全为抵消对。
规则:当数字格子周围插上的旗帜数量等于真实雷数,且实虚比例符合真实比例或其倒数,则允许展开;可以利用这一点试探周围是否有抵消对。 谨记扫雷的胜利判定是翻开所有的格子,而不是插对全部的旗帜。
双曲复数模式(闵可夫斯基模式):
定义双曲虚数单位(类时单位)j²=1,形式模长(时空间隔)为 $S=\sqrt{a^2-b^2}$。本模式只是从闵可夫斯基时空度规得来的灵感,跟广义相对论没有多大关系。
棋盘上有四种雷,分别是正实雷(正类空雷)、负实雷(负类空雷)、正双曲虚雷(正类时雷)和负双曲虚雷(负类时雷),也就是+1、-1、+j和-j。
这种情况下会出现:
0, 1, √3, 2, √5, √7, 2√2, 3, 2√3, √15, 4, √21, 2√6, 5, 4√2, √35, 6, 4√3, 7, 8,
i, √3i, 2i, √5i, √7i, 2√2i, 3i, 2√3i, √15i, 4i, √21i, 2√6i, 5i, 4√2i, √35i, 6i, 4√3i, 7i, 8i。
由于出现了虚数,可以直接判断雷的实、j,所以展开判定更加严格,要求实部(类空部)、j部(类时部)的旗帜数量完全正确,不过正负仍然不做要求。
其他规则不变。
素材来源: 扫雷原始图像素材:Microsoft(原版扫雷作者 Robert Donner、Curt Johnson)。 新增图像素材(新增的显示值、四种旗帜、伪数码管的i、j单位、人脸按钮等):青月晓。 程序图标:青月晓。
本程序与 Microsoft 公司无隶属关系。
代码按GPL-3.0授权(见 LICENSE)。上表中"扫雷原始图像素材"的权利属于 Microsoft,
不在 GPL-3.0 的授权范围内。