Hauptmenü

Untermenü

OOP/DOM-Scripting JavaScript - Praxistutorial 3 - Karten geben Teil 1

1. Die Abschnitte

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