私は数独ゲームを作ろうとしていますが、挿入された各番号に対して次の検証を収集しました。
- 番号は1から9の間でなければなりません。
- 番号は行内で一意である必要があります。
- 番号は列内で一意である必要があります。
- 番号はサブマトリックス内で一意である必要があります。
「番号は一意である必要があります...」というルールを繰り返しすぎているため、次のデザインを作成しました。
- グループには、ColumnGroup、LineGroup、およびSubMatrixGroupの3種類があります(これらはすべてGroupInterfaceを実装します)。
- GroupInterfaceにはメソッドが
public boolean validate(Integer number)
あります; - 各セルは3つのグループに関連付けられており、グループ間で一意である必要があります。いずれかのセルがtrueと評価されない場合、番号は許可されません。
- 各セルは監視可能であり、グループを監視者にし、1回のセル変更の試行に反応します。
そして、それはs*cksです。デザインのどこが悪いのかわかりません。私はそれで立ち往生しました。
どうすればそれを機能させることができるかについてのアイデアはありますか?