Estou criando uma pequena corretagem de valores jogo como um projeto de lado e corria ao longo de um problema

0

Pergunta

Atualmente, o jogo torna aleatória de novas ações, preço de valores em dias de jogo de cada vez form5 fecha e reabre. Meu objetivo é ter um valor aleatório em dias: 2, 8, 5, 3, 13, 24, 29, no momento em que o jogo cria um valor definido para o primeiro dia, mas quando esse dia no jogo termina e o dia começa, tanto de dia um e dois preços são randomizados. Quando este formulário é fechado e reaberto os preços randomize para estes 2 dias novamente.

Aqui é a sub-rotina para formulário2: este formulário exibe o estoque disponível marcas que o usuário pode "investir" em, isso mostra que a sub-rotina para quando o usuário clica sobre o tesla estoque:

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


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

Aqui é a sub-rotina para stockbrand.tesla:

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

e, em seguida, stockrand é responsável pela geração de valores aleatórios em dias especificados:

 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

o gráfico criado pela função semelhante à de um pecado gráfico com exceções em determinados dias e negativos preço de valores são multiplicados por -1 para dar um preço racional

Teslastock.show mostra a forma em que o gráfico é colocado

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

Melhor resposta

0

Alguns dos problemas são causados por não ter Option Strict On. Ele deve estar ligado. Projeto de Propriedades -> guia Compile. Também para futuros projetos de Ferramentas -> Opções -> Projetos e Soluções -> Padrões de VB

Funções vb.net precisa de um Type e um Return instrução. Você não está retornando nada então por que você está usando um Function? Usar um Sub.

Eu não sei o que DAYno no Form2 é, mas quando eu vejo um Text propriedade significa um String para mim. Você não pode ter um String no To cláusula de um For loop, assim, o CInt()

Declare uma instância da Random classe a Classnível. Precisamos apenas de um novo número aleatório (não uma nova instância do Random classe) uma vez por iteração. Perto de como eu poderia fazer, seria um número entre 1 e 12. Eu mal lembro Rnd(). O Next método de Random classe fornece uma Integer inclusive do primeiro argumento e menor que o segundo.

Todos aqueles If...ElseIfs tem quase idêntico código. Eu tentei resolver isso com um Select Case. Os 2 primeiros casos, enviar um Integer para at1986 mas o terceiro envia um Doubleassim os 2 métodos no Teslastock classe com assinaturas diferentes.

Talvez seus problemas vão desaparecer com essas correções.

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

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................