opdracht oplossing

Status
Niet open voor verdere reacties.

bmcmouth

Nieuwe gebruiker
Lid geworden
10 jun 2002
Berichten
4
Zoek de code voor volgende oefening
De bedoeling is als volgt
Op een eerste formulier, een label die steeds gecentreerd moet blijven staan,
met een commando knop , wanneer men er op drukt de volgende werking doet,

a) Tien worpen simuleert met twee dobbelstenen, de som van deze in een variabele bewaard,
b) Een tweede formulier opent waar moet op uitgeprint worden, hoeveel maal men een bepaald getal geworpen heeft,
met andere woorden, daar men met twee dobbelstenen werpt is het getal min 2 en het max 12 .
Dus moet er op de tweede formulier verschijnen
U hebt: 1 maal 7 geworpen
5 maal 8 geworpen
3 maal 4 geworpen
1 maal 12 geworpen
dit is een voorbeeld van wat het resultaat zou kunnen zijn na de tien worpen

dank bijvoorbaat.
antwoordt kan ook op bmcmouth@pandora.be
 
Een ander algoritme is ook mogelijk.

Hallo bmcmouth,

Aangezien ik op dit moment niet al te veel tijd over heb, kan ik jou
jammer genoeg geen gedetaileerde uitleg geven over de code hieronder
die ik zojuist geschreven heb, Zoals bv. de namen v.d. gebruikte variabelen
en de structuur v.h. programma. Ik heb hiervoor geen PSD ontwikkeld, omdat
het programma betrekkelijk klein is. Het programmaatje heb ik wel uitvoerig
naar zijn correctheid getest. Je kunt dit ook gaan testen door gesimuleerde
waarden in te bouwen.
Mochten er onjuistheden bevatten, dan verneem ik deze graag.

Het is ook mogelijk om het programmaatje op een andere manier (andere al-
goritme) te schrijven. Ik heb hier maar één manier gegeven.


1) Voer de hieronder opgesomde variabelen bij General Declarations.

Option Explicit
Dim Flag As Integer
Dim Resultaat As String
Dim Index As Integer
Dim Aantal(10) As Integer
Dim ZelfdeSom(10) As Integer
Dim Worp As Integer
Dim HulpWorp(10) As Integer
Dim HulpTeller As Integer
Dim Dobbelsteen1 As Integer
Dim Dobbelsteen2 As Integer
Dim SomWorp(10) As Integer
Dim ZelfdeSomWorp As Integer


2) Voer de code hieronder bij Private Sub Command1_Click()/End Sub v.h. 1e Form

Private Sub Command1_Click()
Label1 = ""
Index = 0
Flag = 0
For Worp = 1 To 10
Randomize
Dobbelsteen1 = Int((6 * Rnd) + 1)
Dobbelsteen2 = Int((6 * Rnd) + 1)
SomWorp(Worp) = Dobbelsteen1 + Dobbelsteen2
If Worp < 10 Then
Label1 = Label1 & Worp & "e worp is: " & Dobbelsteen1 & _
" en " & Dobbelsteen2 & " " & SomWorp(Worp) & vbCrLf
Else
Label1 = Label1 & Worp & "e worp is: " & Dobbelsteen1 & _
" en " & Dobbelsteen2 & " " & SomWorp(Worp) & vbCrLf
End If
Next Worp
For Worp = 1 To 10
HulpWorp(Worp) = 0
Next Worp
For Worp = 1 To 9
If HulpWorp(Worp) = 0 Or (HulpWorp(9) = 1 And Worp = 9) Then
ZelfdeSomWorp = 1
For HulpTeller = (Worp + 1) To 10
If HulpWorp(9) = 1 And Worp = 9 Then
Flag = 1
Exit For
Else
If HulpWorp(HulpTeller) = 0 Then
If SomWorp(Worp) = SomWorp(HulpTeller) Then
ZelfdeSomWorp = ZelfdeSomWorp + 1
HulpWorp(HulpTeller) = 1
End If
End If
End If

