You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#遍历二维数组上下左右元素,实现跳棋游戏结束条件求助

解决跳棋游戏结束条件的上下左右遍历逻辑

嘿,我来帮你搞定这个跳棋游戏里的上下左右遍历逻辑,进而完成游戏结束条件的判断~

第一步:实现上下左右四方向遍历方法

你已经有了8方向的相邻元素扫描方法,现在咱们针对上下左右四个方向做一个简化版的方法,核心是做好数组边界检查,避免索引越界:

public static IEnumerable<T> FourDirectionalAdjacentElements<T>(T[,] arr, int row, int column)
{
    int totalRows = arr.GetLength(0);
    int totalCols = arr.GetLength(1);

    // 检查上方元素(行索引减1,列不变)
    if (row - 1 >= 0)
        yield return arr[row - 1, column];

    // 检查下方元素(行索引加1,列不变)
    if (row + 1 < totalRows)
        yield return arr[row + 1, column];

    // 检查左侧元素(列索引减1,行不变)
    if (column - 1 >= 0)
        yield return arr[row, column - 1];

    // 检查右侧元素(列索引加1,行不变)
    if (column + 1 < totalCols)
        yield return arr[row, column + 1];
}

这个方法会逐个校验四个方向的索引是否在数组的合法范围内,只有合法的位置才会返回对应的元素,完全不用担心越界报错的问题。

第二步:结合游戏规则判断游戏结束

接下来咱们把这个遍历方法用到游戏结束条件的判断里。根据你的描述,场上的棋子是Ellipse,被移除的位置是Border,假设你的游戏结束条件是所有剩余棋子都没有可移动的空位,可以参考下面的判断逻辑:

public bool CheckIfGameOver(UIElement[,] gameBoard)
{
    int boardRows = gameBoard.GetLength(0);
    int boardCols = gameBoard.GetLength(1);

    // 遍历整个棋盘的每一个位置
    for (int row = 0; row < boardRows; row++)
    {
        for (int col = 0; col < boardCols; col++)
        {
            // 找到当前位置的未被移除的棋子
            if (gameBoard[row, col] is Ellipse currentChessPiece)
            {
                // 获取该棋子上下左右的相邻元素
                var adjacentPositions = FourDirectionalAdjacentElements(gameBoard, row, col);

                // 检查相邻位置中是否存在可移动的空位(这里以Border作为空位判断依据)
                if (adjacentPositions.Any(pos => pos is Border))
                {
                    // 只要有一个棋子还能移动,游戏就没结束
                    return false;
                }
            }
        }
    }

    // 所有棋子都没有可移动的位置,触发游戏结束
    return true;
}

小提示

如果你的跳棋规则支持跳跃吃子(比如跳过对方棋子落到空位),那可以在这个基础上扩展逻辑:比如先检查上下左右的相邻元素,如果是对方棋子,再检查该棋子外侧的位置是否是空位,这样就能判断是否可以进行跳跃操作啦。

内容的提问来源于stack exchange,提问作者user2963022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:18:28