2

例如,如果我创建一个填字游戏,我想将填写的单词存储在 9 x 9 的网格中。我考虑了一个二维数组,但只能存储 Across 单词而不是 Down 单词。即使每个单词都存储为一个对象(指示方向),我也不知道哪些单词与哪些单词相交。有人可以指出我正确的方向吗?

4

3 回答 3

4

保存方向(上/下/左/右)和起始坐标。

例如

 First
    e
    c
    o
    n
third

首先将放置在 1,0 左侧;第二个将下降到 5,0;第三个在左边 0,6。

您还可以将字符保存到二维数组中,这个特定的例子是:

[
  [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 ]
]

第一种保存方式为您提供了拥有单词并知道它们的起点的优势,但它不会强制它遵守填字游戏格式(例如,很难知道哪些字符应该相同,等等)。第二种方式强制执行这一点,但更难辨认出单词。也许将两者结合起来?

于 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 回答