问题标签 [gridworld]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
436 浏览

java - 如何使用递归函数使 Bug 对象移动五次?

我正在从 Allen B. Downey 所写的书“Think Java”中学习 Java。在第 5 章中,将介绍一个概念,GridWorld即您基本上有一个 10x10 的网格,其中包含“演员”,例如 Bug、Rocks 和网格本身,它们代表对象。安装代码后,GridWorldGUI 将显示一个包含两个参与者的网格,一个“bug”和一个“rock”。

在此处输入图像描述

通过单击演员,有一个带有方法的下拉菜单,可以在该演员上调用。

在此处输入图像描述

其中一项任务是编写一个方法,通过使用Math.random();randomBugBug 作为参数并将 Bug 的方向设置为 0、90、180 或 270 之一的方法,即北、东、南、西,概率相等,如果可以的话,然后移动错误。

下一个任务是修改randomBug为取整数n并重复n次数。

这是我的代码:

我正在尝试使用递归函数重复该过程五次,因此 Bug 应该移动五次,除非它到达网格的边缘。有时会出现的问题是,Bug 移动了 5 次以上,它做了 6 或 10 步,尽管我通过使用 condition 来限制它n <= 0

我应该在代码中更改或添加什么以便完成分配?

0 投票
0 回答
67 浏览

java - Java Gridworld 如何调用标记类?(标记界面)

我怎么能调用一个标记类?我需要实现 Spider 类,这样如果它发现 Babybug 就会被吃掉。

// 标记接口

// 类 BabyBug

// Spider 类是 Insect 的子类,Insect 是 Critter 的子类

}

但问题是蜘蛛没有吃掉婴儿虫,如果我放:

我收到一些错误,例如:此演员未包含在网格中。我该如何解决?谢谢!

0 投票
1 回答
135 浏览

java - 来自窗口交互的 Java JOptionPane 视觉工件

我正在尝试使用 JSpinner 和 JOptionPane 为一个小项目创建一个简单的菜单。我创建了我想要的输出,但是当我与窗口交互甚至将鼠标悬停在框中的按钮上时,它会一遍又一遍地创建视觉伪影(见下图):

鼠标悬停前的 JOptionPane

鼠标悬停后的 JOptionPane

我做了一些研究,并认为这可能是由于 JOptionPane 不是线程安全的,但无法正常工作。

总的来说,我的具体问题是如何防止 Java 在我的 JOptionPane 窗口上重新绘制这些视觉工件?

作为参考,请参阅我用来显示此菜单的方法:

我在 BlueJ 上运行此代码并使用 Windows 10 Pro。

如果这是一个初学者问题,请提前感谢您并道歉。我对编程还是很陌生。

编辑:更新代码以提供完整的问题来源,但它消失了。我会密切关注它,看看错误的根源首先发生在哪里。

0 投票
1 回答
64 浏览

coordinates - Netlogo - 使补丁更小以清楚地显示聚集在一个小区域中的所有代理的位置

我正在为一个城市的交付系统建模。交付分支代理的位置基于真实世界坐标。如何制作一个更小的 netlogo 世界,可以清楚地显示定义区域中的所有代理(min-x:113.783131,max-x:114.42618;min-y:22.476584,max-y:22.809712)?当前的 netlogo 世界太大了,无法让每个代理都可见(它们都聚集在一个小点上)

0 投票
1 回答
142 浏览

machine-learning - 使用强化学习教机器人在到达终端状态之前收集网格世界中的物品

我的问题如下。我有一个简单的网格世界:

https://i.imgur.com/2QyetBg.png

代理从标有 START 的初始状态开始,目标是达到标有 END 的终端状态。但是,代理必须避开标有 X 的障碍,并且在到达 END 状态之前它必须收集所有标有 F 的项目。我也使用 Q-Learning 和 Sarsa 来实现它,并且代理达到 END 状态并避免障碍(X 个状态)。所以这部分工作得很好。

我的问题是,如何让代理在达到 END 状态之前收集所有项目(F 状态)?通过使用 Q-Learning 或 Sarsa,它可以避开障碍,达到 END 状态,但不会收集所有项目。通常访问一个 F 状态并在代理前往 END 状态之后。

谢谢您的帮助!

0 投票
1 回答
94 浏览

c# - 程序世界生成无法处理大地图

所以,我正在使用 c# 在 windows 10 上的 unity 2019 中制作一个类似泰拉瑞亚的游戏,它具有程序生成的 tilemaps,并且我将此脚本附加到网格:

我在偶然的噪音中从好人那里慷慨地借用和修改了它,我制作了一个空的游戏对象,我将此脚本附加到:

我为每个游戏对象附加了不同颜色的方形精灵,并将它们保存为预制件。一旦我有了那个预制件,我就把它附加到fractalLayers在我之前的脚本中列出来生成矿石。尽管它在较小的规模上运行良好,但我无法在更大的规模上运行它。而且由于没有万能药可以让代码运行得更快(除了重构,我不知道该怎么做),而且我可能已经让我的部分代码更有效率,因为我是一个新手,我会真的很喜欢专业人士对如何让我的代码运行得更好的一些见解。我知道我没有解释我的项目的所有内容,但它实际上只是一个简单的项目,这些是唯一的脚本和独特的部分,你可以推断我做了什么并填补空白。任何帮助表示赞赏。如果你能给我额外的推动以及有关该主题的一些信息,我很乐意推荐一些视频以及你的见解来指导我完成这个过程,因为我更像是一个视觉学习者。谢谢!=)

(作为参考,我花了大约 4 分钟来构建它,这里显示的设置。)

0 投票
1 回答
124 浏览

java - 在 Gridworld 中创建具有位置的新 Actor

我想用一个“汽车”演员和一个修复生成位置创建一个 Gridworld:

如何为“汽车”定义特定的生成位置?例如,我希望 Actors 在网格的左上角生成,我创建了一个 Location 对象“loc1”以与 Grid.put() 一起使用,但出现错误:java: non-static method put(gridworld.framework .grid.Location,E) 不能从静态上下文中引用

我正在使用 openjdk-15.0.1

0 投票
1 回答
85 浏览

python - Python网格世界不正确深度优先搜索算法实现

我正在尝试编写一个深度优先搜索算法,该算法将找到代理(黑色立方体所在)到右侧路径底部出口的路径形式。但是我编写的算法会作为找到的路径的一部分在自身上循环。如何实现不这样做的 DFS 算法?

关于我做错了什么的任何想法?

任何帮助非常感谢,请。

谢谢 世界是什么样子的:

世界/迷宫。

深度优先搜索路径规划的结果:

路径规划的输出/结果

我的代理类代码:

0 投票
0 回答
75 浏览

python - 在为强化学习设计网格世界时如何表示状态空间

我想设计一个 5x5 的网格世界,其中代理可以移动以尝试使用 RL 算法。直观地说,我将通过元组 (x,y) 来描述状态,即在 python 中使用列表 [x,y] 或 numpy 数组。但是,在实现大多数算法时,这会变得很麻烦。例如,如果我想要一个带有条目 Q(s,a) 的 Q 值矩阵,我不能只使用行索引对应于状态的 numpy 矩阵,而是必须使用更复杂的东西。

我的问题是仅枚举所有状态(即 1、2、...、25)而不是使用 (x,y) 是否是标准的,或者是否有另一种巧妙的方式来表示状态,从而使处理它们也变得容易。