算法c# unity棋类游戏

本文关键字:棋类游戏 unity 算法 | 更新日期: 2023-09-27 18:12:20

我正在使用Unity制作一款2D国际象棋游戏。

我正在写代码,告诉你是否可以移动到这个位置。

下面是我如何做的解释:

  • 有一个"墙纸"代表板
  • 在"墙纸"的每个正方形上,我放置了另一个具有未激活网格渲染器的正方形。
  • 当玩家选择一个方块时,如果在这个位置上有一个棋子,我激活所有棋子可以到达的方块的网格渲染器。
  • 所有的方块都存储在一个简单的数组中,我用它来确定可能的位置。

对于小兵,没有问题,它工作完美,但对于车或骑士,运动更复杂,我有问题做这个。

在这里我将和骑士们一起工作。

当它在板的中心,没有问题:http://prntscr.com/crcogo

但是当我在黑板的另一边时,你可以自己检查:http://prntscr.com/crcozu

代码如下:

case "White_Knight(Clone)_0":
                int Index_Knight_1 = Array.IndexOf(Board, Square_Selected);
                // Les cases en +
                if (Index_Knight_1 + 6 <= 64 )
                {
                    Board[Index_Knight_1 + 6].GetComponent<MeshRenderer>().enabled = true;
                }
                if (Index_Knight_1 + 10 <= 64)
                {
                    Board[Index_Knight_1 + 10].GetComponent<MeshRenderer>().enabled = true;
                }
                if (Index_Knight_1 + 15 <= 64)
                {
                    Board[Index_Knight_1 + 15].GetComponent<MeshRenderer>().enabled = true;
                }
                if (Index_Knight_1 + 17 <= 64)
                {
                    Board[Index_Knight_1 + 17].GetComponent<MeshRenderer>().enabled = true;
                }
                // les cases en -
                if (Index_Knight_1 - 6 >= 0)
                {
                    Board[Index_Knight_1 - 6].GetComponent<MeshRenderer>().enabled = true;
                }
                if (Index_Knight_1 - 10 >= 0)
                {
                    Board[Index_Knight_1 - 10].GetComponent<MeshRenderer>().enabled = true;
                }
                if (Index_Knight_1 - 15 >= 0)
                {
                    Board[Index_Knight_1 - 15].GetComponent<MeshRenderer>().enabled = true;
                }
                if (Index_Knight_1 - 17 >= 0)
                {
                    Board[Index_Knight_1 - 17].GetComponent<MeshRenderer>().enabled = true;
                }

我认为我没有使用正确的方法来做这件事,但我想自己编写脚本,而不需要这里或那里的代码片段。

在这种情况下,我想使用8的倍数,但我被困在这里:D

谁能给我一个建议?

谢谢!

我知道条件里不应该是64,但是63,刚刚看到了

算法c# unity棋类游戏

我同意Absinte的观点——我正在制作一款使用7x7棋盘的类似游戏。使用二维数组要容易得多。当我的一个棋子被选中时,我循环遍历它可能做出的移动列表——假设棋子在中心,这些是+/-偏移量。对于兵,x,y的偏移量是:0,+1;0,+2(仅第一次移动),+1,+1,-1,+1(最后两个是捕获)。

我将它们分别应用到当前的x,y位置,如果x和y都在0和6之间,那么我将显示它作为一个可能的位置,该部件可以移动到