Haskell:程序生成级别而不会减慢速度

时间:2015-09-09 17:29:42

标签: list haskell random functional-programming

为了更好地学习Haskell,我试图基本上构建一个着名的独立游戏Super Hexagon的变体。

但是我对级别生成有问题:

现在,通过列出包含所有不同"手套的列表来完成关卡生成" (墙的模式,实现为[[Bool]],行数可变,每行包含TrueFalse;这些是关卡的基石。使用getStdGen()数字生成器,我能够创建无限的手套列表。

然而,在一次,我们只想渲染其中的一部分。为了跟踪是否已经传递过长手套,引入了第二个参数,其中包含在此之前所有手套的行数之和。 (例如,length (gauntletData currentRandomNumber) + snd $ randomGauntletList !! (n-1),其中randomGauntletList的类型为[(Gauntlet,Integer)]

问题在于如何在渲染函数和更新函数中使用此列表:take 30 $ dropWhile (\(_,distance) -> currentDistance > distance) randomGauntletList

dropWhile导致程序花费的时间越来越长,以返回当前的起点'列表,因此在+ - 30秒后减慢游戏速度。

我的深度:我有办法解决这个问题吗?

0 个答案:

没有答案