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();
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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})";
        }
Exemple #5
0
 /// <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");
 }
Exemple #6
0
 public static bool IsConsonant(Symbol symbol)
 {
     return(symbol.Value != null && symbol.Length == 1 && Consonants.Contains(char.ToUpper(symbol.Value[0])));
 }