Avatar billede flashit Nybegynder
10. oktober 2003 - 19:37 Der er 5 kommentarer og
1 løsning

object problem

Hej E.

Jeg kan ikke få nedenstående til at kalde kast funktionen hvergang koden looper.
Kan i se hvorfor?

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim kast As New Terning()
        Dim Resultat As String
        Dim Res1, Res2, Res3, Res4, Res5, Res6, n As Integer
        Dim AntalKast As Integer
        Dim myarray(10) As Integer
        AntalKast = txtAntal.Text
        n = 0
        Res1 = 0
        Res2 = 0
        Res3 = 0
        Res4 = 0
        Res5 = 0
        Res6 = 0

        Dim test As String

        Dim i As Integer
        Dim v As Integer
        Do While i < AntalKast

            test = kast.faceValue.ToString
            If test = "1" Then
                MessageBox.Show("du har slået en 1 er")
            Else
            End If


            i = i + 1
        Loop



       
    End Sub

Og Object

Public Class Terning
    ' Klassens data er private, så de kun kan
    ' tilgås via klassens metoder (Indkapsling)
    Private _ojne As Integer

    ' Konstruktøren kaster terningen
    Sub New()
        kast()
    End Sub

    ' Kaster terningen
    Public Sub kast()
        Randomize()
        _ojne = Int(6 * Rnd() + 1)
    End Sub

    ' Aflæser aktuel værdi (antal øjne teringen viser)
    Public ReadOnly Property faceValue() As Integer
        Get
            Return _ojne
        End Get
    End Property

End Class

Problemet er at den bare retunere samme indhold de antal gange som txtAntal indeholder og ikke "kaster" op ny.

Håber det er til at forstå :-)
Avatar billede arne_v Ekspert
10. oktober 2003 - 22:05 #1
Prøv og flyt Randomize fra kast til komstruktøren.
Avatar billede arne_v Ekspert
10. oktober 2003 - 22:13 #2
Og kald kast metode inden i løkken.

      Do While i < AntalKast
            kast.kast() ' <==== ny
            test = kast.faceValue.ToString
            If test = "1" Then
                MessageBox.Show("du har slået en 1 er")
            Else
            End If
            i = i + 1
        Loop


    Sub New()
        Randomize() ' <==== flyttet
        kast()
    End Sub

    ' Kaster terningen
    Public Sub kast()
        _ojne = Int(6 * Rnd() + 1)
    End Sub
Avatar billede flashit Nybegynder
10. oktober 2003 - 22:34 #3
Tak Arne_V Det virker perfekt.
Det virker også uden at man flytter Ramdomize til New?
Kan du sige mig hvordan kast.kast virker?
Avatar billede arne_v Ekspert
10. oktober 2003 - 22:37 #4
kast.kast() kalder kast metoden i objektet kast d.v.s. at
det rent faktisk laver selve kastet.
Avatar billede arne_v Ekspert
10. oktober 2003 - 22:38 #5
Du vil få mest tilfældige resulateter ved kun at kalde Randomize en gang.
Avatar billede flashit Nybegynder
10. oktober 2003 - 22:41 #6
OK, som du nok har fanget er jeg ved at læse metoder objekter mm.
En gang mere TAK :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester