コード例 #1
0
ファイル: Shiritori.cs プロジェクト: Xwilarg/Sanara
        protected override string GetAnswer()
        {
            if (_lobby.MultiplayerType == MultiplayerType.VERSUS && _lastUserChoice == null)
            {
                return("Your first word must be しりとり (shiritori)");
            }
            ShiritoriPreloadResult word = null;
            var ending = GetWordEnding(_currWord);

            for (int i = 5; i >= 1; i--)
            {
                var validWords = _words.Where(x => x.Word.StartsWith(ending) && x.LearningLevels.Contains(i)).ToArray();
                if (validWords.Length == 0)
                {
                    continue;
                }
                word = validWords[StaticObjects.Random.Next(validWords.Length)];
                break;
            }
            if (word == null)
            {
                word = GetRandomValidWord(ending);
            }
            if (word == null)
            {
                return(null);
            }
            return($"Here's a word you could have said: {word.Word} ({word.WordEnglish}) - Meaning: {word.Meanings}");
        }
コード例 #2
0
ファイル: ShiritoriPreload.cs プロジェクト: TheIndra55/Sanara
 public ShiritoriPreload()
 {
     if (!File.Exists("Saves/Game/ShiritoriJapanese.txt"))
     {
         File.WriteAllBytes("Saves/Game/ShiritoriJapanese.txt", StaticObjects.HttpClient.GetByteArrayAsync("https://files.zirk.eu/Sanara/ShiritoriJapanese.txt").GetAwaiter().GetResult());
     }
     string[] lines = File.ReadAllLines("Saves/Game/ShiritoriJapanese.txt");
     _preload = new ShiritoriPreloadResult[lines.Length];
     for (int i = 0; i < lines.Length; i++)
     {
         string[] curr = lines[i].Split('$');
         string   word = curr[0];
         _preload[i] = new ShiritoriPreloadResult(word, LanguageModule.ToRomaji(word), curr[1]);
     }
 }
コード例 #3
0
ファイル: Shiritori.cs プロジェクト: Xwilarg/Sanara
 static Shiritori()
 {
     if (!File.Exists("Saves/Game/ShiritoriJapanese.txt"))
     {
         File.WriteAllBytes("Saves/Game/ShiritoriJapanese.txt", StaticObjects.HttpClient.GetByteArrayAsync("https://files.zirk.eu/Sanara/ShiritoriJapanese.txt").GetAwaiter().GetResult());
     }
     string[] lines = File.ReadAllLines("Saves/Game/ShiritoriJapanese.txt");
     _words = new();
     foreach (var l in lines)
     {
         string[] curr = l.Split('$');
         string   word = curr[0];
         _words.Add(new ShiritoriPreloadResult(word, Language.ToRomaji(word), curr[1]));
     }
     for (int i = 5; i >= 1; i--)
     {
         if (!File.Exists($"Saves/Game/Jlpt{i}Vocabulary.txt"))
         {
             File.WriteAllBytes($"Saves/Game/Jlpt{i}Vocabulary.txt", StaticObjects.HttpClient.GetByteArrayAsync("https://files.zirk.eu/Sanara/Jlpt" + i + "Vocabulary.txt").GetAwaiter().GetResult());
         }
         string[] jlptLines = File.ReadAllLines($"Saves/Game/Jlpt{i}Vocabulary.txt");
         foreach (var l in jlptLines)
         {
             string[] curr  = l.Split('$');
             string   word  = curr[0];
             var      value = _words.Find(x => x.Word == word);
             if (value == null)
             {
                 value = new ShiritoriPreloadResult(word, Language.ToRomaji(word), curr[1]);
                 _words.Add(value);
             }
             value.LearningLevels.Add(i);
         }
     }
     _words = _words.Where(x => !x.Word.EndsWith("ん") && x.Word.Length > 1).ToList();
 }