我正在创建一款本质上是在 iMessage 上寻找单词的游戏。 (有一个字母网格,通过在它们之间画一条线来组成单词)。
在我目前的工作中,我正在通过标准词典搜索以查找可能的单词。如果我知道如何将单词的字母与字母数组的指针进行比较,我几乎可以弄清楚如何在二维数组上执行此操作。我的信件保存在 wordhunt 中,这是一个获取输入文件数据的结构:
3 3 number of rows & columns in the strand grid
3 the length of the words to find
t l e a u n i s h the letters that populate the strand grid
这是结构:
typedef struct wordhunt
{
char** words;
char** letters;
int rows, cols;
int numWords;
int wordLen;
} wordhunt_t;
目前,要访问这些字母,我使用
wordhunt->letters[j]
,但由于类型差异,将其与单词 [i] 中的每个字母进行比较不起作用。我该如何解决这个问题?
我假设以某种方式将其存储在结构之外的新数组上可以使其工作,并且我可以使用输入文件中的整数来做到这一点,但我无法弄清楚如何将其转换为单词和字符等。
//assume word is pulled from the dictionary correctly, iterating through each letter in a loop as well
if (word[i] == wordhunt->letters[j]){
//tracks that each letter in the word is within the array of letters, used later
++validLetterCt
//break out of loop to look at next letter in word
break;
}
此代码迭代网格中的每个单元格,将单词的每个字母与网格中的字母进行比较,并在找到匹配时递增 validLetterCt。
for (int j = 0; j < wordhunt->rows; j++) {
for (int k = 0; k < wordhunt->cols; k++) {
for (int i = 0; i < wordLen; i++) {
if (word[i] == wordhunt->letters[j][k]) {
++validLetterCt;
break;
}
}
}
}