我很想在java中创建我的2d翻译的我的世界。我知道它可以做得很好,youtube上的orange451激发了我尝试做到这一点。我在地图上加载了来自文本文件的所有块,当游戏加载时,它会将文本文件中的所有块添加到ArrayList中。我创建了一个算法,用于计算游标中光标所在的块的索引,并添加了一个MouseListener,这样当我单击它时,它将用空格块替换块(基本上会破坏块)。为了替换ArrayList中的块,我使用了ArrayList set(index,obj)方法。从理论上讲,它应该正常工作,并且它在某种程度上是正确的。唯一的问题是它还会在几个街区之外的地图中创建一个黑色空间。这是非常令人沮丧的,特别是因为我到目前为止。附加信息:我需要一个替换ArrayList中对象的方法,或者更好的方法,因为我的碰撞检测方法也使用ArrayList来检测块位置。请帮我!我不能发布图像,但它将块设置为空气纹理,但在它附近创建了一个黑色方块(arraylist mabey中的间隙?)。因为要发布的代码太多,所以需要整个项目的源代码:Blockworld 2D Source
答案 0 :(得分:4)
你正在努力解决这个问题,因为知道其坐标的对象的ArrayList是表示这个2d结构的疯狂方式。这是无序的 - 您可以反转或随机播放您的ArrayList,它会绘制相同的。它具有O(N)更新,因为您必须先搜索ArrayList以获取相应坐标的对象,然后才能替换它。它可以有多个具有相同坐标的对象。它可能处于可见坐标根本没有相应对象的状态 - 这就是你在这里遇到的。
请帮助我
行。从字节的二维数组(数组,而不是ArrayList)开始。这允许你256种阻止,并允许你的玩家挖掘而不用你的new AirBlock(0, 0)
疯狂分配内存。要绘制世界,迭代可见坐标并将字节映射到Bitmap等。
另外:2d Minecraft已经存在。它被称为Terraria。