mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-22 07:10:42 -08:00
149 lines
5.2 KiB
C#
149 lines
5.2 KiB
C#
using System.Text;
|
|
|
|
namespace Synonym
|
|
{
|
|
class Synonym
|
|
{
|
|
Random rand = new Random();
|
|
|
|
// Initialize list of corrent responses
|
|
private string[] Affirmations = { "Right", "Correct", "Fine", "Good!", "Check" };
|
|
|
|
// Initialize list of words and their synonyms
|
|
private string[][] Words =
|
|
{
|
|
new string[] {"first", "start", "beginning", "onset", "initial"},
|
|
new string[] {"similar", "alike", "same", "like", "resembling"},
|
|
new string[] {"model", "pattern", "prototype", "standard", "criterion"},
|
|
new string[] {"small", "insignificant", "little", "tiny", "minute"},
|
|
new string[] {"stop", "halt", "stay", "arrest", "check", "standstill"},
|
|
new string[] {"house", "dwelling", "residence", "domicile", "lodging", "habitation"},
|
|
new string[] {"pit", "hole", "hollow", "well", "gulf", "chasm", "abyss"},
|
|
new string[] {"push", "shove", "thrust", "prod", "poke", "butt", "press"},
|
|
new string[] {"red", "rouge", "scarlet", "crimson", "flame", "ruby"},
|
|
new string[] {"pain", "suffering", "hurt", "misery", "distress", "ache", "discomfort"}
|
|
};
|
|
|
|
private void DisplayIntro()
|
|
{
|
|
Console.WriteLine("");
|
|
Console.WriteLine("SYNONYM".PadLeft(23));
|
|
Console.WriteLine("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY");
|
|
Console.WriteLine("");
|
|
Console.WriteLine("A synonym of a word means another word in the English");
|
|
Console.WriteLine("language which has the same or very nearly the same meaning.");
|
|
Console.WriteLine("I choose a word -- you type a synonym.");
|
|
Console.WriteLine("If you can't think of a synonym, type the word 'help'");
|
|
Console.WriteLine("and I will tell you a synonym.");
|
|
Console.WriteLine("");
|
|
}
|
|
|
|
private void DisplayOutro()
|
|
{
|
|
Console.WriteLine("Synonym drill completed.");
|
|
}
|
|
|
|
private void RandomizeTheList()
|
|
{
|
|
// Randomize the list of Words to pick from
|
|
int[] Order = new int[Words.Length];
|
|
foreach (int i in Order)
|
|
{
|
|
Order[i] = rand.Next();
|
|
}
|
|
Array.Sort(Order, Words);
|
|
}
|
|
|
|
private string GetAnAffirmation()
|
|
{
|
|
return Affirmations[rand.Next(Affirmations.Length)];
|
|
}
|
|
|
|
private bool CheckTheResponse(string WordName, int WordIndex, string LineInput, string[] WordList)
|
|
{
|
|
if (LineInput.Equals("help"))
|
|
{
|
|
// Choose a random correct synonym response that doesn't equal the current word given
|
|
int HelpIndex = rand.Next(WordList.Length);
|
|
while (HelpIndex == WordIndex)
|
|
{
|
|
HelpIndex = rand.Next(0, WordList.Length);
|
|
}
|
|
Console.WriteLine("**** A synonym of {0} is {1}.", WordName, WordList[HelpIndex]);
|
|
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
// Check to see if the response is one of the listed synonyms and not the current word prompt
|
|
if (WordList.Contains(LineInput) && LineInput != WordName)
|
|
{
|
|
// Randomly display one of the five correct answer exclamations
|
|
Console.WriteLine(GetAnAffirmation());
|
|
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
// Incorrect response. Try again.
|
|
Console.WriteLine(" Try again.".PadLeft(5));
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
private string PromptForSynonym(string WordName)
|
|
{
|
|
Console.Write(" What is a synonym of {0}? ", WordName);
|
|
string LineInput = Console.ReadLine().Trim().ToLower();
|
|
|
|
return LineInput;
|
|
}
|
|
|
|
private void AskForSynonyms()
|
|
{
|
|
Random rand = new Random();
|
|
|
|
// Loop through the now randomized list of Words and display a random word from each to prompt for a synonym
|
|
foreach (string[] WordList in Words)
|
|
{
|
|
int WordIndex = rand.Next(WordList.Length); // random word position in the current list of words
|
|
string WordName = WordList[WordIndex]; // what is that actual word
|
|
bool Success = false;
|
|
|
|
while (!Success)
|
|
{
|
|
// Ask for the synonym of the current word
|
|
string LineInput = PromptForSynonym(WordName);
|
|
|
|
// Check the response
|
|
Success = CheckTheResponse(WordName, WordIndex, LineInput, WordList);
|
|
|
|
// Add extra line space for formatting
|
|
Console.WriteLine("");
|
|
}
|
|
}
|
|
}
|
|
|
|
public void PlayTheGame()
|
|
{
|
|
RandomizeTheList();
|
|
|
|
DisplayIntro();
|
|
|
|
AskForSynonyms();
|
|
|
|
DisplayOutro();
|
|
}
|
|
}
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
|
|
new Synonym().PlayTheGame();
|
|
|
|
}
|
|
}
|
|
} |