Code cleanup

This commit is contained in:
Ivan Bushchik 2021-10-26 18:24:37 +03:00
parent c325db2fd7
commit 1f84830c17

View file

@ -1,41 +1,49 @@
Imports System
Module Program
'https://github.com/BushchikIvan/roulette
Dim ring(,) As Integer = {{0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 24, 16, 33, 1, 20, 14, 31, 9, 22,18, 29, 7, 28, 12, 35, 3, 26},
{0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2}}
Dim colors() As ConsoleColor = {ConsoleColor.White, ConsoleColor.Red, ConsoleColor.Black}
Dim ringRank0() As Integer = {0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 24, 16, 33, 1, 20, 14, 31, 9, 22,18, 29, 7, 28, 12, 35, 3, 26}
Dim ReadOnly _
ring(,) As Integer =
{{0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 24, 16, 33, 1, 20, 14, 31, 9, 22, 18, 29,
7, 28, 12, 35, 3, 26},
{0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2}}
Dim ReadOnly colors() As ConsoleColor = {ConsoleColor.White, ConsoleColor.Red, ConsoleColor.Black}
Dim ReadOnly _
ringRank0() As Integer =
{0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 24, 16, 33, 1, 20, 14, 31, 9, 22, 18, 29,
7, 28, 12, 35, 3, 26}
'ringRank0 нужен, чтобы было удобно подавать массив в поиск индекса
Dim logo() As String = {
"#### ### # # # ##### ##### ##### #####",
"# # # # # # # # # # # ",
"# # # # # # # # # # # ",
"# # # # # # # # # # # ",
"#### # # # # # #### # # #### ",
"## # # # # # # # # # ",
"# # # # # # # # # # # ",
"# # # # # # # # # # # ",
"# # ### ### ##### ##### # # ##### "}
Dim ReadOnly logo() As String = { _
"#### ### # # # ##### ##### ##### #####",
"# # # # # # # # # # # ",
"# # # # # # # # # # # ",
"# # # # # # # # # # # ",
"#### # # # # # #### # # #### ",
"## # # # # # # # # # ",
"# # # # # # # # # # # ",
"# # # # # # # # # # # ",
"# # ### ### ##### ##### # # ##### "}
Function GetIndex(mass() As Integer, obj As Integer) As Integer 'Функция получает индекс объекта в массиве
For i = 0 To UBound(mass)
If mass(i) = obj Then Return i
Next
Return -1
Return - 1
End Function
Sub displayHistory(history() As Integer)
Console.ForegroundColor = ConsoleColor.DarkBlue
Console.Write("История выпадений (последние 15): ")
For i = If(Ubound(history) > 14, Ubound(history) - 14, 0) To UBound(history)
Console.ForegroundColor = colors(ring(1,getindex(ringRank0, history(i))))
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) & " ")
Next
Console.ForegroundColor = ConsoleColor.DarkBlue
End Sub
Function RemoveAt(Of T)(ByVal arr As T(), ByVal index As Integer) As T()
Function RemoveAt (Of T)(arr As T(), index As Integer) As T()
Dim uBound = arr.GetUpperBound(0)
Dim lBound = arr.GetLowerBound(0)
Dim arrLen = uBound - lBound
@ -44,66 +52,70 @@ Module Program
Array.Copy(arr, index + 1, outArr, index, uBound - index)
Return outArr
End Function
Sub sleep(d As Single)
Dim t As Single = Timer
Do while Timer - t < d
Loop
End Sub
Sub intro()
Console.ForegroundColor = ConsoleColor.DarkBlue
Console.SetCursorPosition(Console.WindowWidth \ 2 - Len(logo(0))\2,Console.WindowHeight()\2 - UBound(logo) + 3)
Console.SetCursorPosition(Console.WindowWidth\2 - Len(logo(0))\2, Console.WindowHeight()\2 - UBound(logo) + 3)
For i = 0 To UBound(logo)
Console.WriteLine(logo(i))
Console.SetCursorPosition(Console.WindowWidth \ 2 - Len(logo(0))\2, Console.GetCursorPosition().Item2)
Console.SetCursorPosition(Console.WindowWidth\2 - Len(logo(0))\2, Console.GetCursorPosition().Item2)
sleep(0.04444)
Next
'sleep(5)
Console.SetCursorPosition(0,0)
For i = 0 To (Console.WindowHeight()\2 - UBound(logo) + 2) \ 2
Console.WriteLine(StrDup(Console.WindowWidth-1, "#"))
Console.SetCursorPosition(0, 0)
For i = 0 To (Console.WindowHeight()\2 - UBound(logo) + 2)\2
Console.WriteLine(StrDup(Console.WindowWidth - 1, "#"))
sleep(0.04444)
Next
For i = 0 To Console.WindowHeight - (Console.WindowHeight()\2 - UBound(logo) + 2) - 3
Console.Write(StrDup((Console.WindowWidth \ 2 - Len(logo(0)) \ 2) \ 2, "#"))
Console.SetCursorPosition(Console.WindowWidth - (Console.WindowWidth \ 2 - Len(logo(0)) \ 2) \ 2, (Console.GetCursorPosition().Item2))
Console.WriteLine(StrDup((Console.WindowWidth \ 2 - Len(logo(0)) \ 2) \ 2 - 1, "#"))
Console.Write(StrDup((Console.WindowWidth\2 - Len(logo(0))\2)\2, "#"))
Console.SetCursorPosition(Console.WindowWidth - (Console.WindowWidth\2 - Len(logo(0))\2)\2,
(Console.GetCursorPosition().Item2))
Console.WriteLine(StrDup((Console.WindowWidth\2 - Len(logo(0))\2)\2 - 1, "#"))
sleep(0.04444)
Next
For i = 0 To (Console.WindowHeight()\2 - UBound(logo) + 2) \ 2 - 1
Console.WriteLine(StrDup(Console.WindowWidth-1, "#"))
For i = 0 To (Console.WindowHeight()\2 - UBound(logo) + 2)\2 - 1
Console.WriteLine(StrDup(Console.WindowWidth - 1, "#"))
sleep(0.04444)
Next
Dim entr As String = " Нажмите любую кнопку, чтобы начать игру! "
Console.SetCursorPosition((Console.WindowWidth \ 2) - Len(entr) \ 2,Console.WindowHeight - (Console.WindowHeight()\2 - UBound(logo) + 2) \ 4 - 3)
Dim entr = " Нажмите любую кнопку, чтобы начать игру! "
Console.SetCursorPosition((Console.WindowWidth\2) - Len(entr)\2,
Console.WindowHeight - (Console.WindowHeight()\2 - UBound(logo) + 2)\4 - 3)
Console.Write(StrDup(Len(entr) + 2, " "))
Console.SetCursorPosition((Console.WindowWidth \ 2) - Len(entr) \ 2,Console.WindowHeight - (Console.WindowHeight()\2 - UBound(logo) + 2) \ 4 - 2)
Console.SetCursorPosition((Console.WindowWidth\2) - Len(entr)\2,
Console.WindowHeight - (Console.WindowHeight()\2 - UBound(logo) + 2)\4 - 2)
Console.Write(entr & " ")
Console.SetCursorPosition((Console.WindowWidth \ 2) - Len(entr) \ 2,Console.WindowHeight - (Console.WindowHeight()\2 - UBound(logo) + 2) \ 4 - 1)
Console.SetCursorPosition((Console.WindowWidth\2) - Len(entr)\2,
Console.WindowHeight - (Console.WindowHeight()\2 - UBound(logo) + 2)\4 - 1)
Console.Write(StrDup(Len(entr) + 2, " "))
Console.SetCursorPosition(0,0)
Console.SetCursorPosition(0, 0)
Console.ReadKey
Console.Clear
End Sub
Function spinWheel() As String()
Dim rnd As New Random
Dim probability(36) As Double
Dim whatDropped As New List(Of String)
For k = 0 To rnd.Next(1,5)
For i = 0 To rnd.Next(1,rnd.Next(5,100))
For k = 0 To rnd.Next(1, 5)
For i = 0 To rnd.Next(1, rnd.Next(5, 100))
rnd.NextDouble()
Randomize
Next
Next
Dim max As Double = 0
Dim dropped As Integer
For i = 0 To 36
probability(i) = rnd.NextDouble()
if probability(i) > max then
@ -111,16 +123,16 @@ Module Program
dropped = i
End If
Next
whatDropped.Add(ring(0,dropped).ToString())
whatDropped.Add(ring(0, dropped).ToString())
If dropped = 0 Then return whatDropped.ToArray()
If ring(0, dropped) mod 2 = 0 And dropped > 0
whatDropped.Add("EVEN")
Else
whatDropped.Add("ODD")
End If
If ring(0, dropped) mod 3 = 0 And dropped > 0
whatDropped.Add("3L")
Else If ring(0, dropped) mod 3 = 1
@ -128,38 +140,38 @@ Module Program
Else
whatDropped.Add("1L")
End If
If ring(1,dropped) = 1
If ring(1, dropped) = 1
whatDropped.Add("RED")
Else If ring(1,dropped) = 2
Else If ring(1, dropped) = 2
whatDropped.Add("BLACK")
End If
If ring(0, dropped) > 0 And ring(0, dropped) <= 12
whatDropped.Add("F12")
Else If ring(0, dropped) > 12 And ring(0, dropped) <= 24
Else If ring(0, dropped) > 12 And ring(0, dropped) <= 24
whatDropped.Add("S12")
Else If ring(0, dropped) > 24
whatDropped.Add("T12")
End If
If ring(0,dropped) > 0 And ring(0,dropped) < 19
If ring(0, dropped) > 0 And ring(0, dropped) < 19
whatDropped.Add("TO18")
ElseIf ring(0,dropped) > 18
ElseIf ring(0, dropped) > 18
whatDropped.Add("FROM18")
End If
Return whatDropped.ToArray()
End Function
Sub display(dropped As Integer)
Console.BackgroundColor = ConsoleColor.Green
Console.Clear()
If ring(0,0) <> dropped
If ring(0, 0) <> dropped
Console.BackgroundColor = ConsoleColor.Black
Console.ForegroundColor = colors(ring(1,0))
Console.Write(ring(0,0) & " ")
Console.ForegroundColor = colors(ring(1, 0))
Console.Write(ring(0, 0) & " ")
Console.BackgroundColor = ConsoleColor.Green
Else
Console.BackgroundColor = ConsoleColor.White
@ -170,12 +182,12 @@ Module Program
End If
For i = 1 To 36
If ring(0,i) <> dropped
Console.ForegroundColor = colors(ring(1,i))
Console.Write(ring(0,i) & " ")
If ring(0, i) <> dropped
Console.ForegroundColor = colors(ring(1, i))
Console.Write(ring(0, i) & " ")
Else
Console.BackgroundColor = ConsoleColor.White
Console.ForegroundColor = colors(ring(1,i))
Console.ForegroundColor = colors(ring(1, i))
Console.Write(ring(0, i))
Console.BackgroundColor = ConsoleColor.Green
Console.Write(" ")
@ -189,11 +201,11 @@ Module Program
For i = 3 To 36 Step 3
temp = GetIndex(ringRank0, i)
If i <> dropped
Console.ForegroundColor = colors(ring(1,temp))
Console.ForegroundColor = colors(ring(1, temp))
Console.Write("{0,2:G} ", i)
Else
Console.BackgroundColor = ConsoleColor.White
Console.ForegroundColor = colors(ring(1,temp))
Console.ForegroundColor = colors(ring(1, temp))
Console.Write("{0,2:G}", i)
Console.BackgroundColor = ConsoleColor.Green
Console.Write(" ")
@ -207,11 +219,11 @@ Module Program
For i = 2 To 36 Step 3
temp = GetIndex(ringRank0, i)
If i <> dropped
Console.ForegroundColor = colors(ring(1,temp))
Console.ForegroundColor = colors(ring(1, temp))
Console.Write("{0,2:G} ", i)
Else
Console.BackgroundColor = ConsoleColor.White
Console.ForegroundColor = colors(ring(1,temp))
Console.ForegroundColor = colors(ring(1, temp))
Console.Write("{0,2:G}", i)
Console.BackgroundColor = ConsoleColor.Green
Console.Write(" ")
@ -225,11 +237,11 @@ Module Program
For i = 1 To 36 Step 3
temp = GetIndex(ringRank0, i)
If i <> dropped
Console.ForegroundColor = colors(ring(1,temp))
Console.ForegroundColor = colors(ring(1, temp))
Console.Write("{0,2:G} ", i)
Else
Console.BackgroundColor = ConsoleColor.White
Console.ForegroundColor = colors(ring(1,temp))
Console.ForegroundColor = colors(ring(1, temp))
Console.Write("{0,2:G}", i)
Console.BackgroundColor = ConsoleColor.Green
Console.Write(" ")
@ -242,14 +254,15 @@ Module Program
Console.WriteLine(" F12 | S12 | T12 ")
Console.ForegroundColor = ConsoleColor.DarkBlue
End Sub
Sub rules()
Console.Clear
Console.ForegroundColor = ConsoleColor.DarkBlue
Console.WriteLine("Рекомендуемое разрешение консоли: 100x35")
Console.WriteLine("Минимальное разрешение консоли: 100х20")
Console.WriteLine("Правила:")
Console.WriteLine("Игра представляет собой Европейскую рулетку. Игрок должен сделать ставку на определённую зону, будь то число, сектор, строка, чётность или цвет. Игрок может делать несколько ставок. Ставки вводятся в предоставленную зону через пробел.")
Console.WriteLine(
"Игра представляет собой Европейскую рулетку. Игрок должен сделать ставку на определённую зону, будь то число, сектор, строка, чётность или цвет. Игрок может делать несколько ставок. Ставки вводятся в предоставленную зону через пробел.")
Console.WriteLine("<число 0 - 36> - ставка на число (1:36).")
Console.WriteLine("1L/2L/3L - 1/2/3 линия соответственно, снизу вверх (1:3).")
Console.WriteLine("F12/S12/T12 - ставка на сектора от 1 по 12/от 13 по 24/от 25 по 36 соответственно (1:3).")
@ -257,21 +270,23 @@ Module Program
Console.WriteLine("TO18/FROM18 - ставка на сектор от 1 по 18/от 19 по 36 (1:2).")
Console.WriteLine("EVEN/ODD - чётные/нечётные (1:2).")
Console.WriteLine("Игрок изначально получает 5000 фишек.")
Console.WriteLine("После того, как игрок укажет, на что ставит, он указывает количество фишек на каждую ставку через пробел.")
Console.WriteLine(
"После того, как игрок укажет, на что ставит, он указывает количество фишек на каждую ставку через пробел.")
Console.WriteLine("Например:")
Console.WriteLine("Делайте ставки >>> 0 16 2L T12 RED ODD")
Console.WriteLine("Укажите суммы ставок >>> 100 50 500 500 1000 1000")
Console.WriteLine("ВНИМАНИЕ! Количество ставок должно совпадать с количеством фишек, которые ставите, в примере 6 = 6.")
Console.WriteLine(
"ВНИМАНИЕ! Количество ставок должно совпадать с количеством фишек, которые ставите, в примере 6 = 6.")
Console.WriteLine("Или просто нажмите ENTER, чтобы пропустить ставку.")
Console.WriteLine("Удачи!")
Console.ReadKey()
End Sub
Sub game()
Console.WriteLine("Игра началась!")
Dim fish As Long = 5000
Dim history As New List(Of Integer)
Do while fish > 0
Console.ForegroundColor = ConsoleColor.DarkBlue
Console.WriteLine("У Вас {0} фишек.", fish)
@ -285,11 +300,11 @@ Module Program
Else
Console.WriteLine("Неверный ввод, продолжаем игру.")
End If
Dim generated() As String = spinWheel()
Console.Clear
history.Add(generated(0))
Console.WriteLine("Делайте ставки:")
Console.Write(">>> ")
Dim stav As New List(Of String)
@ -327,15 +342,19 @@ Module Program
If stav.Contains(generated(i)) Then
indedx = stav.IndexOf(generated(i))
If IsNumeric(generated(i))
fish += summ(indedx) * 35
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
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
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
@ -360,7 +379,7 @@ Module Program
Console.WriteLine("Нажмите любую кнопку, чтобы выйти в меню.")
Console.ReadKey()
End Sub
Sub Main()
Console.BackgroundColor = ConsoleColor.Green
Console.ForegroundColor = ConsoleColor.DarkBlue
@ -373,7 +392,8 @@ Module Program
Console.WriteLine("3) Выйти из игры")
Console.Write(">>> ")
Dim input As Char = Console.ReadKey.KeyChar
Dim n As Integer = If(Int(input.ToString()) = 1 Or Int(input.ToString()) = 2 Or Int(input.ToString()) = 3, Int(input.ToString()), 0)
Dim n As Integer =
If(Int(input.ToString()) = 1 Or Int(input.ToString()) = 2 Or Int(input.ToString()) = 3, Int(input.ToString()), 0)
Select Case n
Case 0
Console.WriteLine()