Zufallsprogrammierung Ein Würfelspiel Zufallsprogrammierung
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 Zufallszahl bestimmen Zufallszahl anzeigen Spielbetrieb Auswertung
Struktogramm Spielbetrieb Spieler = 1 ja nein stand1 + zufall < grenze + 1 ja nein stand2 + zufall < grenze + 1 ja nein stand1 erhöhen msgBox (!) stand1 erniedrigen stand2 erhöhen msgBox (!) stand2 erniedrigen stand1 anzeigen stand2 anzeigen Spieler = 2 Spieler = 1 Buttontext ändern Buttontext ändern
Struktogramm Spielbetrieb Spieler = 1 ja nein stand1 + zufall < grenze + 1 ja nein stand2 + zufall < grenze + 1 ja nein stand1 erhöhen msgBox (!) stand1 erniedrigen stand2 erhöhen msgBox (!) stand2 erniedrigen stand1 anzeigen stand2 anzeigen Spieler = 2 Spieler = 1 Buttontext ändern Buttontext ändern Auswertung
Struktogramm Auswertung stand1 = grenze ja nein Vorsicht! Hier ist ein Fehler drin. Haben wir aber besprochen. MsgBox(„Spieler 1 ist Sieger“) stand2 = grenze ja nein MsgBox(„Spieler 2 ist Sieger“) stand1 = grenze und stand 2 = grenze ja nein MsgBox(„Unentschieden“) Eventuell Löschen der bisherigen Werte
Bestimmen der Zufallszahl Ein kleines Vorprogramm: Starten Sie erneut VB: Eine Form mit einem Button und einem Label: Code: Dim zufall As single Zufall = Rnd() label1.Text = zufall
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: 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 Geschafft! ... 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.