填字游戏(横向和向下)存储?

时间:2013-02-28 01:33:44

标签: c# data-structures storage transpose crossword

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

3 个答案:

答案 0 :(得分:3)

保存方向(上/下/左/右)并开始坐标。

e.g。

 First
    e
    c
    o
    n
third

首先将其放在1,0;第二个将下降到5.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 ]
]

第一种保存方式为您提供了说话和了解其起点的优点,但并没有强制它遵守填字游戏格式(例如,很难知道哪些字符应该相同,等等)。第二种方式强制执行,但是很难弄明白。也许将两者结合起来?

答案 1 :(得分:1)

有趣的问题。为了好玩,我从这里开始:

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

祝你好运!

答案 2 :(得分:0)

我会保存一个起点和方向,然后将它们存储在一个对象中,即

{'starfish':{'direction':'horizontal','position':[0,4]}, 'ratchet':{'direction':'vertical', 'position':[0,8]}