2010-03-07 63 views
0

實施「單詞解碼器」遊戲。這款遊戲會向玩家展示一系列混亂的單詞(最多20個單詞),並挑戰他/她嘗試解讀它們。每次顯示一個新單詞時,都會提供一個文本輸入供用戶寫入未加擾的單詞。 一旦玩家認爲該單詞已被正確解碼,他點擊「檢查答案」按鈕。如果玩家的回答是正確的,他的分數會增加1。如果他的回答不正確,他會得到通知,然後給他一個不同的詞。由javascript解釋的單詞?

我明白這個問題,但我不知道如何生成它,甚至不知道如何啓動它! 請幫忙嗎?

+0

有一件事要記住,許多單詞是anagrams,字母可以重新排列,使多個正確的單詞。要麼確保你的話沒有一個是一個字謎,或者爲每個字都保留一組正確的答案。 – kennebec 2010-03-07 20:14:29

回答

0

看看通過XHR加載字典。
這裏有很多可用的在線[http://www.mieliestronk.com/wordlist.html注意:它包含一些發誓的話,如果你打算這樣做是出於學術目的,因爲它的功課,你應該尋找一個「乾淨的」名單] ...

進行加擾的一句話:讓你的字符串轉換成字符數組,然後找到一個數組隨機播放功能[他們是簡單的寫,我寫了一個爲我實現BOGO排序的] ...

function shuffle(b) 
{ 
    var a = b.concat([]); //makes a copy of B, b won't be changed... 
    var final = []; 
    while(a.length != 0) 
    { 
     //0 -> a length-1 
     var targIndex = Math.round((a.length-1)*(Math.random())); 
     var value = a[targIndex] 
     a.remove(targIndex); 
     final.push(value); 
    } 
    return final; 
} 

當用戶完成輸入,只需將輸入與答案進行比較[不區分大小寫,忽略空格]正如評論中所述,也有可能使用anagrams,所以一定要檢查thos é...也許,你可以簡單地驗證字典中存在的單詞。

+0

明白了! ,謝謝你,你的想法有點像問題想法 謝謝我的代碼..這是不正確的,但至少我從它開始。如果你有任何想法如何修改它,這將是非常有幫助的 – Alaya 2010-03-08 14:43:09

1

首先,嘗試將問題分解成你需要的東西;認爲名詞和動詞。這只是用新術語重寫問題。你需要:

  • word:只是一個字符串,但它是一個你需要的名詞,所以列出它。
  • 詞典:一組單詞供選擇(在測試過程中,你不需要很多)
  • 顯示:這些成爲HTML元素,因爲你用JS工作
    • 炒字
    • 文本輸入
    • 提交按鈕,檢查答案
    • 得分
    • 「錯誤的答案」 通知
  • 打亂一個詞
  • 比較單詞:如何比較兩個單詞以查看一個單詞是否是另一個單詞的排列?做正確的,anagrams不是問題。
  • 檢查答案
  • 遞增得分
  • 通知不正確的答案的用戶
  • 提出一個新的炒字

任何與「爲」是一個動詞開始項目;其他的東西都是名詞。名詞成爲對象,動詞成爲方法/功能。

以上大部分是top-down的方法,與bottom-up(請注意,自上而下和自下而上不是一個任一或命題)相反。其他可能有助於不知道從哪裏開始的方法是test driven development或其分支behavior driven development。通過這些,你可以在代碼中定義程序應該做什麼,然後填寫詳細信息以便做到這一點。

關於比較單詞的提示:問題基本上定義了equivalence class - 如果兩個字符串是另一個字符串的置換,則兩個字符串是等價的。字符串的排列組合在一起形成該字符串的等價類;如果字符串是等價的,則兩個字符串處於相同的等價類中。正如鏈接文件指出的那樣,通過選擇類的單個元素作爲類的代表,可以很好地表示等價類。最後,您可以圍繞等價類定義:如果兩個字符串處於相同的等價類中,則它們是彼此的排列。

+0

:D thanx很多..我欣賞它..我跟着你的提示和解釋 上帝保佑你 – Alaya 2010-03-08 14:38:29

0

這是我從你們那裏得到的!我生成另一個代碼,,但它不是寫 我嘗試找出正確的解決方案..

作業1:任務3

<script type="text/javascript"> 

     function check() 
     { 


      var correctArray = new Array ("cat", "car"); 
      correctArray[0]= 0; 

      var wrong = new Array("tac", "rac"); 
      var score = 0; 

      if(correctArray().index.length == wrong().index.length){ 
       alert("This is correct:" , correctArray()); 

      }else{ 

       alert(" please try again "); 
      } 
       return correctArray++, score++; 
     } 

    </script> 


</head> 
<body> 


    <form> 
     <h3> Words Decoder </h3> 

     The scrambled word is: <input type="text" name="showlabel" value="" disabled="disabled" onclick='check().getElementById("wrong")' /> <br/><br/> 

     Please enter the unscrambeld word: <input type="text" name="userInput" value="" /> 

     <input type="submit" value="Check" onclick="check()" /><br/><br/> 
     The Score is : <input type="text" name="score" value="" disabled="disabled" /><br/><br/> 



    </form> 


</body> 

應該像例如:

顯示單詞「tac」。用戶輸入「貓」。答案是正確的,用戶的分數是1. 然後顯示「niol」一詞。用戶輸入「oinl」。答案是不正確的,用戶會收到警報,並且分數保持不變。 遊戲然後顯示下一個單詞等。最後一句話後,最終得分給予玩家。

+0

這是一個好的開始在家庭作業,但如果你有新的問題,它應該出現一個新的問題。 StackOverflow是一個問答網站,而不是論壇。答覆帖子應回答問題,澄清和進一步的信息應通過編輯原始問題(或答案)。澄清請求和其他不屬於問題或答案的其他說明應作爲評論(如本文所述)。當你有50個代表並且始終在你自己的問題中時,你可以在他人的問題中發表評論。 – outis 2010-03-08 20:26:06

+0

如果您尚未閱讀,請閱讀SO常見問題解答(http://stackoverflow.com/faq),然後稍微介紹一下SO的結構。您還應該閱讀http://catb.org/~esr/faqs/smart-questions.html,瞭解有效詢問問題的提示。 – outis 2010-03-08 20:28:35

+0

好的。感謝您的幫助。我會讀它們。 – Alaya 2010-03-08 20:56:15