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

制作填字游戏网格:如何初始化方块为白色且线索号为-1

填字游戏Square类初始化实现方案

首先修正代码里的拼写错误:构造函数的pubic是笔误,应该改为public。

接下来提供两种符合需求的实现方式:

方式1:无参构造函数(直接满足默认初始化)

添加无参构造函数,直接将方块初始化为WHITE状态,线索号设为-1,同时保留带参数的构造函数支持自定义初始化,还加入黑色方块的校验逻辑:

public enum TColor { WHITE, BLACK };
public class Square
{
    public TColor Color { set; get; } // Either WHITE or BLACK
    public int Number { set; get; } // Either a clue number or -1 (Note: A BLACK square is always -1)
                                    
    // 默认初始化:WHITE状态,线索号-1
    public Square()
    {
        Color = TColor.WHITE;
        Number = -1;
    }

    // 自定义初始化构造函数
    public Square(TColor color, int number)
    {
        Color = color;
        // 确保黑色方块的Number始终为-1
        Number = color == TColor.BLACK ? -1 : number;
    }
}

方式2:带默认参数的构造函数

给现有构造函数的参数设置默认值,调用时不传参就自动初始化为目标状态,同样加入黑色方块的校验:

public enum TColor { WHITE, BLACK };
public class Square
{
    public TColor Color { set; get; } // Either WHITE or BLACK
    public int Number { set; get; } // Either a clue number or -1 (Note: A BLACK square is always -1)
                                    
    // 默认参数实现初始化,不传参时为WHITE和-1
    public Square(TColor color = TColor.WHITE, int number = -1)
    {
        Color = color;
        // 强制黑色方块的Number为-1
        Number = color == TColor.BLACK ? -1 : number;
    }
}

额外说明

  • 两种方式都遵循了代码注释里的规则:黑色方块的Number始终为-1,避免不符合规则的初始化。
  • 创建默认方块时,直接写var square = new Square();即可得到WHITE状态、线索号-1的方块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:00:59