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

如何在Unity3D中实现数独游戏的核心逻辑

Unity3D 数独核心逻辑实现方案

1. 网格值二维数组存储

直接用C#二维数组int[,]对接你已有的网格生成逻辑即可,适配所有2x2/2x3/3x3规格关卡:

  • 全局定义存储数组和基础参数:
// 可在Inspector面板根据当前关卡规格赋值
public int subGridRows; // 单个子网格的行数:2x2关填2、2x3关填2、3x3关填3
public int subGridCols; // 单个子网格的列数:2x2关填2、2x3关填3、3x3关填3
private int totalGridRows;
private int totalGridCols;
private int[,] sudokuValueGrid;
  • 生成网格时初始化数组:
// 放在你的GenerateGrid逻辑末尾调用即可
void InitValueStorage()
{
    totalGridRows = subGridRows * subGridCols;
    totalGridCols = subGridRows * subGridCols;
    sudokuValueGrid = new int[totalGridRows, totalGridCols];
}
  • 每个单元格数值变化时同步更新数组:给每个可交互格子挂的脚本中,数值修改后调用sudokuValueGrid[当前行索引, 当前列索引] = 输入值即可,空值默认存0。

2. 行/列/子网格重复校验

直接封装统一校验函数,每次用户输入值时调用即可:

/// <summary>
/// 校验目标位置填入指定值是否合法
/// </summary>
/// <param name="targetRow">目标格子行索引</param>
/// <param name="targetCol">目标格子列索引</param>
/// <param name="inputValue">待填入的数值</param>
/// <returns>true=合法可填入,false=重复不合法</returns>
public bool CheckInputValid(int targetRow, int targetCol, int inputValue)
{
    // 空值直接过校验
    if (inputValue == 0) return true;

    // 行重复校验
    for (int col = 0; col < totalGridCols; col++)
    {
        if (sudokuValueGrid[targetRow, col] == inputValue && col != targetCol)
            return false;
    }

    // 列重复校验
    for (int row = 0; row < totalGridRows; row++)
    {
        if (sudokuValueGrid[row, targetCol] == inputValue && row != targetRow)
            return false;
    }

    // 子网格重复校验
    int subGridStartRow = (targetRow / subGridRows) * subGridRows;
    int subGridStartCol = (targetCol / subGridCols) * subGridCols;
    for (int row = subGridStartRow; row < subGridStartRow + subGridRows; row++)
    {
        for (int col = subGridStartCol; col < subGridStartCol + subGridCols; col++)
        {
            if (sudokuValueGrid[row, col] == inputValue && row != targetRow && col != targetCol)
                return false;
        }
    }

    return true;
}

调用说明

数独核心逻辑本身和平台无关,网上的2D版实现逻辑可以直接复用,Unity侧只需要做数据和UI的绑定:用户输入完成后先调用上述校验函数,返回false直接将输入框标红提示重复即可,返回true再更新存储数组的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:45:01