我正在制作一个排序益智游戏。
游戏逻辑:
有 3 堆坚果,还有 1 堆空堆。
要获胜,玩家需要将所有相同颜色的坚果放在牛排上。
游戏规则: 只能移动每叠顶部的螺母。 一个坚果可以移动到另一个相同颜色的坚果之上 坚果可以在空堆中移动。
对于我的项目,我为每一堆分配了一个颜色的坚果。然后,我“随机”地将它们在所有堆栈之间洗牌。经过一些测试,12 个关卡中有 4 个关卡无法解决。根本没有可能的行动。 当前代码:
private void ShuffleChips(List<Column> columns)
{
List<ChipData> allChipData = new List<ChipData>();
foreach (Column column in columns)
{
for (int i = 0; i < column.Chips.Count - 1; i++)
{
allChipData.Add(column.Chips[i].Data);
}
}
allChipData = allChipData.OrderBy(_ => Random.value).ToList();
int dataIdx = 0;
foreach (Column column in columns)
{
for (int i = 0; i < column.Chips.Count - 1; i++)
{
column.Chips[i].Assign(allChipData[dataIdx++]);
}
}
}
我可以使用什么算法来确保关卡 100% 可解决?