• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

[Visual Basic] If-Else + Rnd Entbuggen

Z

Zugluft

Gast
Guten Morgen Community

Ich hab ein "kleines" Problem. Wir haben die Hausaufgabe bekommen ein Würfelspiel zu entwickeln. So nun soll dabei wenn man auf einen Buttonklickt per Zufallsprinzip (Randomize) eines von 6 Bildern erscheinen.

Zurzeit kam ich soweit:

Private Sub UserForm_Activate()

Dim wurf
wurf = Int(Rnd * 5 + 1)


End Sub

Private Sub CommandButton1_Click()

If wurf < 1 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\1.jpg")
ElseIf wurf >= 1 And wurf < 2 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\2.jpg")
ElseIf wurf >= 2 And wurf < 3 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\3.jpg")
ElseIf wurf >= 3 And wurf < 4 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\4.jpg")
ElseIf wurf >= 4 And wurf < 5 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\5.jpg")
ElseIf wurf >= 5 And wurf < 6 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\6.jpg")
End If

End Sub

Dummerweise wird immer nur das immer nur Bild1 angezeigt und ich weiss nicht warum.
 
Zugluft am 10.04.2005 14:25 schrieb:
Guten Morgen Community

Ich hab ein "kleines" Problem. Wir haben die Hausaufgabe bekommen ein Würfelspiel zu entwickeln. So nun soll dabei wenn man auf einen Buttonklickt per Zufallsprinzip (Randomize) eines von 6 Bildern erscheinen.

Zurzeit kam ich soweit:

Private Sub UserForm_Activate()

Dim wurf
wurf = Int(Rnd * 5 + 1)


End Sub

Private Sub CommandButton1_Click()

If wurf < 1 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\1.jpg")
ElseIf wurf >= 1 And wurf < 2 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\2.jpg")
ElseIf wurf >= 2 And wurf < 3 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\3.jpg")
ElseIf wurf >= 3 And wurf < 4 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\4.jpg")
ElseIf wurf >= 4 And wurf < 5 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\5.jpg")
ElseIf wurf >= 5 And wurf < 6 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\6.jpg")
End If

End Sub

Dummerweise wird immer nur das immer nur Bild1 angezeigt und ich weiss nicht warum.


"If wurf < 1 Then" sollte nie true werden da: "wurf = Int(Rnd * 5 + 1)" immer größer oder gleich 1 ist. Und um selber rauszufinden woran es liegt: Lass dir doch einfach mal deinen "wurf" auf den Bildschirm ausgeben.
 
Bagotios am 10.04.2005 14:40 schrieb:
"If wurf < 1 Then" sollte nie true werden da: "wurf = Int(Rnd * 5 + 1)" immer größer oder gleich 1 ist. Und um selber rauszufinden woran es liegt: Lass dir doch einfach mal deinen "wurf" auf den Bildschirm ausgeben.


Private Sub UserForm_Activate()

Dim wurf
wurf = Int(Rnd * 6 + 1)


End Sub

Private Sub CommandButton1_Click()

If wurf = 1 And wurf <= 2 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\1.jpg")
ElseIf wurf > 2 And wurf <= 3 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\2.jpg")
ElseIf wurf > 3 And wurf <= 4 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\3.jpg")
ElseIf wurf > 4 And wurf <= 5 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\4.jpg")
ElseIf wurf > 5 And wurf <= 6 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\5.jpg")
ElseIf wurf > 6 And wurf <= 7 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\6.jpg")
End If

End Sub


Ok, das glaube ich nun richtig geändert zu haben. Nur jetzt zeigt er mir garkein Bild mehr an. Ok hab mir "Wurf" anzeigen lassen und funzt (5, 2, 4) dann muss es ja an der ElseIf abfrage liegen...*weiter grübel und teste)
Thx schonmal.
 
Zugluft am 10.04.2005 14:59 schrieb:
Bagotios am 10.04.2005 14:40 schrieb:
"If wurf < 1 Then" sollte nie true werden da: "wurf = Int(Rnd * 5 + 1)" immer größer oder gleich 1 ist. Und um selber rauszufinden woran es liegt: Lass dir doch einfach mal deinen "wurf" auf den Bildschirm ausgeben.


Private Sub UserForm_Activate()

Dim wurf
wurf = Int(Rnd * 6 + 1)


