From c6fe02ca87600ba91718a1f0a10a9aeac05377fa Mon Sep 17 00:00:00 2001 From: Ivan Bushchik Date: Thu, 13 Jan 2022 18:02:25 +0300 Subject: [PATCH] Localisation work --- roulette/Program.vb | 118 ++++++++++++++++++++++++++------------------ 1 file changed, 69 insertions(+), 49 deletions(-) diff --git a/roulette/Program.vb b/roulette/Program.vb index 40c8a57..f6a3632 100644 --- a/roulette/Program.vb +++ b/roulette/Program.vb @@ -16,8 +16,21 @@ Module Program 7, 28, 12, 35, 3, 26} 'ringRank0 нужен, чтобы было удобно подавать массив в поиск индекса - Private Const ReleaseTag As String = "2.0" - + Private Const ReleaseTag As String = "2.1" + + Dim LANG As Integer = -1 + Dim ReadOnly strings(,)= {{"История выпадений (последние 15): ", " Нажмите любую кнопку, чтобы начать игру! ", + "Выберите сложность: ", "1) Лёгкая - 500 фишек в начале", "2) Нормальная - 100 фишек в начале", + "3) Сложная - 10 фишек в начале", "4) Невозможная - 2 фишки в начале", + "Выбор некорректен!", "Игра началась!", "Делайте ставки:", "Укажите суммы ставок:", "Ставки не корректны. Пропуск.", + "Крутим колесо...", "Выпало: ", "У Вас {0} фишек.", "Продолжить игру? (Y/n):", "Неверный ввод, продолжаем игру.", + "У Вас закончились фишки, игра окончена.", "Нажмите любую клавишу, чтобы выйти в меню.", + "Рулетка / roulette", "Автор: Иван Бущик ", "Лицензия: MIT", "Сайт: ivabus.dev/roulette", + "Репозиторий: github.com/ivabus/roulette", "Версия: ", "Введите количество чисел для генерирования >>> ", + "Погрешность генератора случайных чисел ", "Игра Рулетка", "1) Начать игру", + "2) Ознакомиться с правилами", "3) О игре", "Дополнительно:", "4) Проверка генератора случайных чисел", + "0) Выйти из игры", "Ошибка!"}, + {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""}} Dim ReadOnly Logo() As String = { _ "#### ### # # # ##### ##### ##### #####", "# # # # # # # # # # # ", @@ -38,7 +51,7 @@ Module Program Sub DisplayHistory(history() As Integer) 'Эта функция не реализована в Game(), потому что это захламляло бы код Console.ForegroundColor = ConsoleColor.DarkBlue - Console.Write("История выпадений (последние 15): ") + Console.Write(strings(LANG,0)) For i = If(Ubound(history) > 14, Ubound(history) - 14, 0) To UBound(history) Console.ForegroundColor = Colors(Ring(1, getindex(RingRank0, history(i)))) Console.Write(history(i) & " ") @@ -77,7 +90,7 @@ Module Program Console.WriteLine(StrDup(Console.WindowWidth - 1, "#")) Sleep(0.04444) Next - Const entr = " Нажмите любую кнопку, чтобы начать игру! " + Dim entr = strings(LANG,1) Console.SetCursorPosition((Console.WindowWidth\2) - Len(entr)\2, Console.WindowHeight - (Console.WindowHeight()\2 - UBound(Logo) + 2)\4 - 3) Console.Write(StrDup(Len(entr) + 2, " ")) @@ -276,11 +289,11 @@ Module Program End Sub Sub Game() - Console.WriteLine("Выберите сложность: ") - Console.WriteLine("1) Лёгкая - 500 фишек в начале") - Console.WriteLine("2) Нормальная - 100 фишек в начале") - Console.WriteLine("3) Сложная - 10 фишек в начале") - Console.WriteLine("4) Невозможная - 2 фишки в начале") + Console.WriteLine(strings(LANG, 2)) + Console.WriteLine(strings(LANG, 3)) + Console.WriteLine(strings(LANG, 4)) + Console.WriteLine(strings(LANG, 5)) + Console.WriteLine(strings(LANG, 6)) Console.Write(">>> ") Dim choose As Integer = Console.ReadLine() Dim fish As Long @@ -294,9 +307,9 @@ Module Program Case 4 fish = 2 Case Else - Console.WriteLine("Выбор некорректен!") + Console.WriteLine(strings(LANG, 7)) End Select - Console.WriteLine("Игра началась!") + Console.WriteLine(strings(LANG,8)) Dim history As New List(Of Integer) Do while fish > 0 @@ -305,17 +318,17 @@ Module Program Console.Clear history.Add(generated(0)) - Console.WriteLine("Делайте ставки:") + Console.WriteLine(strings(LANG,9)) Console.Write(">>> ") Dim stav stav = UCase(Console.ReadLine()).Split.ToList() - Console.WriteLine("Укажите суммы ставок:") + Console.WriteLine(strings(LANG,10)) Console.Write(">>> ") Dim summ() As String summ = Console.ReadLine().Split For i = 0 To UBound(summ) If not IsNumeric(summ(i)) Then - Console.WriteLine("Ставки не корректны. Пропуск.") + Console.WriteLine(strings(LANG,11)) Continue Do End If Next @@ -324,17 +337,17 @@ Module Program summs.add(Int(summ(i))) Next If stav.Count <> summs.Count Or summs.ToArray.Sum() > fish Then - Console.WriteLine("Ставки не корректны. Пропуск.") + Console.WriteLine(strings(LANG, 11)) Continue Do End If For i = 0 To summs.Count - 1 If summs(i) < 0 Then - Console.WriteLine("Ставки не корректны. Пропуск.") + Console.WriteLine(strings(LANG, 11)) Continue Do End If Next - Console.WriteLine("Крутим колесо...") - Sleep(1) + Console.WriteLine(strings(LANG, 12)) + Sleep(0.5) Display(Int(generated(0))) Console.ForegroundColor = ConsoleColor.DarkBlue Dim indedx As Integer @@ -343,20 +356,14 @@ Module Program indedx = stav.IndexOf(generated(i)) If IsNumeric(generated(i)) fish += summ(indedx)*35 - 'stav.RemoveAt(indedx) - 'summs.RemoveAt(indedx) Else If _ generated(i) = "RED" Or generated(i) = "BLACK" Or generated(i) = "ODD" Or generated(i) = "EVEN" Or generated(i) = "FROM18" Or generated(i) = "TO18" Then fish += summ(indedx)*1 - 'stav.RemoveAt(indedx) - 'summs.RemoveAt(indedx) Else If _ generated(i) = "3L" Or generated(i) = "2L" Or generated(i) = "1L" Or generated(i) = "F12" Or generated(i) = "S12" Or generated(i) = "T12" Then fish += summ(indedx)*2 - 'stav.RemoveAt(indedx) - 'summs.RemoveAt(indedx) End If stav.RemoveAt(indedx) summs.RemoveAt(indedx) @@ -366,7 +373,7 @@ Module Program fish -= summs(i) Next Console.WriteLine() - Console.Write("Выпало: ") + Console.Write(strings(LANG,13)) For i = 0 To UBound(generated) Console.Write(generated(i) & " ") Next @@ -374,8 +381,8 @@ Module Program DisplayHistory(history.ToArray()) Console.ForegroundColor = ConsoleColor.DarkBlue Console.WriteLine() - Console.WriteLine("У Вас {0} фишек.", fish) - Console.WriteLine("Продолжить игру? (Y/n):") + Console.WriteLine(strings(LANG, 14), fish) + Console.WriteLine(strings(LANG, 15)) Console.Write(">>> ") Dim temp As String = Console.ReadLine() If temp = "n" or temp = "N" Then @@ -383,31 +390,31 @@ Module Program Else IF temp = "" or temp = "y" or temp = "Y" Console.Write("") Else - Console.WriteLine("Неверный ввод, продолжаем игру.") + Console.WriteLine(strings(LANG, 16)) End If Loop - Console.WriteLine("У Вас закончились фишки, игра окончена.") - Console.WriteLine("Нажмите любую клавишу, чтобы выйти в меню.") + Console.WriteLine(strings(LANG, 17)) + Console.WriteLine(strings(LANG, 18)) Console.ReadKey() End Sub Sub About() Console.Clear() - Console.WriteLine("Рулетка / roulette") - Console.WriteLine("Автор: Иван Бущик ") - Console.WriteLine("Лицензия: MIT") - Console.WriteLine("Сайт: bushchikivan.github.io/roulette") - Console.WriteLine("Репозиторий: github.com/BushchikIvan/roulette") - Console.WriteLine("Версия: " + ReleaseTag) - Console.WriteLine("Нажмите любую клавишу чтобы продолжить.") + Console.WriteLine(strings(LANG, 19)) + Console.WriteLine(strings(LANG, 20)) + Console.WriteLine(strings(LANG, 21)) + Console.WriteLine(strings(LANG, 22)) + Console.WriteLine(strings(LANG, 23)) + Console.WriteLine(strings(LANG, 24) + ReleaseTag) + Console.WriteLine(strings(LANG, 18)) Console.ReadKey() End Sub Sub TestGenerator() Randomize() - Dim count As Integer + Dim count As Long Dim rnd As New Random - Console.Write("Введите количество чисел для генерирования >>> ") + Console.Write(strings(LANG, 25)) Count = Console.ReadLine() Dim mass(count) As Double For i = 0 to Ubound(mass) @@ -416,7 +423,7 @@ Module Program Dim pogr As Double = 0 Dim sr As Double = mass.Sum() / Count pogr = Math.abs((sr - 0.5) / 0.5) * 100 - Console.WriteLine("Погрешность генератора случайных чисел " + pogr.ToString("0.#####") + "%") + Console.WriteLine(strings(LANG,26) + pogr.ToString("0.#####") + "%") End Sub Sub Main() @@ -425,14 +432,27 @@ Module Program Console.ForegroundColor = ConsoleColor.DarkBlue Randomize() Console.Clear() + If LANG = -1 Then + Console.WriteLine("Choose language / Выберете язык:") + Console.WriteLine("1) Russian / Русский") + Console.WriteLine("2) English / Английский") + Console.Write(">>> ") + LANG = Console.ReadLine() - 1 + if LANG < 0 or LANG > 1 Then + Console.WriteLine("Incorrect choose") + Exit Sub + End If + Console.Clear() + End If + Intro() - Console.WriteLine("Игра Рулетка") - Console.WriteLine("1) Начать игру") - Console.WriteLine("2) Ознакомиться с правилами") - Console.WriteLine("3) О игре") - Console.WriteLine("Дополнительно:") - Console.WriteLine("4) Проверка генератора случайных чисел") - Console.WriteLine("0) Выйти из игры") + Console.WriteLine(strings(LANG, 27)) + Console.WriteLine(strings(LANG, 28)) + Console.WriteLine(strings(LANG, 29)) + Console.WriteLine(strings(LANG, 30)) + Console.WriteLine(strings(LANG, 31)) + Console.WriteLine(strings(LANG, 32)) + Console.WriteLine(strings(LANG, 33)) Console.Write(">>> ") Dim input As Integer = Console.ReadLine Select Case input @@ -454,8 +474,8 @@ Module Program Exit Sub End Select Catch - Console.WriteLine("Ошибка!") + Console.WriteLine(strings(LANG, 34)) Exit Sub End Try End Sub -End Module +End Module \ No newline at end of file