Bir yan proje olarak küçük bir hisse senedi brokerliği oyunu oluşturuyorum ve bir sorunla karşılaştım

0

Soru

Şu anda oyun, form5 her kapanışında ve yeniden açıldığında oyun içi günler için yeni hisse senedi fiyat değerlerini randomize ediyor. Amacım günlerde randomize bir değere sahip olmaktır: 2, 8, 5, 3, 13, 24, 29, şu anda oyun birinci gün için belirlenmiş bir değer yaratıyor, ancak bu oyun içi gün sona erdiğinde ve ikinci gün başladığında, hem birinci gün hem de iki fiyat randomize ediliyor. Bu form kapatılıp yeniden açıldığında fiyatlar bu 2 gün için tekrar randomize olur.

İşte form2 için alt yordam: bu form, kullanıcının 'yatırım yapabileceği' mevcut stok markalarını görüntüler, bu, kullanıcının tesla hissesini tıkladığında alt yordamı gösterir:

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


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

İşte stockbrand için alt yordam.tesla:

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

ve sonra stockrand belirtilen günlerde rastgele değerler üretmekten sorumludur:

 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

işlev tarafından oluşturulan grafik, belirtilen günlerde istisnalar dışında bir günah grafiğine benzer ve rasyonel bir fiyat vermek için negatif fiyat değerleri -1 ile çarpılır

Teslastock.göster, grafiğin yerleştirildiği formu gösterir

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

En iyi cevabı

0

Sorunlarınızdan bazıları, Sıkı bir Seçeneğe sahip olmamanızdan kaynaklanmaktadır. Açık tutulmalıdır. Proje Özellikleri - > Derleme sekmesi. Ayrıca gelecekteki projeler için Araçlar - > Seçenekler - > > Projeler ve Çözümler - > > > VB Varsayılanları

İçindeki işlevler vb.net bir şeye ihtiyacım var Type ve bir Return açıklama. Neden öyle bir şey kullanarak geri vermeyeceksin Function? Bir kullan Sub.

Bilmiyorum ne DAYno form2'de ama bir tane gördüğümde Text mülkiyet anlamına gelir String bana. Sahip olamayacağın bir String in the To a maddesi For döngü, böylece CInt()

Bir örneğini bildirmek Random sınıfta Class seviye. Sadece yeni bir rasgele sayıya ihtiyacımız var (yeni bir örneğe değil Random sınıf) yineleme başına bir kez. Anlayabildiğim kadarıyla, 1 ile 12 arasında bir sayı olurdu. Zar zor hatırlıyorum Rnd(). Bu Next yöntemi Random sınıf bir sağlar Integer ilk argüman dahil ve ikincisinden daha az.

Bunca If...ElseIfhemen hemen aynı kod var. Bunu bir şekilde çözmeye çalıştım. Select Case. İlk 2 vaka bir Integer -e doğru at1986 ama üçüncüsü bir Double, böylece 2 yöntem Teslastock farklı imzalara sahip sınıf.

Belki bu düzeltmelerle sorunlarınız ortadan kalkacaktır.

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

Diğer dillerde

Bu sayfa diğer dillerde

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