End Sub

Private Sub CommandButton1_Click()

If wurf = 1 And wurf <= 2 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\1.jpg")
ElseIf wurf > 2 And wurf <= 3 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\2.jpg")
ElseIf wurf > 3 And wurf <= 4 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\3.jpg")
ElseIf wurf > 4 And wurf <= 5 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\4.jpg")
ElseIf wurf > 5 And wurf <= 6 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\5.jpg")
ElseIf wurf > 6 And wurf <= 7 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\6.jpg")
End If

End Sub


Ok, das glaube ich nun richtig geändert zu haben. Nur jetzt zeigt er mir garkein Bild mehr an. Ok hab mir "Wurf" anzeigen lassen und funzt (5, 2, 4) dann muss es ja an der ElseIf abfrage liegen...*weiter grübel und teste)
Thx schonmal.
das kann so nicht funktionieren, die variable "wurf" ist in einer prozedur deklariert also ist sie nur in dieser prozedur gültig, tip schalt die variablendeklaration in den optionen ein.

so dieser code sollte funktionieren
Private wurf As Byte


Private Sub CommandButton1_Click()
Randomize
wurf = CByte(5 * Rnd + 1)

Select Case wurf
Case 1
Image1.Picture = LoadPicture("D:\1.jpg")
Case 2
Image1.Picture = LoadPicture("D:\2.jpg")
Case 3
Image1.Picture = LoadPicture("D:\3.jpg")
Case 4
Image1.Picture = LoadPicture("D:\4.jpg")
Case 5
Image1.Picture = LoadPicture("D:\5.jpg")
Case 6
Image1.Picture = LoadPicture("D:\6.jpg")
End Select
End Sub
 
Rumsi am 10.04.2005 15:14 schrieb:
Zugluft am 10.04.2005 14:59 schrieb:
Bagotios am 10.04.2005 14:40 schrieb:
"If wurf < 1 Then" sollte nie true werden da: "wurf = Int(Rnd * 5 + 1)" immer größer oder gleich 1 ist. Und um selber rauszufinden woran es liegt: Lass dir doch einfach mal deinen "wurf" auf den Bildschirm ausgeben.


Private Sub UserForm_Activate()

Dim wurf
wurf = Int(Rnd * 6 + 1)


End Sub

Private Sub CommandButton1_Click()

If wurf = 1 And wurf <= 2 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\1.jpg")
ElseIf wurf > 2 And wurf <= 3 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\2.jpg")
ElseIf wurf > 3 And wurf <= 4 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\3.jpg")
ElseIf wurf > 4 And wurf <= 5 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\4.jpg")
ElseIf wurf > 5 And wurf <= 6 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\5.jpg")
ElseIf wurf > 6 And wurf <= 7 Then
Image1.Picture = LoadPicture("D:\Eigene Dateien\Eigene Bilder\Icons\6.jpg")
End If

End Sub


Ok, das glaube ich nun richtig geändert zu haben. Nur jetzt zeigt er mir garkein Bild mehr an. Ok hab mir "Wurf" anzeigen lassen und funzt (5, 2, 4) dann muss es ja an der ElseIf abfrage liegen...*weiter grübel und teste)
Thx schonmal.
das kann so nicht funktionieren, die variable "wurf" ist in einer prozedur deklariert also ist sie nur in dieser prozedur gültig, tip schalt die variablendeklaration in den optionen ein.

so dieser code sollte funktionieren
Private wurf As Byte


Private Sub CommandButton1_Click()
Randomize
wurf = CByte(5 * Rnd + 1)

Select Case wurf
Case 1
Image1.Picture = LoadPicture("D:\1.jpg")
Case 2
Image1.Picture = LoadPicture("D:\2.jpg")
Case 3
Image1.Picture = LoadPicture("D:\3.jpg")
Case 4
Image1.Picture = LoadPicture("D:\4.jpg")
Case 5
Image1.Picture = LoadPicture("D:\5.jpg")
Case 6
Image1.Picture = LoadPicture("D:\6.jpg")
End Select
End Sub


Geil, danke :)
Kenn mich zwar nicht so gut aus mit Visual Basic und versuch gerade erstmal deinen Code zu verstehen, aber er funktioniert perfekt. Mal sehen wie ich den Lehrer damit schocken kann. :-X
Danke nochmal
 
Zurück