2016-05-06 5 views
0

テキストファイルからランダムな単語が選択されたゲームを作成しています。この単語はスクランブルされ、ユーザーのために表示されます。ユーザーは元の単語を推測しようとする必要があります。それらが完了すると、[回答を確認]を押し、それらが正しいかどうかが表示されます。 C#で何かをやっているのはこれが初めてです(私はJavaに慣れています)。そのため、基本的な説明があれば十分に理解できます。スクランブルされた単語が表示されているときは、スクランブルされた単語全体が表示されず、それぞれの単語に対して約3文字と時々同じ3文字しか表示されません。私は自分のコードを見て、何が間違っているのかを見つけるのに苦労しました。私はいくつかの簡単なテストを行いました。ファイルが読み込まれており、origWords []配列には完全な単語が格納されています。これは私が問題がjumbleWords()メソッドの中にあると信じさせてくれます。私は何かすべての助けに感謝します。私の完全な配列が表示されていません

編集:私は問題の領域と思われるものにコードをカットします。

private string jumbleWords(String origWord) 
{ 
    // converts word to char array 
    char [] charArray = origWord.ToCharArray(); 
    // creates bool array with length of charArray 
    bool [] letterCheck = new bool [charArray.Length];  
    for (int i = 0; i < letterCheck.Length; i++) 
    { 
     letterCheck[i] = false; 
    } 

    Random letterAssign = new Random(); 
    string jumble = null; 

    for (int index = 0; index < charArray.Length; index++) //jumbling  of word 
    { 
     // picks random letter (number position of array)   
     int letterChosen = letterAssign.Next(charArray.Length); 
     if (letterCheck[letterChosen] == false) //check if letter has been used  
     { 
      jumble += charArray[letterChosen]; //adds letter to jumble string 
      // changes bool array position to true so it can't be used again   
      letterCheck[letterChosen] = true; 
     } 
    } 
    return jumble; 
} 
+0

[Fisher Yates Shuffle](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle)を参照し、それを使用して単語を突き止める。これはC#言語の問題ではなく、アルゴリズムの問​​題の選択肢が貧弱です。 –

+0

*しかし私は先に進み、プログラム全体を表示しました*、それは実際には逆効果です。 [最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve)を参照してください。 'jumbleWords'があなたの問題だと思ったら、その機能だけをテストし、それが問題であることを確認して、そのコードを投稿するMCVEを書いてください。大量のコードをダンプすることで、人々があなたを助けるのが難しくなります。 –

+0

私は問題の領域に切り分けました。ありがとうございました。 –

答えて

0

あなたは、特定の文字がが使用されていること、あなただけの次の位置に進み場合には、使用されているかどうかを確認します。代わりに、使用されていない手紙を手に入れるまで、もう一度やり直す必要があります。最も簡単な方法は、ループ変数を減らしてスロットを再試行することです。

また、単語を選択するロジックでは、単語が選択されたかどうかを確認するチェックがありません。毎回ファイル全体からランダムなものを選択するだけなので、そしてもう一度。

+0

ご連絡ありがとうございます。私はあなたの2番目の点を理解していますが、私はそれをどのようにclunkyコードの束なしで実装するか分からない。あなたの最初のポイントは私が抱えていた問題でしょうか?ありがとうございます –

+0

最初のポイントは、あなたは各単語のために2つの手紙を得る理由です。第2のポイントは、同じ言葉を何度も何度も繰り返してくる理由です。後者を修正するには、ファイルを一度読み込んで同じ手順を使用して、手紙を選んだ言葉を選んでください(最初の点で問題を修正したら、明らかに) – Tim

+0

いいえ。ありがとうございました。私はそれが動作する可能性がありますが、今私はこの部分に例外エラーが発生していると思う。 char [] charArray = origWord.ToCharArray(); –

関連する問題