我正在构建一个像Same Game这样的游戏,当我必须创建一个新的关卡时,我刚刚运行了一个算法来用N种颜色填充棋盘,这个算法随机填充棋盘,但显然这种方式产生的关卡并不都有解决方案。
我必须做一个函数来解决这个问题,这样游戏就可以永远由一个完美的玩家来玩了。
我有最大的6种颜色和最小的2和板有一个合理的大小(14x12),但可以修改。
语言是无关紧要的。
编辑:我不需要解决这个难题,我需要创建至少有一个解决方案的关卡。
发布于 2009-06-10 16:10:54
我刚刚在Ubuntu上查看了这个游戏的五个不同版本,我找到了一个答案,你可以从中掠夺!
Simon Tatham's Portable Puzzle Collection
我一直在玩他的五个游戏,但我更喜欢同一个GNOME。我刚刚加载了他的同一个游戏,它有一个选项,以确保创建自定义游戏时的溶解度。甚至有一个可定制的评分系统。这一切都非常先进。
上面的链接提供了可执行文件和源代码。
许可证是麻省理工学院的(这意味着你可以在商业游戏中免费使用它-但如果你能负担得起的话,请捐赠一些给他)
发布于 2009-06-10 15:02:50
有一种方法,我会补充说,很少是最有效的,就是反向构建关卡。
不过,在这种情况下,这是相当简单的。你只需要从零开始,然后添加一些随机性的可点击组...我说的是一些随机性,因为您可能需要添加额外的块,以确保所有列都被填充。
但考虑到这一点,即使是这样,你添加的两个可点击的群组也有可能相互接触,导致不可预见的崩溃,导致无法完成的游戏。因此,这种方法并不能保证博弈是可解的。
您可以查看Same GNOME等开源版本的源代码,看看他们是如何做到这一点的(如果他们真的做到了!)
发布于 2009-06-10 15:03:03
创建一个“已解决”的棋盘,然后使用N个有效但随机的向后移动来更改它。在添加每个向后移动之后,您可以运行向前移动(在temp board上)来验证可解决的难题。
https://stackoverflow.com/questions/976084
复制相似问题