Würfel erstellen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    Würfel erstellen

    Hallo liebe vb-Welt.

    Ich programmiere zur Zeit ein Spiel bzw versuche es ;)
    Dabei klappt auch alles einwandfrei. Bei dem Spiel gibt es auch einen Würfel. Da ich seit 2010 programmiere, funktioniert das Würfeln auch schon. Mit "random" lass ich eine zufällige Zahl in eine Variable schreiben und je nach dem, welche Zahl dann in der Variable geschrieben ist, wird ein Bild mit der Augenzahl in einer Pictuerbox geladen:

    Quellcode

    1. Dim zahl1 as integer
    2. Dim zufallszahl as new random
    3. zahl1 = zufallszahl.next(1,6)
    4. if zahl1 = 1 then
    5. picturebox1 = My.Resources._1
    6. elseif zahl1 = 2 then
    7. picturebox1 = My.Resources._2
    8. .... und so weiter...
    9. end if


    wie gesagt, das alles funktioniert.

    Jetzt möchte ich aber, dass der Würfel auch richtig würfelt. also dass nicht sofort das Bild mit der Augenzahl erscheint, sondern dass das Bild alle 500ms oder so noch wechselt und erst am Ende dann das "gewürfelte" Bild angezeigt wird.

    Ich hab es mal mit diesem code versucht:

    Quellcode

    1. Dim zahl1 as integer
    2. Dim zahl2 as integer
    3. Dim zufall as integer
    4. Dim zufallszahl as new random
    5. zahl2 = zufallszahl.next(3,10)
    6. for zufall = 0 to zahl2
    7. zahl1 = zufallszahl.next(1,6)
    8. if zahl1 = 1 then
    9. picturebox1 = My.Resources._1
    10. elseif zahl1 = 2 then
    11. picturebox1 = My.Resources._2
    12. .... und so weiter...
    13. end if
    14. Threading.Thread.Sleep(500)
    15. next


    Aber jetzt dauert es einfach die Zeit, bis die For-Schleife beendet ist und dann wird einfach wieder nur das Bild von der letzten Zahl angezeigt.

    Was hab ich bei dem Code falsch bzw vergessen? Oder funktioniert es mit diesem Code überhaupt nicht? Was wäre eine andere Lösung?

    Vielen Dank schon mal für Eure Bemühungen und gute Nacht :)
    Hab das mal vorn Jahr in Java machen müssen und einfach Dirty mit nem Timer hingeklatscht:

    - Timer mit kleinem Intervall z. B. 250ms

    Quellcode

    1. wuerfeln(){
    2. Timer Intervall = 200ms
    3. Timer = AN
    4. }
    5. Timer Tick Event(){
    6. neue zufallszahl
    7. entsprechendes Bild anzeigen (z. B. übern Case dann _1, _2, _3 oder _4 laden etc.)
    8. Timer Intervall += 20ms
    9. if (TimerIntervall >= 1000ms){
    10. Timer = AUS
    11. Timer.Intervall = 200ms
    12. GEWUERFELTEZAHL = (letzte) neue zufallszahl
    13. }
    14. }


    Sollte jetzt immer langsamer das Bild wechseln bis der Würfel "stehen" bleibt.
    Ich musste nur darrauf achten das während des Würfelvorgangs der Benutzer nicht rumpfuscht
    (soll heißen z. B. den Würfel Button der wuerfeln() aufruft ausschalten verstecken o. ä.).
    Erstell Dir doch einfach ein UserControl, welches einen Würfel repräsentiert. Darin kannst Du alles kapseln. Schreib Dir dann ggf. eine WürfelController-Klasse, welche die Würfel steuert und die Werte zurück gibt, falls Du mehrere Würfel haben möchtest. Die Animation lagerst Du in einen extra Thread aus, damit der GUI-Thread nicht blockiert wird. Das erreichst Du entweder mit Threads oder einem System.Threading.Timer, bzw. System.Timers.Timer.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o