public SyllableTimeGameVm() { OkCommand = new RelayCommand(Ok); ResetCommand = new RelayCommand(ResetGame); StartCommand = new RelayCommand(StartGame); SwitchAllConsonantsCommand = new RelayCommand(SwitchAllConsonants); SwitchAllVowelsCommand = new RelayCommand(SwitchAllVowels); char[] consonants = { 'Ц', 'К', 'Н', 'Г', 'Ш', 'Щ', 'З', 'Х', 'Ф', 'В', 'П', 'Р', 'Л', 'Д', 'Ж', 'Ч', 'С', 'М', 'Т', 'Б' }; foreach (var consonant in consonants) { Consonants.Add(new LetterVm { Value = consonant.ToString(), IsEnabled = true }); } char[] vowels = { 'У', 'Е', 'Ы', 'А', 'О', 'Э', 'Я', 'И', 'Ю' }; foreach (var vowel in vowels) { Vowels.Add(new LetterVm { Value = vowel.ToString(), IsEnabled = true }); } ResetGame(); }
/// <summary> /// Return a semi-speakable syllable, 2 or 3 letters. /// </summary> /// <param name="length">Length of a syllable.</param> /// <param name="capitalize">True to capitalize a syllable.</param> /// <returns>Returns random generated syllable.</returns> public string NextSyllable(int length = 2, bool capitalize = false) { const string Consonants = "bcdfghjklmnprstvwz"; const string Vowels = "aeiou"; const string ConsonantsAndVowels = Consonants + Vowels; var text = string.Empty; var chr = -1; for (var i = 0; i < length; i++) { if (i == 0) { chr = this.NextChar(ConsonantsAndVowels); } else if (Consonants.IndexOf((char)chr) == -1) { chr = this.NextChar(Consonants); } else { chr = this.NextChar(Vowels); } text += (char)chr; } if (capitalize) { text = text.Capitalize(); } return(text); }
public Phoneme GetPhoneme(string rawAlias) { // HACK: can't find how to escape ~ in yaml var alias = rawAlias ?? "~"; var phoneme = Phonemes.Find(n => n.Alias == alias); if (phoneme is null) { phoneme = new Consonant(alias); Phonemes.Add(phoneme); Consonants.Add(phoneme); } var clone = phoneme.Clone(); return(clone); }
private void BuildPatterns() { /// Phonemes must be ordered by string length, else there will be false /// positive results which ends as wrong recognition var vowels_for_pattern = Vowels.OrderByDescending(n => n.Length).ToList(); var consonants_for_pattern = Consonants.OrderByDescending(n => n.Length).ToList(); var rests_for_pattern = Rests.OrderByDescending(n => n.Length).ToList(); VowelPattern = $"{String.Join("|", vowels_for_pattern)}"; ConsonantPattern = $"{String.Join("|", consonants_for_pattern)}"; RestPattern = $"{String.Join("|", rests_for_pattern)}"; foreach (var shit in ". ? ( ) [ ] * \\".Split(' ')) { VowelPattern = VowelPattern.Replace(shit, "\\" + shit); ConsonantPattern = ConsonantPattern.Replace(shit, "\\" + shit); RestPattern = RestPattern.Replace(shit, "\\" + shit); } VowelPattern = $"({VowelPattern})"; ConsonantPattern = $"({ConsonantPattern})"; RestPattern = $"({RestPattern})"; }
/// <summary> /// ''' Get the gerund value of a verb. /// ''' </summary> /// ''' <param name="str">present tense verb to make gerund.</param> /// ''' <returns>String value of the gerund form of a verb.</returns> /// ''' <remarks></remarks> public static string getGerund(string str) { // str = str.ToLower if (str.ToLower().Substring(str.Length - 1, 1) == "e") { str = str.Substring(0, str.Length - 1); } else if (str.Length > 2) { string e1, e2; // get last letter e1 = str.ToLower().Substring(str.Length - 1, 1); // get second to last letter e2 = str.ToLower().Substring(str.Length - 2, 1); // if last letter is a consonant and the second to last is a vowel if (Vowels.Contains(e2) && Consonants.Contains(e1)) { // double last letter str += e1; } } return(str + "ing"); }
public static bool IsConsonant(Symbol symbol) { return(symbol.Value != null && symbol.Length == 1 && Consonants.Contains(char.ToUpper(symbol.Value[0]))); }