Ja som vytváranie malých zásob broking hra ako vedľajší projekt a narazil na problém

0

Otázka

V súčasnej dobe, hra randomizes nové akciové ceny hodnoty pre in-game dní zakaždým form5 zavrie a reopens. Mojím cieľom je mať randomizovanej hodnota v dňoch: 2, 8, 5, 3, 13, 24, 29, v súčasnosti sa hra vytvára nastavená hodnota na jeden deň, ale keď že v hre sa deň končí, a deň dva začína, obe deň jeden a dva ceny sú randomizovanej. Pri tejto forme je uzavretá a otvorená ceny náhodne za tieto 2 dni znova.

Tu je podprogram pre form2: tento formulár zobrazí dostupné vozidiel značiek užívateľ môže "investovať" do, to ukazuje, podprogram, keď užívateľ klikne na tesla zásob:

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


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

Tu je podprogram pre stockbrand.tesla:

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

a potom stockrand je zodpovedný za generovanie náhodných hodnôt v uvedených dňoch:

 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

graf vytvorený pomocou funkcie vyzerá podobne ako na hriech graf s výnimkami v určených dňoch a negatívne cena hodnoty sa vynásobia -1 dať rozumné ceny

Teslastock.show formulár, na ktorom je umiestnený graf

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

Najlepšiu odpoveď

0

Niektoré problémy sú spôsobené tým, že nemajú Možnosť Prísne Na. To by malo byť zapnuté. Projekt Vlastnosti -> Zostaviť tab. Aj pre budúce projekty Nástroje -> Možnosti -> Projektov a Riešení -> VB Defaults

Funkcie vb.net potrebujete Type a Return ziskov a strát. Nie ste návrate nič také, prečo ste pomocou Function? Použitie Sub.

Neviem, čo DAYno na Form2 je, ale keď som sa vidieť Text majetku, to znamená String na mňa. Nemôžete mať String v To ustanovenie For slučky, tak CInt()

Vyhlásiť inštanciu Random trieda v Classúroveň. Budeme potrebovať iba nové náhodné číslo (nie nová stupňa Random trieda) raz za iteráciu. Blízko, ako by som mohol vykonať, že by to byť číslo medzi 1 k 12. Som sotva pamätám Rnd(). Na Next metóda Random trieda poskytuje Integer vrátane prvý argument a menej ako sekundu.

Všetky tieto If...ElseIfs majú takmer identické kód. Snažil som sa vyriešiť to s Select Case. Prvé 2 prípadoch odoslať Integer na at1986 ale tretí pošle Double, tak 2 metódy v Teslastock triedy s rôznymi podpisy.

Možno vaše problémy zmiznú s týchto opráv.

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

V iných jazykoch

Táto stránka je v iných jazykoch

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