我正在制作一种 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]
];
关于javascript - JavaScript 中的探路者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20773631/