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}"); }
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]); } }
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(); }