using System.Collections.Generic;
public static void Main()
Reference scriptureRef = new Reference("1Corinthians", 13, 4, "-7");
Scripture scripture = new Scripture("Charity suffereth long, and is kind; charity envieth not; charity vaunteth not itself, is not puffed up, doth not behave itself unseemly, seeketh not her own, is not easily provoked, thinketh no evil; rejoiceth not in iniquity, but rejoiceth in the truth; beareth all things, believeth all things, hopeth all things, endureth all things.", scriptureRef);
while (!scripture.IsCompletelyHidden() && response != "quit")
Console.WriteLine(scripture.GetRenderedText());
Console.WriteLine("Press enter to continue or type 'quit' to finish: ");
response = Console.ReadLine();
private int _verseBeginning;
private string _verseEnd = "";
public Reference (string book, int chapter, int verseBegin)
_verseBeginning = verseBegin;
public Reference (string book, int chapter, int verseBegin, string verseEnd)
_verseBeginning = verseBegin;
public string GetReference () {
return $"{_book} {_chapter}:{_verseBeginning}{_verseEnd}";
private string _hiddenWord;
private bool _visible = true;
public Word (string word)
string hiddenWord = new string('_', _word.Length);
_hiddenWord = hiddenWord;
public string GetRenderedWord()
private string _reference;
private List<Word> _scripture = new List<Word>();
public Scripture (string scripture, Reference reference)
string[] words = scripture.Split(' ');
foreach (string word in words)
Word scriptureWord = new Word(word);
_scripture.Add(scriptureWord);
_reference = reference.GetReference();
Random random = new Random();
for (int i = 0; i < 4; i++)
int index = random.Next(_scripture.Count);
_scripture[index].Hide();
public string GetRenderedText ()
List<string> StringList = new List<string>();
foreach (Word word in _scripture)
StringList.Add(word.GetRenderedWord());
string mergedString = string.Join(" ", StringList);
return $"{_reference} {mergedString}";
public bool IsCompletelyHidden()
foreach (Word word in _scripture)