2

クロスワードパズルを作成する場合、たとえば9x9のグリッドに入力された単語を保存したいと思います。2D配列を検討しましたが、Acrossワードのみを格納でき、Downワードは格納できません。各単語がオブジェクト(方向を示す)として格納されていても、どの単語がどの単語と交差するのかわかりません。誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

4

方向(上/下/左/右)を保存し、座標を開始します。

例えば

 First
    e
    c
    o
    n
third

最初は1,0に左に配置されます。2番目は5,0でダウンします。左から3番目0,6。

文字を2D配列に保存することもできます。この特定の例は、次のようになります。

[
  [null, 'f','i', 'r', 's', 't'],
  [null, null, null, null, 'e', null ],
  [null, null, null, null, 'c', null ],
  [null, null, null, null, 'o', null ],
  [null, null, null, null, 'n', null ],
  ['t', 'h', 'i', 'r', 'd', null ]
]

保存の最初の方法は、単語を持ち、その開始点を知っているという利点を提供しますが、クロスワード形式に準拠することを強制しません(たとえば、どの文字が同じであるかを知るのが難しいなど)。2番目の方法はそれを強制しますが、言葉を理解するのは難しいです。多分2つを組み合わせる?

于 2013-02-28T01:35:43.557 に答える
2

興味深い問題。楽しみのために、私はここから始めます:

class CrosswordItem
{
    int startX;
    int startY;
    string word;
}

あなたの問題で頑張ってください!

于 2013-02-28T01:47:14.797 に答える
1

開始点と方向を保存してから、オブジェクトに保存します。

{'starfish':{'direction':'horizontal','position':[0,4]}, 'ratchet':{'direction':'vertical', 'position':[0,8]}
于 2013-02-28T01:51:37.723 に答える