- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在尝试制作一个简单的小游戏来测试我的逻辑,这是一个简单的迷宫,它很丑,而且到目前为止很糟糕。
引擎工作得很好,考虑到迷宫已经存在(矩阵),它甚至可以愉快,但我无意绘制一堆 map ,这可能是在 400 (20x20) 个字段上设置值一个矩阵。不好笑。
然后我创建了一个函数来随机化它,为每个区域设置地板/墙壁,并且(我预计)并非每张 map 都可以获胜。然后我创建了另一个功能来检查 map 是否可玩(接收两个点,并检查它们之间是否存在有效路径,然后我只传递开始和结束。非常漂亮)并且它起作用了。
如果您没有注意到,这是一种非常愚蠢的创建随机迷宫的方法,原因如下:
1 - 它可能很容易出来(巨大的地板岛,或者一堆墙在一起,只形成一条非常明显的路径,创造一个愚蠢的(虽然有效)迷宫
2 - 这可能是有史以来创建完美随机迷宫的最快方法,但同时它也可能是最慢的方法,耗时……无限长。当我将网格设置为 30x30 或更大时(当某些东西没有溢出时),这种差异会更加明显
3 - 这很愚蠢,而且违反了逻辑本身。
在我的辩护中,我并没有计划从一开始就这样做,正如所描述的那样,一件事导致另一件事。
所以我开始考虑如何制作一个美丽的(充满路径、棘手且可获胜的)迷宫,然后我考虑制作带有预先设计入口的微型(比方说)5x5 block ,并将它们安装在一个它适合的方式,但这违背了我真实的随意的愿望,也违背了我不愿意手工绘制它的意愿。
然后我想到了一个函数来创建一个随机路径,运行一次到终点,然后运行几次到接近终点的某个地方,还有一些十字路口和其他东西,一些创造死胡同,这似乎更好对我来说,但我无法想象它会创造一个像样的迷宫。
You can check what I've done so far in this link.
注意:我无意用任何东西伤害任何人的电脑。
第一个打开它的人,请在这里评论说它是安全的。
- 完成(谢谢 Jonno_FTW)
如果您仍然不信任它,请使用虚拟机。
OBS:我知道这不是开发任何东西的最佳方式。我应该得到一个像样的游戏引擎,bla bla bla,这对我自己来说是一种挑战。
最佳答案
我已经完成了迷宫生成。您不想随机放置东西并进行验证。相反,您从一个起点生成它。
选择一个起点,沿随机方向移动。有一个随机概率选择一个新的方向。永远不要进入一个被占领的广场,如果你撞到一个当前的足迹就结束了。如果当前路径结束,请选择一个您已经访问过的方 block 并选择一个新方向并像您在第一个方 block 中所做的那样随机行走。重复,直到迷宫达到您想要的程度。
方向改变的概率应该是一个输入参数,因为它有很大的不同。请注意,如果您正在玩 3D 迷宫,垂直转弯的几率应该比水平移动的几率低很多。
关于c# - 创建(真实)随机迷宫的最佳逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134246/
假设您已经用 Python 编写了一个 m x n 矩阵。矩阵之外的值是不可能的。假设你是在矩阵中移动的东西(就像在迷宫中)并且你不能跨越边界。当您在迷宫中移动时,您会不断考虑您的选择,您可以走哪条路
我正在实现随机鼠标算法来探索迷宫。一段时间后,算法陷入无限循环。我调试了一下,它似乎在一条 channel 之间来回卡住了。 请看一下我的算法实现。 这是我的代码:方向是相对于机器人的。 public
我有一个用 java 编写的工作 ascii 迷宫解算器,使用 char 数组,它将正确路径的每个位置设置为前一个位置 + 1。我使用以下代码来从中获取正确路径,但是它仅适用于垂直运动。任何有关此事的
我有一个生成随机迷宫的程序。迷宫中会显示一个红点,并且迷宫中的每个方 block 都会闪烁红点。迷宫中的所有 block 都是 == 1,如果红点穿过该 block ,它就会递增++。红点朝最小数字的
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我创建了一个从文本文件上传的迷宫,该迷宫当前在运行时完全可见且功能正常。但是,我只想将播放的路线显示为可见,因此仅使起始位置和周围的墙壁/地板在开始时可见。有人知道该怎么做吗? 以下是 Board 类
起初我觉得这很容易,但是当我开始做的时候,我不知道如何继续下去了。我的想法是使用面板,然后绘制粗线,但是绘制墙壁并使我的角色不会超出这些墙壁的正确方法是什么?我无法想象我怎么可能做到这一点。这是一个迷
我从一个文件中得到了一个迷宫,我尝试使用一个程序编写一个类Exercise4,该程序将这样的迷宫文件读入二维 boolean 数组。然后在控制台上显示该数组,每一行一行。使用空白符号和 # 符号表示数
如何通过光栅图像数据找到非线性路径?例如,最低成本算法?起点和终点已知,并给出如下: 起点 = (0,0) 终点 = (12,-5) 例如,通过(灰度)光栅图像提取蜿蜒河流的近似路径。 # fake
在我的游戏中,玩家在迷宫中导航。我不知道如何与墙壁进行正确的碰撞检测。停留在某个区域很容易进行碰撞检测: if (x > rightWallX - playerWidth) x = rightWall
基本上,我一直在按照 Java 教程制作一个基本的迷宫游戏,其中我生成一个随机迷宫,并将其保存到文件中,然后使用 Jpanel 将其打印出来,但是在编译时我不断收到此错误。 Exception in
注意:这是 MSVC,C++17 问题。 免责声明:我知道有人尝试过,是的,我试图找到相关的 SO 答案。 我可以编码 UDL , 以实现将数字文字转换为 std::array,在编译时: /
我目前正在开发一个随机迷宫生成器,它将迷宫存储在一个名为 grid 的二维数组中。这将在稍后用于生成一个真正的 3D 迷宫,用户随后可以穿过该迷宫。 在做了一些研究之后,我尝试使用递归除法算法创建这个
题目地址:https://leetcode-cn.com/problems/the-maze-ii/ 题目描述 There is a ball in a maze with empty space
我正在尝试用 python 编写脚本来解决一种具有多个起点和多个终点的迷宫。正确的路径是从起点沿着直线前进。 例如一个有 4 条路径的迷宫: 起初我想使用左手/右手规则,但由于迷宫的特点,它没有太大意
我正在尝试在 opengl 中创建一个简单的 3D 迷宫。我最初的想法是有一个立方体网格,每个立方体的一些面是透明的(用于走廊)。但是,我在想出一种有效执行此操作的方法时遇到了一些麻烦。我不想为我的迷
我的 DFS 算法在解中缺少节点时遇到问题(检查图片)。每次我的算法遇到死胡同时都会发生这种情况:节点从堆栈中弹出并返回,直到找到可用的移动,并且再也不会重新包含在内。有没有一种简单的方法可以在不重新
所以我正在用 Java 构建 pacman 游戏来自学游戏编程。 我有一个基本的游戏窗口,其中绘制了吃 bean Sprite 和幽灵 Sprite ,吃 bean 使用箭头键移动,不会超出窗口的墙壁
我使用的代码只是取自一个示例,它确实为我的场景建了一堵墙: /** This loop builds a wall out of individual bricks. */ public vo
我正在从事一个包含这些条件的学校元素: 只使用 JS、HTML5 和 CSS 制作迷宫。 在 Angular 色周围制作 torch 效果。你不能穿墙照明。 我开始使用 Canvas 制作这款游戏
我是一名优秀的程序员,十分优秀!