gpt4 book ai didi

java - 我的世界 2d 重制版 : Building and Destroying Blocks Issue

转载 作者:行者123 更新时间:2023-11-30 07:28:04 25 4
gpt4 key购买 nike

我很喜欢用 Java 创建我的 Minecraft 的 2d 重制版。我知道它可以做得很好,youtube 上的 orange451 启发了我尝试制作它。我从文本文件加载 map 上的所有 block ,当游戏加载时,它会将文本文件中的所有 block 添加到 ArrayList。我创建了一个算法来计算你的光标在游戏中所在的 block 的索引,并添加了一个 MouseListener 这样当我单击它时它会用空气 block 替换 block (基本上破坏 block )。为了替换 ArrayList 中的 block ,我使用了 ArrayList set(index, obj) 方法。从理论上讲,它应该可以正常工作,并且在某种程度上确实如此。唯一的问题是它还会在几个街区外的 map 中创建一个黑色空间。这非常令人沮丧,特别是因为我已经走了这么远。附加信息:我需要一种方法来替换 ArrayList 中的对象,或者更好的方法,因为我的碰撞检测方法还使用 ArrayList 来检测 block 位置。请帮我!我无法发布图像,但它将 block 设置为空气纹理,但在其附近创建了一个黑色方 block (arraylist mabey 中的间隙?)。由于要发布的代码太多,这里是整个项目的源代码:Blockworld 2D Source

最佳答案

您为此苦苦挣扎,因为知道其坐标的对象的 ArrayList 是表示此 2d 结构的疯狂方式。它是无序的——你可以反转或洗牌你的 ArrayList 并且它会绘制相同的。它具有 O(N) 更新,因为您必须在 ArrayList 中搜索适当坐标的对象才能替换它。它可以有多个具有相同坐标的对象。它可能处于可见坐标根本没有对应对象的状态 -- 这就是您在这里遇到的情况。

PLEASE HELP ME

好的。从字节的二维数组(数组,而不是 ArrayList)开始。这允许您使用 256 种方 block ,并且允许您的玩家挖掘而无需使用您的 new AirBlock(0, 0) 疯狂不断地分配内存。要绘制世界,请遍历可见坐标并将字节映射到位图等。

此外:2d Minecraft 已经存在。它叫做泰拉瑞亚。

关于java - 我的世界 2d 重制版 : Building and Destroying Blocks Issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9324692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com