制作填字游戏网格:如何初始化方块为白色且线索号为-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
相关产品推荐
相关产品推荐

