Create a method to list the words available within a given hand

From TRCCompSci - AQA Computer Science
Revision as of 19:38, 14 November 2017 by M0hk4l3 (talk | contribs)
Jump to: navigation, search

Listing Words Method

The option "See available words with this hand." is added to the player's options in GetChoice().

private static string GetChoice() {
    string Choice;
    Console.WriteLine();
    Console.WriteLine("Either:");
    Console.WriteLine("     enter the word you would like to play OR");
    Console.WriteLine("     press 1 to display the letter values OR");
    Console.WriteLine("     press 4 to view the tile queue OR");
    Console.WriteLine("     press 7 to view your tiles again OR");
    Console.WriteLine("     press 0 to fill hand and stop the game.");
    Console.WriteLine("     press 3 to see available words with this hand.");
    Console.Write("> ");
    Choice = Console.ReadLine();
    Console.WriteLine();
    Choice = Choice.ToUpper();
    return Choice;
    }

The following code is added to the choices in Have Turn:

// ... Some stuff was here

else if (Choice == "3") {
    for (int i = 0; i < AllowedWords.Count; i++) {
        bool wordintiles = CheckWordIsInTiles(AllowedWords[i], PlayerTiles);

        if (wordintiles == true) {
            Console.WriteLine(AllowedWords[i]);
        }
    }
}

// ... Some stuff is here

This goes through the list of allowed words in alphabetical order and checks if the word can be made from the player's current tiles. If it can be, the word is outputted.

One problem is that you can make quite a lot of words from any given hand (even if it doesn't seem like it), so this outputs so many words that by the time it's done you can no longer see the top of the list.

Print in Alphabetical Order

// ... Some stuff was here

else if (Choice == "3") {
    String[] sortedAllowedWords = AllowedWords.ToArray();
    Array.Sort(sortedAllowedWords); // Sort allowed words

    for (int i = 0; i < sortedAllowedWords.Length; i++) {
        bool wordintiles = CheckWordIsInTiles(sortedAllowedWords[i], PlayerTiles);

        if (wordintiles == true) {
            Console.WriteLine(AllowedWords[i]);
        }
    }
}

// ... Some stuff is here

In this method we print all available words in chronological order. To do so, we cast the allowed words to an array (note it could be kept as a list, but seeing as we have no intention to change the size of it I felt turning it to an array would be far more appropriate). After that everything else is quite assimilair to the previous method.

Print by Word Length

// ... Some stuff was here

else if (Choice == "3") {
    
}

// ... Some stuff is here

Print by Word Score

// ... Some stuff was here

else if (Choice == "3") {
    
}

// ... Some stuff is here