Post on 06-Apr-2016
transcript
Ein WürfelspielZUFALLSPROGRAMMIERUNG
Was soll das Programm können?
auf Knopfdruck eine Augenzahl anzeigen die Augenzahl einem von zwei Spielern dazu addieren unterscheiden, ob das Ergebnis kleiner, gleich oder größer einer
Grenze ist ggf. angeben, wer gewonnen hat (wer genau z.B. 30 Punkte
erzielt hat) sich auf Knopfdruck beenden ein neues Spiel beginnen können
Benötigte Variablen
Zufallszahl (zur Ermittlung der „gewürfelten“ Zahl) Stand1 und stand2 (Punktestand der beiden Spieler) Grenze (Punktestand, bei dem gewonnen wurde) Spieler (Zählervariable, welcher Spieler dran ist)
Struktogramm-Überblick
Spielbetrieb
Zufallszahl anzeigen
Zufallszahl bestimmen
Auswertung
Struktogramm SpielbetriebSpieler
= 1
janeinstand1 + zufall < grenze + 1
ja nein
stand2 + zufall < grenze + 1
ja nein
stand1erhöhen
msgBox (!)stand1 erniedrigen
stand2erhöhen
msgBox (!)stand2 erniedrigen
stand1 anzeigenSpieler = 2Buttontext ändern
stand2 anzeigenSpieler = 1Buttontext ändern
Struktogramm SpielbetriebSpieler
= 1
janeinstand1 + zufall < grenze + 1
ja nein
stand2 + zufall < grenze + 1
ja nein
stand1erhöhen
msgBox (!)stand1 erniedrigen
stand2erhöhen
msgBox (!)stand2 erniedrigen
stand1 anzeigenSpieler = 2Buttontext ändern
stand2 anzeigenSpieler = 1Buttontext ändernAuswertung
Struktogramm Auswertungstand1 = grenzeja nein
MsgBox(„Spieler 1 ist Sieger“)stand2 = grenzeja nein
MsgBox(„Spieler 2 ist Sieger“)stand1 = grenze und stand 2 = grenzeja nein
MsgBox(„Unentschieden“)Eventuell Löschen der bisherigen Werte
Vorsicht!
Hier ist ein Fehler drin.
Haben wir aber besprochen.
Bestimmen der Zufallszahl
Code:
Dim zufall As single
Zufall = Rnd()
label1.Text = zufall
Ein kleines Vorprogramm:Starten Sie erneut VB:Eine Form mit einem Button und einem Label:
Test des Zufallsgenerators
Es werden mit Hilfe der VB-Funktion zufällig Zahlen zwischen 0 und 0,999999 erzeugt.
Programm schließen und erneut starten...
Es werden immer die gleichen „Zufallszahlen“ erzeugt.
...von wegen Zufall
Randomize
Die Funktion Rnd arbeitet immer mit dem gleichen Startwert, dieser muss aber variabel sein:Einfügen der Zeile „Randomize“
Dim zufall As Single
Randomize()
zufall = Rnd()
label1.Text = zufall
2. Test
Funktioniert!!!
Aber was bringen uns Zahlen zwischen 0 und 0,999999?
Wir brauchen Zufallszahlen zwischen 1 und 6!
Die Funktion Int
Schneidet alle Nachkommastellen ab:Int(0,1234567) = 0
Dann hätten wir lauter Nullen.
Wenn wir aber mit 10 multiplizieren:0,23 * 10 = 2,3 Int(2,3) = 2
Ein Versuch mit Int...im Hilfsprogramm
Dim zufall As Single
Randomize()
zufall = Int(Rnd() * 6)
label1.Text = zufall
Und ein Test ergibt...
Test mit Int
... wir erhalten Zahlen zwischen 0 und 5!
Das Problem wird gelöst, indem wir...
Test mit Int
... wir erhalten Zahlen zwischen 0 und 5!
Das Problem wird gelöst, indem wir zu allen errechneten Zahlen 1 addieren:
Dim zufall As Single
Randomize()
zufall = Int(Rnd() * 6) + 1
label1.Text = zufall Geschafft!
Und los geht‘s
Nu müsstet ihr eigentlich klar kommen.