- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在制作一款类似 rogue 的游戏,我正在使用网格内的随机游走来形成“洞穴”系统。然而,我提出的随机游走会卡住——尤其是当游走者靠近网格边缘并且被“洞”包围时。
这不是我在我的项目中使用的确切代码,我无法从工作中访问我的代码。但是,我重新编写了一个我在家里使用的相同算法的示例。
基本上,我采用了一个 20x20 的整数网格并用 1 填充它。当我走路时,我每走一步都打 0 分。
void walk(int grid[][20]){
int x = rand() % 10 + 9;
int y = rand() % 10 + 9;
int walk_count;
for(walk_count = rand() % 1000 + 500; walk_count >= 0; walk_count--){
switch(rand() % 4){
case 0: if(grid[x][y - 1] == 1 && y - 1 >= 1){ y--; grid[x][y] = 0;} break;
case 1: if(grid[x][y + 1] == 1 && y + 1 < 20){ y++; grid[x][y] = 0;} break;
case 2: if(grid[x - 1][y] == 1 && x - 1 >= 1){ x--; grid[x][y] = 0;} break;
case 3: if(grid[x + 1][y] == 1 && x + 1 < 20){ x++; grid[x][y] = 0;} break;
default: break;
}
}
}
最佳答案
首先,解释一下代码中的不对称性。在情况 1 中,您有 && y + 1 < 20
.在情况 3 中,您有 && x + 1 >= 1
,我希望它是 && x + 1 < 20
.
我将把它记为转录错误/拼写错误,而不是问题的根源。据我了解,您的问题是您有一个随机行走者在地板上绘制(paint)并将自己涂在角落里。这种行为是预料之中的,不是吗?
问题在于您只是在随机游走,并期待一种比随机更智能的行为。如果你想避免把自己逼到墙角,就把它放到你的算法中。假设这些随机游走者希望能够到达玩家,只需检查每个方向(如果已填充)是否仍然有通往玩家的路径。然后从适用的方向中随机选择。
关于c - 如何防止随机游走算法得到 'stuck' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7950381/
Weblogic 10.3.6 管理控制台有两个与卡住线程时间配置相关的参数。 其中一个:Servers -> Some_Server -> Configuration -> Tuning 具有参数:
我正在使用 lift-json 将 JSON 字符串反序列化为 Scala 案例类。我正在解析的 JSON 有一个共同的结构:数据、成功和错误字段,其中数据包含有趣的位。我已经创建了一个 APIRes
我偶尔会做一名 VBA 程序员,只是为了好玩(不是我的工作)。 我在 MS Excel 2010 中有一系列 VBA 模块。无法弄清楚我做错了什么。这个例程奏效了,然后我改变了一些东西,它就不再起作用
给定以下 C 代码: struct list_element { struct list_element * next; }; typedef struct list_element list
我正在尝试创建一个类似乒乓球的游戏,并且我已经开始实现一些有关 Racket 运动的代码。桨本身的运动一切正常。然而,当我突然改变桨的方向时(更具体地说,当我立即从向上移动桨切换到向下移动桨时,反之亦
我是第一次在网站上手工编码(主要是打印设计师)。我试图只使用 HTML 和 CSS,因为我没有时间深入研究任何 Javascript,而且我真的很想了解我在使用什么。因此,我的主要内容设置在图像网格中
我正在制作一款类似 rogue 的游戏,我正在使用网格内的随机游走来形成“洞穴”系统。然而,我提出的随机游走会卡住——尤其是当游走者靠近网格边缘并且被“洞”包围时。 这不是我在我的项目中使用的确切代码
我在将我的分支推送到远程存储库时遇到问题。 Git 返回一个错误:错误:dst refspec refs/heads/XXX 匹配多个。 当我运行 git ls-remote 时,它只显示一个 XXX
我在终止集群中的命名空间时遇到问题,它在命名空间 JSON 中显示了许多参数。我点击了这个链接 https://medium.com/@craignewtondev/how-to-fix-kubern
首先,我为非描述性标题道歉。因为我不知道实际发生了什么,所以我不能让它更具体。 现在我的问题。我已经为 99 Haskell problems 的问题 23 实现了以下片段,应该随机选择n列表中的项目
尝试解决 eqb_trans 我陷入困境: Theorem eqb_trans : forall n m p, n =? m = true -> m =? p = true -> n =?
我曾经想在Grails中记录sql查询,所以我在数据源中添加了 logSql = true 并在log4j中 trace 'org.hibernate.type' debug 'org.hiberna
我在一个相互碰撞的世界中有几个球。世界各地都有静墙。 有时,它们最终会处于沿同一路径向上/向下或向左/向右移动的位置(垂直于墙壁的运动?) 有什么简单的方法可以检测到这一点,然后在任一方向上对其进行一
我有两个 MySQL 服务器,它们在同一组复制上运行。设置已通过以下步骤完成: 第一台服务器是有大量数据的生产服务器。 我将它设置为只读并转储数据,然后在后备 MySQL 服务器上恢复它 恢复后,我执
编辑:我意识到我的OP中的代码又长又难读。我用 4 行代码突出显示了这个问题。 char **t = {"Hello", "World"}; char **a = t; ++(a[0]); print
我试图将图像上传到服务器,但不知何故代码停在了 FileInputStream 行。不知道为什么,我不知道如何调试或检查它。这是我的源代码: public class CreateSetcardSt
规范:Ubuntu 13.04、Python 3.3.1 一般背景:Python 初学者; 特定问题的背景:我已经精疲力竭地试图解决这个问题,而且我知道,除了它对学习 Python 的指导值(valu
我创建了这个递归脚本,用于检查您所在的地址,然后检查另一个文件层次结构(如果您所在的文件夹也存在于该位置)。例如,假设您在 somerandomsite.com/example/folder/fold
我制作了视频来向您展示确切的问题(向上)。我有一个卡片动画。第一个动画是当您加载页面时,这些卡片会自动飞入。 .card{ animation: startup .5s ease-in-out .2s
简介: 我研究了 blocking TCP server 的 MSDN 示例和 blocking TCP client . 鉴于修改这些示例以创建简单的聊天应用程序,我想尝试一些简单的事情。 首先,我
我是一名优秀的程序员,十分优秀!