【发布时间】:2010-06-28 16:30:45
【问题描述】:
我一直在尝试制作一个简单的游戏来测试我的逻辑,它是一个简单的迷宫,它很丑陋,而且到目前为止很烂。
引擎工作得很好,考虑到迷宫已经存在(一个矩阵),它甚至可能很有趣,但我无意绘制一堆地图,这可能是在 400 (20x20) 字段上设置值一个矩阵。不好笑。
然后我创建了一个函数来随机化它,为每个字段设置地板/墙壁,并且(我预计)并非每张地图都是可赢的。然后我创建了另一个函数来检查地图是否可播放(接收两个点,并检查它们之间是否存在有效路径,然后我只传递开始和结束。非常漂亮)并且它起作用了。
如果您没有注意到,这是一种非常愚蠢的创建随机迷宫的方法,原因如下:
1 - 它可能很容易出现(巨大的地板小岛,或一堆墙壁在一起,只形成一条非常明显的路径,创建一个愚蠢的(虽然有效)迷宫
2 - 这可能是创建完美随机迷宫的最快方法,但同时它也可能是最慢的,只要...无限长。当我将网格设置为 30x30 或更大(当某些东西没有溢出时)
3 - 这很愚蠢,并且违反了逻辑本身。
在我的辩护中,我并没有从一开始就打算这样做,如上所述,一件事导致另一件事。
所以我开始考虑如何制作一个漂亮的(充满路径、棘手且可赢的)迷宫,然后我考虑制作带有预先设计的入口的微小(比方说)5x5 块并将它们安装在一起它适合的方式,但它会违背我的真正随机愿望,以及我不愿意用手画它。
然后我想了一个函数来创建一条随机路径,运行一次到最后,然后运行几次到接近尽头的某个地方,还有一些交叉路口之类的东西,一些创建死胡同,这似乎更好对我来说,但我无法想象它创造了一个像样的迷宫。
You can check what I've done so far in this link.
注意:我无意用任何东西伤害任何人的电脑。第一个打开它的人,请在此处评论说它是安全的。 - 完成(谢谢,Jonno_FTW )
如果您仍然不信任它,请使用虚拟机。
OBS:我知道这不是开发任何东西的最佳方式。我应该得到一个像样的游戏引擎,bla bla bla,这对我自己来说是一种挑战。
【问题讨论】:
-
问题是什么?另外,你有没有研究过maze generation algorithms?
-
我宁愿说,这不是特定于语言的问题...
-
虽然我不喜欢游戏设计,但让你在这样的原则上挑战自己的精神还是值得称赞的。拥有“黑匣子”很好,但如果你能经历这些场景而不是总是有一个“给定的”,那么建立在你的知识基础上的未来发展将带你走得更远......恕我直言......祝你好运。
-
我不怀疑有人会从某个随机来源下载可执行文件。
-
可执行文件是合法的。虽然,当您单击新地图时,它会从您离开上一张地图的位置开始,而不是从原来的左上角开始。计步器也不错。我还想要一张更大的地图,至少让它具有挑战性。
标签: c# language-agnostic random logic