javascript - JavaScript 中的探路者

标签 javascript html

我正在制作一种 javascript 游戏,我基本上有一堆由一个小脚本生成的图 block (divs)。我知道寻路的基础知识以及如何使用我的图 block 等。

但是,我遇到了一些麻烦,就是要以某种方式存储这些图 block ,以便我可以从我所在的图 block 中挑选出 8 个周围的图 block 。

基本上,假设我站在一 block 瓷砖上

(E-tiles,T-tile 我在,B-Tile 我想去)

E E E E E E E

E T E E E B

E E E E E E E

现在我想“找到”我周围的瓷砖,我需要关于如何做的帮助/提示,​​(也就是说,我需要关于如何存储瓷砖的提示,以便我以后可以“浏览”它们)。

我想毫无问题地找到这些;

(E-tiles, T-tile I'm on, B-Tile I want to go, Y-What I want to find)

Y Y Y E E E E

Y T Y E E B

Y Y Y E E E E

还有一些关于如何存储这些的奖励,所以我知道例如;我从选定的“Y”牌中挑选一张牌,然后遍历它们,最后选出让我更接近“B”的牌。

非常感谢任何提示/技巧/帮助!

最佳答案

您可以将您的世界存储为一个由图 block 组成的数组,索引代表 x/y 坐标。

var world = [];
world.height = 10;
world.width = 20;

for (var x = world.width; x--;) {
    for (var y = world.height; y--;) {
        if (!world[x]) world[x] = [];
        world[x][y] = new Tile();
    }
}

您的播放器也会有 x/y 坐标。

var player = {
    position: { x: 3, y: 5 }
};

如果您想知道任意位置是否是您玩家旁边的 8 个图 block 之一:

if (player.position.x == x && player.position.y == y) {

    // the tile at x,y is occupied by your player

} else if (Math.abs(player.position.x - x) <= 1 && 
           Math.abs(player.position.y - y) <= 1) {

    // the tile at x,y is next to your player

}

如果您想找到玩家位置旁边的 8 个板 block :

var adjacentTiles = [
    world[player.position.x - 1][player.position.y],
    world[player.position.x + 1][player.position.y],
    world[player.position.x][player.position.y - 1],
    world[player.position.x][player.position.y + 1],
    world[player.position.x - 1][player.position.y - 1],
    world[player.position.x + 1][player.position.y - 1],
    world[player.position.x - 1][player.position.y + 1],
    world[player.position.x + 1][player.position.y + 1]
];

http://jsfiddle.net/KBLX5/

关于javascript - JavaScript 中的探路者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20773631/

相关文章:

javascript - 如何使用 jquery 将类添加到元素的特定同级元素?

javascript - 调整窗口大小时 GUI 设计中断

html - 如何使具有相同特性的 css 选择器按照 HTML 标签的 parent 身份顺序应用?

javascript - 使用按钮更改颜色文本

javascript - 使用 appendChild 时 Canvas 不包含 TypeError JS 控制台的问题

javascript - Google Maps API v3 - 单击标记时如何显示 "alert"标记 ID

javascript - 如何让jquery字符串中的标 checkout 现在html中

javascript - 为什么 switch 语句没有给出输出?

javascript - Sharepoint 2013 控件显示模板 : how to know how many items we'll get

javascript - 如何将 CSS 应用于 Javascript 添加的元素