Я создаю небольшую биржевую брокерскую игру в качестве побочного проекта и столкнулся с проблемой

0

Вопрос

В настоящее время игра рандомизирует новые значения цен акций за игровые дни каждый раз, когда form5 закрывается и открывается заново. Моя цель-получить рандомизированное значение в днях: 2, 8, 5, 3, 13, 24, 29, на данный момент игра создает заданное значение для первого дня, но когда этот игровой день заканчивается и начинается второй день, цены первого и второго дня рандомизируются. Когда эта форма закрывается и снова открывается, цены снова рандомизируются на эти 2 дня.

Вот подпрограмма для формы 2: в этой форме отображаются доступные бренды акций, в которые пользователь может "инвестировать", это показывает подпрограмму, когда пользователь нажимает на акции tesla:

Public Shared Sub tesla(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Teslal.Click


    stockbrand.tesla()
    Teslastock.Show()
End Sub

Вот подпрограмма для stockbrand.tesla:

Shared Sub tesla()
    stockrand(2, 8, 5, 3, 13, 24, 29)
End Sub

а затем stockrand отвечает за генерацию случайных значений в указанные дни:

 Public Shared Function stockrand(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Integer)
    For i As Integer = 1 To Form2.DAYno.Text

        If i = a Then
            Teslastock.at1986(a.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = b Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = c Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = d Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = e Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = f Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = g Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)
        Else
            Teslastock.at1986(i.ToString & "/8/86 1986", Math.Sin(i) * 2000)
        End If
    Next
End Function

график, созданный функцией, похож на график sin с исключениями в указанные дни, а отрицательные значения цен умножаются на -1, чтобы получить рациональную цену

Тесласток.показать показывает форму, в которой размещен график

vb.net
2021-11-23 21:56:57
1

Лучший ответ

0

Некоторые из ваших проблем вызваны тем, что у вас нет строгой опции. Он должен быть включен. Свойства проекта -> вкладка "Компиляция". Также для будущих проектов Инструменты -> Параметры ->> Проекты и решения ->>> VB по умолчанию

Функции в vb.net нужна Type и Return заявление. Вы ничего не возвращаете, так почему вы используете Function? Используйте Sub.

Я не знаю, что DAYno на форме 2 есть, но когда я вижу Text свойство это означает, что String ко мне. У тебя не может быть String в To положение о For петля, таким образом, CInt()

Объявите экземпляр Random занятия в Class Уровень. Нам нужно только новое случайное число (а не новый экземпляр Random класс) один раз за итерацию. Насколько я мог разобрать, это было бы число от 1 до 12. Я едва помню Rnd(). В Next способ проведения Random класс обеспечивает Integer включая первый аргумент и меньше, чем второй.

Все эти If...ElseIfs имеют почти идентичный код. Я попытался разобраться в этом с помощью Select Case. В первых 2 случаях отправьте Integer Для at1986 но третий посылает Double, таким образом, 2 метода в Teslastock класс с разными сигнатурами.

Может быть, ваши проблемы исчезнут с этими исправлениями.

Private Rand As New Random()

Public Sub stockrand(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Integer)
    For i As Integer = 1 To CInt(Form2.DAYno.Text)
        Dim r = Rand.Next(1, 13)
        Select Case i
            Case a
                Teslastock.at1986($"{a}/8/86 1986", r * 2000)
            Case b, c, d, e, f, g
                Teslastock.at1986($"{i}/8/86 1986", r * 2000)
            Case Else
                Teslastock.at1986($"{i}/8/86 1986", Math.Sin(i) * 2000)
        End Select
    Next
End Sub

Public Class Teslastock
    Public Shared Sub at1986(strDate As String, aNumber As Integer)
        'Some code
    End Sub

    Public Shared Sub at1986(strDate As String, aNumber As Double)
        'Some code
    End Sub
End Class
2021-11-24 03:29:56

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

Популярное в этой категории

Популярные вопросы в этой категории