如何使用Javascript和XML DOM创建和加载游戏地图?

时间:2011-02-02 22:33:13

标签: javascript html xml dom

我正在为基于浏览器的游戏设计地图,我真的很难让地图在页面上正确加载。该游戏是一款简单的2D自上而下游戏。我希望使用存储在XML文件中的每个磁贴的数据在页面上的表中汇编地图。我被困在访问XML文件中的正确数据,然后将其输出到网页上。目前的XML文件类似于:

<map>
  <y_pos_1>
    <x_pos_1 type="grass" active="yes"/>
    <x_pos_2 type="grass" active="yes"/>
    <x_pos_3 type="grass" active="yes"/>
  </y_pos_1>
  <y_pos_2>
    <x_pos_1 type="grass" active="yes"/>
    <x_pos_2 type="grass" active="yes"/>
    <x_pos_3 type="grass" active="yes"/>
  </y_pos_2>
  <y_pos_3>
    <x_pos_1 type="grass" active="yes"/>
    <x_pos_2 type="grass" active="yes"/>
    <x_pos_3 type="grass" active="yes"/>
  </y_pos_3>
</map>

我无法弄清楚如何使用DOM / XML请求使用XML数据在表中设置X和Y数据。我需要它来设置页面上XML文件中的每一行,其中包含XML文件中的类详细信息,类型属性。我尝试使用while循环来设置它但我无法定义行,即y_pos元素。它应该打印出3x3表,但我自己没有XML知识。如果有人能够按照正确的方向推动我做这件事,我将不胜感激。谢谢,艾登。

我知道我可能不太清楚。我不太擅长解释。如果你有兴趣帮助我,我可以尝试更好地解释它。请告诉我。感谢。

编辑:我从未考虑过JSON。主要是因为我从来没有听说过,我不知道从哪里开始。

2 个答案:

答案 0 :(得分:0)

您的XML实际上并不是一种合理的格式 - 您需要表示一个2D数组。

以不同的方式表示2D数组,如何做到这一点表明:

<map>
  <y pos="1">
    <x pos="1" type="grass" active="yes"/>
    <x pos="2" type="grass" active="yes"/>
    <x pos="3" type="grass" active="yes"/>
  </y>
  <y pos="2">
    <x pos="1" type="grass" active="yes"/>
    <x pos="2" type="grass" active="yes"/>
    <x pos="3" type="grass" active="yes"/>
  </y>
  <y pos="3">
    <x pos="1" type="grass" active="yes"/>
    <x pos="2" type="grass" active="yes"/>
    <x pos="3" type="grass" active="yes"/>
  </y>
</map>

就我个人而言,我会以不同的格式编码这样的东西(JSON很好),它只会返回你需要缓存在播放器附近的地图的某个子集。想想像谷歌地图这样的事情。显然他们不会立即返回整个地球的地图,他们肯定不会返回地图中已弃用的部分。

将其加载到DOM片段中。你想要显示这个怎么样?你想把它放在一个html表中,或者你想用画布显示它,或者什么?地图是如何呈现的?显然,一种“草”并不足以让人知道什么html元素需要放在特定的位置。

答案 1 :(得分:0)

我建议用javascript动态制作它,你可以使用一个非常干净,易于编写的数据格式,如下所示:

var level=
["abdecdfdhidnsksd"
,"fsldmgkxnkngjdxj"
,"kdnfndxgndxngjen"
,"djfjdznfdjdhfjnf"
,"fdmnjdgjdnejndjf"
,"sfnddxbvunusefne"
,"aknasdnfcjefbjgd"
,"efgfdwthyjtftdsw"
,"nsfeufnuwndauauf"]


document.write(level[3][5])