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