Sto creando un piccolo stock di intermediazione di gioco come un side-project e sono imbattuto in un problema

0

Domanda

Attualmente, il gioco randomizza nuovo prezzo di borsa valori in gioco di giorni ogni volta che form5 si chiude e si riapre. Il mio obiettivo è quello di avere uno studio randomizzato valore a giorni: 2, 8, 5, 3, 13, 24, 29, al momento il gioco crea un valore impostato per il primo giorno, ma quando in gioco giorno finisce e un giorno due inizia, sia di giorno che di uno e due prezzi sono randomizzati. Quando questa forma viene chiuso e riaperto i prezzi randomize per questi 2 giorni di nuovo.

Qui è la subroutine per form2: questo modulo consente di visualizzare la disponibilità in magazzino marche l'utente puo 'investire' in, questo dimostra che il sottoprogramma per quando l'utente fa clic su tesla stock:

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


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

Qui è la subroutine per stockbrand.tesla:

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

e poi stockrand è responsabile per la generazione casuale di valori in un numero di giorni specificato:

 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

il grafico creato dalla funzione simile a un peccato grafico con eccezioni in determinati giorni e prezzo negativo i valori vengono moltiplicati per -1 per dare un prezzo razionale

Teslastock.mostra la forma in cui il grafico è posto

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

Migliore risposta

0

Alcuni dei problemi sono causati dal fatto di non avere Option Strict On. Dovrebbe essere su. Proprietà del progetto -> Compilare la scheda. Anche per i progetti futuri Strumenti -> Opzioni -> Progetti e Soluzioni -> VB impostazioni Predefinite

Funzioni vb.net bisogno di un Type e un Return istruzione. Non restituendo nulla di così perché stai usando un Function? Utilizzare un Sub.

Non so cosa DAYno su Form2 è, ma quando vedo un Text proprietà significa un String per me. Non si può avere un String nel To clausola di un For loop, quindi il CInt()

Dichiarare un'istanza del Random classe a Classlivello. Abbiamo solo bisogno di un nuovo numero casuale (non una nuova istanza di Random classe) una volta per ogni iterazione. Vicino come avrei potuto fare di più, avrei potuto essere un numero compreso tra 1 e 12. Mi ricordo a malapena Rnd(). Il Next metodo di Random classe fornisce un' Integer comprensivo di primo argomento e meno il secondo.

Tutti coloro If...ElseIfs quasi identico codice. Ho provato a risolvere con un Select Case. I primi 2 casi di inviare un Integer per at1986 ma il terzo invia un Doublecosì i 2 metodi in Teslastock classe con firme diverse.

Forse i vostri problemi spariranno con queste correzioni.

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

In altre lingue

Questa pagina è in altre lingue

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