Next HulpTeller
If ZelfdeSomWorp = 10 Then
Exit For
End If
If Worp < 10 And Flag = 0 Then
Index = Index + 1
Aantal(Index) = ZelfdeSomWorp
ZelfdeSom(Index) = SomWorp(Worp)
End If
If Worp = 9 And Flag = 1 Then
If HulpWorp(10) = 0 Then
Index = Index + 1
Aantal(Index) = 1
ZelfdeSom(Index) = SomWorp(10)
End If
Else
If Worp = 9 And Flag = 0 And HulpWorp(10) = 0 Then
Index = Index + 1
Aantal(Index) = 1
ZelfdeSom(Index) = SomWorp(10)
End If
End If
End If
Next Worp
Form2.Show
If ZelfdeSomWorp = 10 Then
Form2.Label1.Caption = ""
Form2.Label1.Caption = "U hebt:" & vbCrLf & "10 maal " & SomWorp(1) & _
" Geworpen" & vbCrLf
Else
Resultaat = ""
For HulpTeller = 1 To Index
Resultaat = Resultaat & Aantal(HulpTeller) & " maal " & _
ZelfdeSom(HulpTeller) & " Geworpen" & vbCrLf
Form2.Label1.Caption = "U hebt:" & vbCrLf & Resultaat
Next HulpTeller
End If
End Sub

3) run het programma

Groetjes.

P.S. Je hebt nodig: 2 Forms. Bij het 1e Form een Button en een Label plaatsen en
bij het 2e Form een Label.
 
Bij nader inzien toch de code even netjes zetten.

Code:
Private Sub Command1_Click()
Label1 = ""
Index = 0
Flag = 0
For Worp = 1 To 10
   Randomize
   Dobbelsteen1 = Int((6 * Rnd) + 1)
   Dobbelsteen2 = Int((6 * Rnd) + 1)
   SomWorp(Worp) = Dobbelsteen1 + Dobbelsteen2
   If Worp < 10 Then
      Label1 = Label1 & Worp & "e   worp is: " & Dobbelsteen1 & _
      " en " & Dobbelsteen2 & "   " & SomWorp(Worp) & vbCrLf
      Else
      Label1 = Label1 & Worp & "e worp is: " & Dobbelsteen1 & _
      " en " & Dobbelsteen2 & "   " & SomWorp(Worp) & vbCrLf
   End If
Next Worp
For Worp = 1 To 10
   HulpWorp(Worp) = 0
Next Worp
For Worp = 1 To 9
   If HulpWorp(Worp) = 0 Or (HulpWorp(9) = 1 And Worp = 9) Then
      ZelfdeSomWorp = 1
      For HulpTeller = (Worp + 1) To 10
         If HulpWorp(9) = 1 And Worp = 9 Then
            Flag = 1
            Exit For
            Else
            If HulpWorp(HulpTeller) = 0 Then
               If SomWorp(Worp) = SomWorp(HulpTeller) Then
                  ZelfdeSomWorp = ZelfdeSomWorp + 1
                  HulpWorp(HulpTeller) = 1
               End If
            End If
         End If
      Next HulpTeller
      If ZelfdeSomWorp = 10 Then
         Exit For
      End If
      If Worp < 10 And Flag = 0 Then
         Index = Index + 1
         Aantal(Index) = ZelfdeSomWorp
         ZelfdeSom(Index) = SomWorp(Worp)
      End If
      If Worp = 9 And Flag = 1 Then
         If HulpWorp(10) = 0 Then
            Index = Index + 1
            Aantal(Index) = 1
            ZelfdeSom(Index) = SomWorp(10)
         End If
         Else
         If Worp = 9 And Flag = 0 And HulpWorp(10) = 0 Then
            Index = Index + 1
            Aantal(Index) = 1
            ZelfdeSom(Index) = SomWorp(10)
         End If
      End If
   End If
Next Worp
Form2.Show
If ZelfdeSomWorp = 10 Then
   Form2.Label1.Caption = ""
   Form2.Label1.Caption = "U hebt:" & vbCrLf & "10 maal " & SomWorp(1) & _
   " Geworpen" & vbCrLf
   Else
   Resultaat = ""
   For HulpTeller = 1 To Index
      Resultaat = Resultaat & Aantal(HulpTeller) & " maal " & _
      ZelfdeSom(HulpTeller) & " Geworpen" & vbCrLf
      Form2.Label1.Caption = "U hebt:" & vbCrLf & Resultaat
   Next HulpTeller
End If
End Sub
 
Beste Wernand,

Ik heb het heel graag gedaan. Het was voor mij best uitzoek werk geweest
om de door bmcmouth gestelde vraag correct te kunnen beantwoorden.

Het gaat hier puur om de code om het juiste resultaat weer te geven
en niet zo zeer om (eventueel) animaties v.d. dobbelstenen te maken,
omdat dit met Picclip op eenvoudige wijze te programmeren is.

Nogmaals bedankt voor jouw compliment.

Groetjes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan