我正在尝试使用一个生成器来制作填字游戏,但是当需要将其拆分成不同的部分时,我卡住了。我有一个二维数组,用于存储像这样的填字游戏:
我该如何拆分这个二维数组,以便最终得到包含至少 2 个字母但不是整个单词的片段。这些字母必须水平或垂直相邻,但不能是对角线相邻的。例如,我可能会得到以下几个片段:
以下内容是无效的,因为字母不是水平或垂直相邻的。
然而,这可能会创建只包含一个字母或字母不相邻的片段。我不知道该如何解决这个问题,这就是为什么我来这里寻求帮助的原因。
int SIZE = 10; //This can be higher for bigger crosswords
Character[][] crossword = new Character[SIZE][SIZE];
然后我为这个纵横字谜添加了一些单词,例如最终得到以下数组(.=空方块):
..........
..........
..C...H...
..A...O...
..TIGER...
......S...
...DOVE...
..........
..........
..........
我该如何拆分这个二维数组,以便最终得到包含至少 2 个字母但不是整个单词的片段。这些字母必须水平或垂直相邻,但不能是对角线相邻的。例如,我可能会得到以下几个片段:
C TIG H ER DOV
A O S
E
以下内容是无效的,因为字母不是水平或垂直相邻的。
O
GE
S
我第一次尝试拆分它是按照以下方式进行的:
int chunksize = 2; //This should vary depending on how big the pieces should be
List<Character[][]> subArrays = new ArrayList<>();
for(int i = 0; i < SIZE; i += chunksize){
for(int j = 0; j < SIZE; j += chunksize){
Character[][] sub = new Character[chunksize][chunksize];
sub[0][0] = crossword[i][j];
sub[0][1] = crossword[i][j + 1];
sub[1][0] = crossword[i + 1][j];
sub[1][1] = crossword[i + 1][j + 1];
if(sub[0][0] != null || sub[0][1] != null || sub[1][0] != null || sub[1][1] != null){
subArrays.add(sub);
}
}
}
然而,这可能会创建只包含一个字母或字母不相邻的片段。我不知道该如何解决这个问题,这就是为什么我来这里寻求帮助的原因。