gpt4 book ai didi

javascript - 除了 3 维数组之外,还有更好的方法来管理基于网格的游戏吗?

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

我正在设计一款在 8 x 8 网格上玩的游戏。网格上的每个“单元”都是一个房间。房间的每一侧(N、S、E、W)都可以有墙或门。

这意味着有墙的房间将与相邻的单元共享该墙。例如...

Grid and Walls Pic

如您所见,一堵墙正在影响两个细胞。

那么我该如何管理这些牢房,墙壁和门在哪里?到目前为止,这就是我所拥有的:

board[2][3][2] = 1;
board[2][4][0] = 1;

// [x][y][d] where direction is 0=N, 1=E, 2=S, 3=W
// Values: 0 = open (nothing there), 1 = wall, 2=door

这种方式有效吗?有没有更好的方法来达到相同的结果?每次我设置一堵墙,我都要做两次。这感觉效率很低。

谢谢!

最佳答案

您可以只存储北墙和西墙。对于南墙,检查向南的单元的北墙,对于东墙,检查向东的单元的西墙。

我一开始认为这对于南边和东边的单元格来说是一个问题,但如果你只是让你的墙阵列在南边和东边的方向上超出建筑阵列一个单元格,这就会起作用。 (感谢 OP 评论部分的 @Thomas 提供的提示)

这样,您仍然可以通过墙壁附近的单元轻松引用墙壁,但您只需将每面墙壁存储一次。

存储墙

假设北是0,西是1:

🔳 🔳🔳🔳🔳🔳🔳
🔳|🔳🔳🔳🔳🔳🔳
🔳 🔳🔳🔳🔳🔳🔳
🔳 🔳🔳🔳🔳🔳🔳
🔳 🔳🔳🔳🔳🔳🔳
🔳 🔳🔳🔳🔳🔳🔳

所以这堵墙是:

板[1][1][1]=1

检查墙壁:

假设玩家位于单元格 1,1 中。

  • 如果向北移动:检查单元格 1,1 是否有北墙。
  • 如果向南移动:检查单元格 1,2 是否有北墙。
  • 如果向西移动:检查单元格 1,1 是否有西墙。
  • 如果向东移动:检查单元格 2,1 是否有西墙。

关于javascript - 除了 3 维数组之外,还有更好的方法来管理基于网格的游戏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60767767/

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