Vytvářím malé burzovní makléřství hru jako vedlejší projekt a narazil na problém

0

Otázka

V současné době, hra náhodně nová cena akcií hodnot pro in-game dní pokaždé, když form5 zavře a znovu otevře. Mým cílem je mít náhodnou hodnotu na dny: 2, 8, 5, 3, 13, 24, 29, v okamžiku, kdy hra vytváří nastavit hodnotu pro jeden den, ale když to ve hře den končí a den dva začne, jak jeden den a dvě ceny jsou náhodně. Když tento formulář je uzavřen a znovu otevřen ceny náhodně na tyto 2 dny znovu.

Tady je podprogram pro form2: tento formulář zobrazuje dostupné skladem značek může uživatel 'investovat' do, to ukazuje, podprogram pro, když uživatel klikne na tesla akciové:

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


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

Tady je podprogram pro stockbrand.tesla:

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

a pak stockrand je zodpovědný za generování náhodné hodnoty v uvedené dny:

 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 vytvořen pomocí funkce vypadá podobně jako hřích grafu s výjimkami v určených dnech a negativní cenové hodnoty se násobí -1 dát racionální cenu

Teslastock.zobrazit zobrazí formulář, ve kterém graf je umístěn

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

Nejlepší odpověď

0

Některé vaše problémy jsou způsobeny tím, že nemají Možnost Přísné. To by mělo být na. Vlastnosti projektu -> Compile tab. Také pro budoucí projekty Nástroje -> Možnosti -> Projekty a Řešení -> VB Výchozí

Funkce v vb.net potřebujete Type a Return prohlášení. Jste nic vrátit tak proč používáš Function? Použití Sub.

Nevím, co DAYno na Formulář2 je, ale když vidím Text vlastnost, to znamená, String mi. Nemůžeš mít String v To doložka o For smyčky, tedy CInt()

Deklarovat instance Random třídy na Classúrovni. My jen potřebujeme nové náhodné číslo (ne novou instanci Random třída) jednou za iteraci. Blízko, jak jsem mohl dělat, bylo by to být číslo mezi 1 a 12. Sotva si pamatuju Rnd(). Na Next metoda Random třída poskytuje Integer včetně první argument menší než druhý.

Všechny ty If...ElseIfs téměř totožný kód. Snažil jsem se to vyřešit s Select Case. První 2 případy poslat Integer k at1986 ale třetí odešle Double, tedy 2 metody v Teslastock třídy s různými podpisy.

Možná, že vaše problémy zmizí s těmito opravami.

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 jiných jazycích

Tato stránka je v jiných jazycích

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