Für die Codelabs auf diesem Weg erstellen Sie eine Android-App mit Würfelrolle. Wenn der Nutzer diese Würfel ausführt, wird ein zufälliges Ergebnis generiert. Das Ergebnis berücksichtigt die Anzahl der Seiten mit Würfeln. So können beispielsweise nur Werte von 1 bis 6 von einem sechsseitigen Würfel gerollt werden.
So wird die endgültige App aussehen.
Damit Sie sich auf die neuen Konzepte der App konzentrieren können, verwenden Sie das browserbasierte Kotlin-Programmiertool, um die Hauptfunktionen Ihrer App zu erstellen. Das Programm gibt Ihre Ergebnisse an die Konsole aus. Später implementieren Sie die Benutzeroberfläche in Android Studio.
In diesem ersten Codelab erstellst du ein Kotlin-Programm, das rollierende Würfel simuliert und eine Zufallszahl wie eine Würfel ausgibt.
Vorbereitung
- Informationen zum Öffnen, Bearbeiten und Ausführen von Code auf https://try.kotlinlang.org/
- Sie können ein Kotlin-Programm erstellen und ausführen, das Variablen und Funktionen verwendet und ein Ergebnis an die Konsole ausgibt.
- Formatieren Sie Zahlen in Texten mit einer Stringvorlage und der Notation
${variable}
.
Lerninhalte
- So werden programmatisch zufällige Zahlen generiert, um Würfelrollen zu simulieren.
- Code-Struktur mithilfe einer
Dice
-Klasse mit einer Variable und einer Methode. - So erstellen Sie eine Objektinstanz einer Klasse, ändern ihre Variablen und rufen ihre Methoden auf.
Aufgaben
- Ein Kotlin-Programm im browserbasierten Kotlin-Programmiertool, mit dem eine zufällige Auswahl durchgeführt werden kann.
Voraussetzungen
- Einen Computer mit einer Internetverbindung
Spiele haben oft ein zufälliges Element. Sie können eine zufällige Prämie erhalten oder eine zufällige Anzahl von Schritten auf dem Spielfeld erwerben. In Ihrem Alltag können Sie Zufallszahlen und Buchstaben verwenden, um sichere Passwörter zu generieren!
Anstelle des tatsächlichen Würfels kannst du ein Programm schreiben, das rollierende Würfel simuliert. Bei jedem Würfeln kann das Ergebnis eine beliebige Zahl im Bereich der möglichen Werte sein. Glücklicherweise brauchen Sie für so ein Programm keinen eigenen Zufallszahlengenerator zu erstellen. Die meisten Programmiersprachen, einschließlich Kotlin, haben eine integrierte Möglichkeit zum Generieren von Zufallszahlen. In dieser Aufgabe verwenden Sie den Kotlin-Code, um eine Zufallszahl zu generieren.
Startcode einrichten
- Öffnen Sie in Ihrem Browser die Website https://try.kotlinlang.org/.
- Den gesamten Code im Code-Editor löschen und durch den folgenden Code ersetzen Dies ist die
main()
-Funktion, mit der Sie in früheren Codelabs gearbeitet haben. Weitere Informationen finden Sie unter Ihr erstes Kotlin-Programm schreiben.
fun main() {
}
Zufallsfunktion verwenden
Um einen Würfel zu würfeln, brauchst du eine Möglichkeit, alle gültigen Würfelwerte darzustellen. Für reguläre 6-seitige Würfel sind folgende Würfel zulässig: 1, 2, 3, 4, 5 und 6.
Bisher haben Sie gelernt, dass es Datentypen wie Int
für Ganzzahlen und String
für Text gibt. IntRange
ist ein anderer Datentyp und stellt einen Bereich von Ganzzahlen von einem Startpunkt zu einem Endpunkt dar. IntRange
ist ein geeigneter Datentyp zur Darstellung möglicher Werte, die mit einem Würfel produziert werden können.
- Definieren Sie in der
main()
-Funktion eine Variable alsval
mit dem NamendiceRange
. Du kannst ihn einemIntRange
zwischen 1 und 6 zuweisen, der den Bereich der Ganzzahlen darstellt, die durch sechsseitige Würfel gerundet werden können.
val diceRange = 1..6
1..6
ist ein Kotlin-Bereich, weil er eine Startnummer, zwei Punkte gefolgt von einer Endzahl (keine Leerzeichen dazwischen) enthält. Weitere Beispiele für Ganzzahlbereiche sind 2..5
für die Zahlen 2 bis 5 und 100..200
für die Zahlen 100 bis 200.
Ähnlich wie beim Aufrufen von println()
durch das System in Bezug auf das Drucken des angegebenen Textes können Sie mit der Funktion random()
eine Zufallszahl für einen bestimmten Bereich generieren und zurückgeben. Sie können das Ergebnis wie bisher in einer Variablen speichern.
- Definieren Sie in
main()
eine Variable alsval
namensrandomNumber
. - Setzen Sie
randomNumber
auf den Wert des Ergebnisses vonrandom()
im BereichdiceRange
, wie unten dargestellt.
val randomNumber = diceRange.random()
Beachten Sie, dass random()
in diceRange
mit einem Punkt oder Punkt zwischen der Variablen und dem Funktionsaufruf aufgerufen wird. Dies lässt sich als „" generieren, dass eine Zufallszahl aus „diceRange
“ generiert wird. Das Ergebnis wird dann in der Variable randomNumber
gespeichert.
- Wenn Sie die zufällig generierte Zahl sehen möchten, verwenden Sie die Stringformatierung (auch als „Stringvorlage&“ bezeichnet)
${randomNumber}
, um sie zu drucken (siehe unten).
println("Random number: ${randomNumber}")
Der fertige Code sollte so aussehen.
fun main() {
val diceRange = 1..6
val randomNumber = diceRange.random()
println("Random number: ${randomNumber}")
}
- Führen Sie Ihren Code mehrmals aus. Jedes Mal, wenn Sie verschiedene Ausgaben haben, sollte eine Ausgabe angezeigt werden, die unterschiedliche Zufallszahlen umfasst.
Random number: 4
Wenn du würfelst, sind sie echte Objekte in deinen Händen. Der Code, den Sie gerade geschrieben haben, funktioniert zwar bestens, man kann sich jedoch kaum vorstellen, dass es um einen Würfel geht. Ein Programm lässt sich besser organisieren, wenn es besser mit den vorhandenen Werten zusammenhängt. Es wäre also toll, wenn du programmatische Würfel hast!
Die Würfelfunktion ist im Wesentlichen gleich. Sie haben dieselben Eigenschaften, wie z. B. Seiten, und ein Verhalten wie das Verschieben. In Kotlin können Sie einen programmatischen Entwurf eines Würfels erstellen, der angibt, dass Würfel Seiten haben und eine Zufallszahl würfeln können. Dieser Entwurf wird als Klasse bezeichnet.
Aus dieser Klasse können Sie dann tatsächliche Würfelobjekte erstellen, die als Objektinstanzen bezeichnet werden. So können Sie z. B. einen 12-seitigen Würfel oder einen vierseitigen Würfel erstellen.
Würfelklasse definieren
In den folgenden Schritten definierst du eine neue Klasse namens Dice
, die einen rollbaren Würfel darstellt.
- Löschen Sie den Code aus der Funktion
main()
, um den Code wie gewünscht zu entfernen.
fun main() {
}
- Fügen Sie unter dieser
main()
-Funktion eine leere Zeile ein und fügen Sie dann Code ein, um die KlasseDice
zu erstellen. Wie unten gezeigt, beginnen Sie mit dem Keywordclass
, gefolgt vom Namen der Klasse, gefolgt von einer öffnenden und schließenden geschweiften Klammer. Lassen Sie den Abstand zwischen den geschweiften Klammern stehen, um den Code für den Kurs einzufügen.
class Dice {
}
Innerhalb einer Klassendefinition können Sie mithilfe von Variablen eine oder mehrere Eigenschaften für die Klasse angeben. Echte Würfel können aus einer Reihe von Seiten, einer Farbe oder einer Gewichtung bestehen. Bei dieser Aufgabe konzentrieren Sie sich auf die Anzahl der Seiten Würfel.
- Füge in der Klasse
Dice
einenvar
mit dem Namensides
für die Anzahl der Seiten hinzu, die dein Würfel haben wird. Legen Siesides
auf 6 fest.
class Dice {
var sides = 6
}
Das war's. Du hast jetzt eine sehr einfache Klasse, die Würfel darstellt.
Eine Instanz der Würfelklasse erstellen
Mit dieser Dice
-Klasse haben Sie einen Plan, was ein Würfel ist. Um einen echten Würfel in Ihrem Programm zu haben, müssen Sie eine Dice
-Objektinstanz erstellen. (Wenn Sie drei Würfel hätten, würden Sie drei Objektinstanzen erstellen.)
- Um eine Objektinstanz von
Dice
zu erstellen, erstellen Sie in dermain()
-Funktion einenval
mit dem NamenmyFirstDice
und initialisieren Sie ihn als Instanz der KlasseDice
. Die Klammern nach dem Klassennamen weisen darauf hin, dass Sie eine neue Objektinstanz aus der Klasse erstellen.
fun main() {
val myFirstDice = Dice()
}
Nachdem Sie nun ein myFirstDice
-Objekt haben, das aus dem Entwurf erstellt wurde, können Sie auf die zugehörigen Properties zugreifen. Die einzige Property von Dice
ist sides
. Der Zugriff auf eine Property erfolgt über die Notation &dots. Wenn du also auf die sides
-Property von myFirstDice
zugreifen möchtest, rufe myFirstDice.sides
auf, was ausgesprochen wird:myFirstDice
Punkt sides
"
- Fügen Sie unter der Deklaration von
myFirstDice
eineprintln()
-Anweisung hinzu, um die Anzahl vonsides
vonmyFirstDice.
auszugeben
println(myFirstDice.sides)
Der Code sollte so aussehen:
fun main() {
val myFirstDice = Dice()
println(myFirstDice.sides)
}
class Dice {
var sides = 6
}
- Führe dein Programm aus. Es sollte die Anzahl von
sides
ausgeben, die in derDice
-Klasse definiert ist.
6
Du hast jetzt eine Dice
-Klasse und einen tatsächlichen Würfel myFirstDice
mit sechs sides
.
Gemeinsam würfeln!
Würfelspiele
Sie haben zuvor eine Funktion verwendet, um die Kuchenebenen zu drucken. Das Rolling von Würfeln kann ebenfalls als Funktion implementiert werden. Da alle Würfel gewürfelt werden können, haben Sie die Möglichkeit, in der Dice
-Klasse eine entsprechende Funktion hinzuzufügen. Eine Funktion, die in einer Klasse definiert ist, wird auch als Methode bezeichnet.
- Fügen Sie in der Klasse
Dice
unter der Variablesides
eine leere Zeile ein und erstellen Sie dann eine neue Funktion, um die Würfel zu rollen. Beginnen Sie mit dem Kotlin-Keywordfun
, gefolgt vom Namen der Methode, gefolgt von den Klammern()
und öffnenden und schließenden geschweiften Klammern{}
. Sie können eine leere Zeile zwischen den geschweiften Klammern lassen, um Platz für mehr Code zu schaffen, wie unten dargestellt. Ihr Kurs sollte so aussehen.
class Dice {
var sides = 6
fun roll() {
}
}
Wenn du einen sechsseitigen Würfel würfelst, erhältst du eine Zufallszahl zwischen 1 und 6.
- Erstelle in der
roll()
-Methode einval randomNumber
. Weisen Sie ihr eine zufällige Zahl im Bereich1..6
zu. Verwenden Sie die Punktschreibweise, umrandom()
für den Bereich aufzurufen.
val randomNumber = (1..6).random()
- Geben Sie die zufällige Zahl in der Konsole aus. Ihre fertige
roll()
-Methode sollte dem folgenden Code entsprechen.
fun roll() {
val randomNumber = (1..6).random()
println(randomNumber)
}
- Um
myFirstDice
zu rollen,main()
rufst du die Methoderoll()
aufmyFirstDice
auf. Sie rufen eine Methode mit der &Punkt-Notation" auf. Um dieroll()
-Methode vonmyFirstDice
aufzurufen, geben Sie alsomyFirstDice.roll()
ein. Der Text ist so ausgesprochen:myFirstDice
Punktroll()
".
myFirstDice.roll()
Der fertige Code sollte so aussehen.
fun main() {
val myFirstDice = Dice()
println(myFirstDice.sides)
myFirstDice.roll()
}
class Dice {
var sides = 6
fun roll() {
val randomNumber = (1..6).random()
println(randomNumber)
}
}
- Führen Sie Ihren Code aus. Das Ergebnis einer zufälligen würfelnden Rolle sollte unter der Anzahl der Seiten zu sehen sein. Führen Sie Ihren Code mehrmals aus und beachten Sie, dass die Anzahl der Seiten gleich bleibt und sich der Würfelwert ändert.
6 4
Glückwunsch! Sie haben eine Dice
-Klasse mit einer sides
-Variable und einer roll()
-Funktion definiert. Sie haben in der main()
-Funktion eine neue Dice
-Objektinstanz erstellt und dann die Methode roll()
aufgerufen, um eine Zufallszahl zu generieren.
Sie drucken derzeit den Wert von randomNumber
in der Funktion roll()
aus. Das ist hervorragend. Manchmal ist es jedoch nützlicher, das Ergebnis einer Funktion an eine beliebige Methode zurückzugeben. So kannst du beispielsweise das Ergebnis der Methode roll()
einer Variablen zuweisen und dann einen Spieler um diesen Wert verschieben. Lass uns wissen, wie das funktioniert.
- Ändern Sie in
main()
die Zeile „myFirstDice.roll()
“. Erstellen Sie eineval
namensdiceRoll
. Legen Sie sie auf den Wert fest, der von der Methoderoll()
zurückgegeben wird.
val diceRoll = myFirstDice.roll()
Damit wird noch nichts unternommen, da roll()
noch nichts zurückgibt. Damit dieser Code wie vorgesehen funktioniert, muss roll()
etwas zurückgeben.
In früheren Codelabs haben Sie gelernt, dass Sie einen Datentyp angeben müssen, um Argumente für Funktionen einzugeben. Ebenso müssen Sie einen Datentyp angeben, der die Funktion zurückgibt.
- Ändern Sie die Funktion
roll()
, um festzulegen, welche Art von Daten zurückgegeben werden soll. In diesem Fall ist die ZufallszahlInt
. Der Rückgabetyp ist alsoInt
. Die Syntax zum Angeben des Rückgabetyps lautet: Geben Sie nach dem Namen der Funktion einen Doppelpunkt, ein Leerzeichen und dann das KeywordInt
für den Rückgabetyp der Funktion ein. Die Funktionsdefinition sollte folgendermaßen aussehen:
fun roll(): Int {
- Führen Sie diesen Code aus. In der Problemansicht wird eine Fehlermeldung angezeigt. Sie lautet:
A ‘return' expression is required in a function with a block body.
Sie haben die Funktionsdefinition so geändert, dass ein Int
zurückgegeben wird, aber das System beschwert sich, dass der
Code gibt kein Int
zurück. Mit „Blocktext“ oder „Funktionstext“ wird der Code zwischen den geschweiften Klammern einer Funktion angegeben. Sie können diesen Fehler beheben, indem Sie mit einer return
-Anweisung am Ende des Funktionstexts einen Wert von einer Funktion zurückgeben.
- Entfernen Sie in
roll()
dieprintln()
-Anweisung und ersetzen Sie sie durch einereturn
-Anweisung fürrandomNumber
. Die Funktionroll()
sollte so aussehen:
fun roll(): Int {
val randomNumber = (1..6).random()
return randomNumber
}
- Entferne in
main()
die Druckanweisung für die Würfel. - Fügen Sie eine Anweisung hinzu, um den Wert von
sides
unddiceRoll
in einem informativen Satz auszudrucken. Die fertigemain()
-Funktion sollte ungefähr dem unten stehenden Code entsprechen.
fun main() {
val myFirstDice = Dice()
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.sides} sided dice rolled ${diceRoll}!")
}
- Führen Sie Ihren Code aus und die Ausgabe sollte in etwa so aussehen.
Your 6 sided dice rolled 4!
Hier ist Ihr gesamter Code.
fun main() {
val myFirstDice = Dice()
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.sides} sided dice rolled ${diceRoll}!")
}
class Dice {
var sides = 6
fun roll(): Int {
val randomNumber = (1..6).random()
return randomNumber
}
}
Nicht alle Würfel haben 6 Seiten. Würfel ist in allen Formen und Größen verfügbar: 4 Seiten, 8 Seiten, bis zu 120 Seiten!
- Ändern Sie in Ihrer
Dice
-Klasse in der Methoderoll()
den hartcodierten1..6
so, dass stattdessensides
verwendet wird, sodass der Bereich und damit die zufällig generierte Zahl immer für die Anzahl der Seiten richtig sind.
val randomNumber = (1..sides).random()
- Ändern Sie in der Funktion
main()
unten und nach dem Drucken der Würfel den Wertsides
von meinemFirstDice
auf 20.
myFirstDice.sides = 20
- Kopieren Sie die vorhandene Druckausgabe und fügen Sie sie unten ein, nachdem Sie die Anzahl der Seiten geändert haben.
- Ersetze das Drucken von
diceRoll
durch das Drucken des Ergebnisses der Methoderoll()
inmyFirstDice
.
println("Your ${myFirstDice.sides} sided dice has rolled a ${myFirstDice.roll()}!")
Dein Programm sollte folgendermaßen aussehen.
fun main() {
val myFirstDice = Dice()
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.sides} sided dice rolled ${diceRoll}!")
myFirstDice.sides = 20
println("Your ${myFirstDice.sides} sided dice rolled ${myFirstDice.roll()}!")
}
class Dice {
var sides = 6
fun roll(): Int {
val randomNumber = (1..sides).random()
return randomNumber
}
}
- Wenn du dein Programm durchführst, solltest du eine Nachricht für den sechsseitigen Würfel und eine zweite für den 20-seitigen Würfel sehen.
Your 6 sided dice rolled 3! Your 20 sided dice rolled 15!
Die Idee, einen Kurs zu vermitteln, besteht darin, eine Sache zu repräsentieren – oft im realen Leben. In diesem Fall stellt die Klasse Dice
einen physischen Würfel dar. In der Praxis kann die Zahl der Seiten nicht verändert werden. Wenn du eine unterschiedliche Anzahl von Seiten möchtest, musst du einen anderen Würfel erhalten. Programmgesteuert bedeutet dies, dass Sie keine neue Würfelobjektinstanz mit der Anzahl der benötigten Seiten erstellen müssen, anstatt die seitliche Eigenschaft einer vorhandenen Dice
Objektinstanz zu ändern.
In dieser Aufgabe ändern Sie die Klasse Dice
, sodass Sie beim Erstellen einer neuen Instanz die Anzahl der Seiten angeben. Ändern Sie die Klassendefinition Dice
, um ein Argument für die Anzahl der Seiten zu akzeptieren. So ähnlich kann eine Funktion Argumente für die Eingabe annehmen.
- Ändern Sie die
Dice
-Klassendefinition so, dass ein Ganzzahlargument mit dem NamennumSides
akzeptiert wird. Der Code in Ihrem Kurs ändert sich nicht.
class Dice(val numSides: Int) {
// Code inside does not change.
}
- Löschen Sie innerhalb der Klasse
Dice
die Variablesides
, da Sie jetztnumSides
verwenden können. - Korrigieren Sie außerdem den Bereich, um
numSides
zu verwenden.
Ihre Dice
-Klasse sollte so aussehen.
class Dice (val numSides: Int) {
fun roll(): Int {
val randomNumber = (1..numSides).random()
return randomNumber
}
}
Wenn Sie diesen Code ausführen, werden Ihnen viele Fehler angezeigt, weil Sie main()
aktualisieren müssen, um die Änderungen an der Klasse Dice
verwenden zu können.
- In
main()
musst du die Anzahl der Seiten als Argument an dieDice
-Klasse übergeben, ummyFirstDice
mit sechs Seiten zu erstellen.
val myFirstDice = Dice(6)
- Ändern Sie in der Druckausgabe die Option
sides
innumSides
. - Darunter löschen Sie den Code, der
sides
in 20 ändert, weil die Variable nicht mehr existiert. - Löschen Sie auch die Anweisung
println
darunter.
Die main()
-Funktion sollte wie unten beschrieben aussehen. Wenn Sie sie ausführen, sollten keine Fehler auftreten.
fun main() {
val myFirstDice = Dice(6)
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.numSides} sided dice rolled ${diceRoll}!")
}
- Füge nach dem Drucken der ersten Würfel Code hinzu, um ein zweites
Dice
-Objekt namensmySecondDice
mit 20 Seiten zu erstellen und zu drucken.
val mySecondDice = Dice(20)
- Fügen Sie eine Druckanweisung hinzu, die den zurückgegebenen Wert dreht und druckt.
println("Your ${mySecondDice.numSides} sided dice rolled ${mySecondDice.roll()}!")
- Die fertige
main()
-Funktion sollte so aussehen.
fun main() {
val myFirstDice = Dice(6)
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.numSides} sided dice rolled ${diceRoll}!")
val mySecondDice = Dice(20)
println("Your ${mySecondDice.numSides} sided dice rolled ${mySecondDice.roll()}!")
}
class Dice (val numSides: Int) {
fun roll(): Int {
val randomNumber = (1..numSides).random()
return randomNumber
}
}
- Führen Sie das abgeschlossene Programm aus. Die Ausgabe sollte in etwa so aussehen.
Your 6 sided dice rolled 5! Your 20 sided dice rolled 7!
Eine gute Formulierung ist besser. Sie können die Variable randomNumber
entfernen und die Zufallszahl direkt zurückgeben.
- Ändern Sie die
return
-Anweisung, um die Zufallszahl direkt zurückzugeben.
fun roll(): Int {
return (1..numSides).random()
}
In der zweiten Druckanweisung setzen Sie den Aufruf zum Abrufen der Zufallszahl in die String-Vorlage. Sie können die Variable diceRoll
entfernen, indem Sie diesen Schritt in der ersten Druckanweisung ausführen.
- Rufen Sie
myFirstDice.roll()
in der Stringvorlage auf und löschen Sie die VariablediceRoll
. Die ersten beiden Zeilen Ihres „main()“-Codes sehen jetzt so aus.
val myFirstDice = Dice(6)
println("Your ${myFirstDice.numSides} sided dice rolled ${myFirstDice.roll()}!")
- Wenn Sie den Code ausführen, sollten Sie keinen Unterschied machen.
Das ist der letzte Code nach der Refaktorierung .
fun main() {
val myFirstDice = Dice(6)
println("Your ${myFirstDice.numSides} sided dice rolled ${myFirstDice.roll()}!")
val mySecondDice = Dice(20)
println("Your ${mySecondDice.numSides} sided dice rolled ${mySecondDice.roll()}!")
}
class Dice (val numSides: Int) {
fun roll(): Int {
return (1..numSides).random()
}
}
fun main() {
val myFirstDice = Dice(6)
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.numSides} sided dice rolled ${diceRoll}!")
val mySecondDice = Dice(20)
println("Your ${mySecondDice.numSides} sided dice rolled ${mySecondDice.roll()}!")
}
class Dice (val numSides: Int) {
fun roll(): Int {
return (1..numSides).random()
}
}
- Rufen Sie die Funktion
random()
fürIntRange
auf, um eine Zufallszahl zu generieren:(1..6).random()
- Klassen sind wie ein Entwurf eines Objekts. Sie können Eigenschaften und Verhaltensweisen definieren und als Variablen und Funktionen implementiert werden.
- Eine Instanz einer Klasse stellt ein Objekt dar, häufig ein physisches Objekt, beispielsweise einen Würfel. Sie können die Aktionen für das Objekt aufrufen und seine Attribute ändern.
- Sie können beim Erstellen einer Instanz die Eingabe an eine Klasse übergeben, indem Sie ein Argument für die Klassendefinition angeben. Beispiel:
class Dice(val numSides: Int)
und erstellen Sie dann eine Instanz mitDice(6)
. - Funktionen können etwas zurückgeben. Geben Sie den Datentyp an, der in der Funktionsdefinition zurückgegeben werden soll, und verwenden Sie eine
return
-Anweisung im Funktionstext, um etwas zurückzugeben. Beispiel:fun example(): Int { return 5 }
Gehen Sie so vor:
- Gib der
Dice
-Klasse ein weiteres Farbattribut und erstelle mehrere Würfel mit unterschiedlicher Anzahl von Seiten und Farben. - Erstellen Sie eine
Coin
-Klasse, damit Sie sie umdrehen können, eine Instanz der Klasse erstellen und ein paar Münzen werfen. Wie würden Sie die Zufallszahl()-Funktion mit einem Bereich verwenden, um die Münze zu werfen?