OOP/DOM-Scripting JavaScript - Praxistutorial 3 - Karten geben Teil 1
1. Die Abschnitte
- Einführung
- Vorbereitung
- Die Datenstruktur
- Karten geben Teil 1
- Karten geben Teil 2
- Karten tauschen Teil 1
- Karten tauschen Teil 2
2. Die ersten fünf Karten für den Spieler
... holen wir uns mittels einer entsprechenden Funktion, die wir in den Event-Handler des Links "Karten geben" einbauen. Der Code stellt sich dann so dar.
document.getElementById('p_geben').onclick = function()
{
var karten = poker.setCards(5);
}
Erläuterung
Hier kann man wunderbar erkennen, dass man auf direkt auf Methoden eines Literal-Objektes zugreifen kann, ohne vorher ein eigenes Objekt
erzeugen zu müssen. Man nimmt einfach den Namen und hängt die Methode hinten dran (poker.setCards
). Mit dem Parameterwert
sagen wir dann, dass wir fünf neue Karten brauchen. Warum dem so ist, zeige ich später.
3. Die Methode setCards
Was nun kommt, sieht ein wenig krude aus und viele denken, das kann man viel leichter programmieren. Hab ich auch gedacht. Aber bei JavaScript ist das ja so eine Sache. Ich will jetzt nicht auf die Details eingehen, aber das hier funktioniert wirklich.
setCards : function (num)
{
var count = 0;
var cardset = new Array();
while (count < num)
{
var card = this.checkCards();
if (false !== card)
{
cardset[count] = card;
count++;
}
}
return cardset;
},
Erläuterung
Zunächst mal werden zwei lokale(!) Variablen erzeugt, die erste (count
) für die Anzahl und die zweite für die Art der Karten.
Dann wird die folgende while
-Schleife so lange durchgezählt, bis wir die notwendige Anzahl von fünf (num
) Karten
haben. Warum dieses? Die Zahl ist doch bekannt. Ja, aber! Wir holen uns die Karten über einen Zufallsgenerator und da muss jedes Mal
überprüft werden, ob nicht schon eine Karte gezogen worden ist.
Der Übersichtlichkeit halber habe ich das in eine separate Methode namens checkCards
gepackt, die entweder die Karte oder
ein false
zurückliefert. Und bitte darauf achten! Methoden innerhalb eines Literals werden über this.Methodenname
angesteuert! Wenn denn nun checkCards
eine entsprechende Karte gefunden hat, so packen wir diese in das Array
cardset
und setzen als Index den Wert von count
. Letztere wird dann einfach um den Faktor eins erhöht. Damit
hätten wir ein sauberes Array, durchnummeriert von 0 bis 4.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt