2016-12-05 191 views
-1

我試圖創建一個詞搜索益智遊戲,要求用戶輸入他們認爲是在數組中的單詞,如果找到該單詞,則給用戶一分(總共10分,之後這是一封祝賀信息)。單詞搜索拼圖:如何搜索字母數組來查找單詞?

在這段代碼中,我有一個常規數組,但基於一些研究,我認爲二維數組可能會更好。你怎麼看?具體來說,我很感興趣,什麼樣的搜索算法,我應該考慮

#include <iostream> 
using namespace std; 

int main() { 
// your code goes here 

    cout<<"=================================================================================="<<endl; 
cout<<"||                    ||"<<endl; 
cout<<"||      Welcome to the ECE 114 Game Design!     ||"<<endl; 
cout<<"||                    ||"<<endl; 
cout<<"=================================================================================="<<endl; 
cout<<"This is a sample output"<<endl; 


//We want to ask the user to enter a word that they think the cross-word puzzle contains 
//if the puzzle contains that word, we tell the user they are correct and update their points 
//score by 1. Total of 10 points to gain, when the points score reaches 10 the user gets congratulatory message 

string myArray[] = { "A B C D E F G H 
         S P A D E T R Y 
         T I G O A L E A 
         T R A I N E A W 
         O A P B E A T N "}; 
//The first array above will just be a visual for the player to see 

//This second array is the one that I will use to search for words 

char wordBank[5][8] = [[ 'A', 'B ','C', 'D', 'E', 'F', 'G', 'H'], 
        ['S','P', 'A', 'D', 'E', 'T', 'R', 'Y'], 
        ['T', 'I', 'G', 'O', 'A', 'L', 'L', 'E', 'A'], 
        ['T', 'R','A', 'I', 'N', 'E', 'A', 'W'], 
        ['O', 'A', 'P', 'B', 'E', 'A', 'T', 'N']]; 

cout<<myArray<<endl; 





return 0; 
} 
+0

這是一個數組(或二維)字符數組比一個只包含一個字符串的字符串數組更好的地方。 –

+0

也許注意一下[如何向家庭作業問題尋求幫助](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions)。 – wally

+0

此代碼是否正在編譯?我懷疑數組聲明中的字母「H」後會出現警告或錯誤。 –

回答

0

我建議你添加一些額外的變量來使搜索更容易。例如,在垂直和水平方向創建文本字符串。

static const std::string puzzle_text[] = 
{ 
    "ABCDEFGH", 
    "SPADETRY", 
    "TIGOALEA", 
    "TRAINEAW", 
    "OAPBEATN" 
}; 

int main(void) 
{ 
    std::string vertical_texts[8]; 
    for (unsigned int column = 0; column < 8; ++column) 
    { 
    for (unsigned int row = 0; row < 5; ++row) 
    { 
     vertical_text[column] += puzzle_text[row].at(column); 
    } 
    } 
    return 0; 
} 

通過創建垂直字母串的std::string::find可以使用。每個謎題只需要創建一次垂直字符串。

OP的任務:反向搜索(請參見std::string方法)和對角字符串創建。

編輯1:搜索算法
這是一種算法,我有搜索這些難題使用方法:關鍵的詞
1.提取第一個字母。
2.搜索文字行中的字母。
3.如果找到字母,請檢查關鍵字的第二個字母的相鄰字母。
3.1。如果找到第二個字母,請繼續查找並搜索關鍵字的其餘字母。

這對我來說很好,特別是對於難以找到的單詞。

+0

謝謝。我想用二維數組來代替。我編輯了我的帖子以顯示我的意思。感謝您的解釋以及 –

+0

無論拼圖是2D字符還是1D字符串,算法都是一樣的。瞭解他們,然後調整他們。 –

+0

你會碰巧知道如何實現一個計時器?這只是爲了改善我的計劃,並有一些真正的風險 - 這個遊戲的驕傲。我希望用戶知道完成遊戲需要多長時間(獲得全部10個單詞正確) –