language-agnostic - 如何构建可解决的同一游戏关卡(又名。Chain-Shot,又名。Clickomania)

标签 language-agnostic

我正在构建一个游戏,例如 Same Game ,当我必须创建一个新关卡时,我刚刚运行了一个算法来用 N 种颜色填充板子,这个算法随机填充板子,但显然以这种方式生成的关卡并不是都有解决方案。

我必须做一个函数来解决这个问题,让一个完美的玩家永远玩这个游戏。

我最多有 6 种颜色,最少有 2 种颜色,并且电路板具有合理的尺寸 (14x12),但可以修改。

语言无关。

编辑:我不需要解决这个难题,我需要创建至少有一个解决方案的关卡。

最佳答案

我要补充的一种方法很少是最有效的,就是反向构建关卡。

不过,在这种情况下做起来相当简单。您只需从零开始,然后添加一些随机性的可点击组……我说一些随机性,因为您可能需要添加额外的块以确保填充所有列。

但是仔细想想,即使这样,您添加的两个可点击组也有可能相互接触并导致无法预料的崩溃,从而导致无法完成的游戏。所以这种方法不能保证一个可解的游戏。

您可以查看开源版本的源代码,例如 Same GNOME看看他们是怎么做的(如果他们真的这样做了!)

关于language-agnostic - 如何构建可解决的同一游戏关卡(又名。Chain-Shot,又名。Clickomania),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/976084/

相关文章:

algorithm - 是否有一种颜色混合算法可以像混合真实颜色一样工作?

language-agnostic - Smalltalk带来了哪些创新(例如MVC,xunit和Hotspot)?

algorithm - 最小生成树的基本问题

algorithm - 在最接近给定点的圆上找到点的最佳方法

algorithm - 检查二叉树是镜像还是对称

language-agnostic - 为您的项目命名 : does it matter?

language-agnostic - 排序一个poset?

language-agnostic - 为什么默认情况下语言不会引发整数溢出错误?

language-agnostic - 怎么能解释代码甚至效率低下呢? (理论)

c - "backspace"转义字符 '\b' : unexpected behavior?