Gunnar Bittersmann: Fehler in eine if-Bedingung feststellen

Beitrag lesen

@@Uri:

nuqneH

Die Funktion teilekr13 soll z.B Kreuz König an einen der Spieler verteilen

Und für jede der 32 Karten eine eigene Funktion? Du kopierst den Code und änderst jeweils nur die Bezeichner für Funktion und Karte?

Das wäre ein sicheres Zeichen für schlechten Code. DRY! Don’t repeat yourself! Hieße: eine Funktion teile(karte) mit einem Parameter für die Karte.

Aber sorum wird das wohl nichts. Verteile nicht die geordneten Karten nacheinander zufällig auf die Spieler (dabei aufpassen, dass alle 8 Karten bekommen), sondern mische die Karten und verteile sie gleichmäßig auf die Spieler.

Und damit kein Spaghetti-Code dabei herauskommt, das Ganze objektorientiert. (<http://de.selfhtml.org/javascript/sprache/objekte.htm#eigene@title=Eigene Objekte definieren>)

  
/**  
 * Objekt für eine Karte  
 * @param suit Farbe  
 * @param rank Kartenwert  
 */  
function Card(suit, rank)  
{  
    this.suit = suit;  
    this.rank = rank;  
}  
  
/**  
 * Objekt für ganzes Kartespiel  
 */  
function Deck()  
{  
    var suits = ['♦', '♥', '♠', '♣'],  
        ranks = ['7', '8', '9', '10', 'J', 'Q', 'K', 'A'],  
        cards = [];  
  
    // fülle das cards-Array mit den verschiedenen Karten von ♦7 bis ♣A  
    for (var suitIndex = 0; suitIndex < suits.length; suitIndex++)  
    {  
        for (var rankIndex = 0; rankIndex < ranks.length; rankIndex++)  
        {  
            cards.push(new Card(suits[suitIndex], ranks[rankIndex]));  
        }  
    }  
  
    /**  
     * Mischen  
     */  
    this.shuffle = function ()  
    {  
        cards.sort(function(a,b) { return Math.round(Math.random()); });  
    }  
  
    /**  
     * Austeilen  
     * @param n Anzahl der Karten  
     * @return Array  
     */  
    this.deal = function (n)  
    {  
        return cards.splice(0, n);  
    }  
}  
  
/**  
 * Objekt für einen Spieler  
 * @param name Name  
 * @param hand Blatt  
 */  
function Player(name, hand)  
{  
    this.name = name;  
    this.hand = hand;  
}  
  
  
// erzeuge neues Kartenspiel  
var deck = new Deck();  
  
// mische die Karten  
deck.shuffle();  
  
// Array für 4 Spieler  
var numberOfPlayers = 4,  
    players = new Array(numberOfPlayers);  
  
// benenne Spieler und gib allen jeweils 8 Karten  
for (playerIndex = 0; playerIndex < players.length; playerIndex++)  
{  
    players[playerIndex] = new Player('Player #' + (playerIndex + 1), deck.deal(8));  
}  
  
console.log(players);  

Qapla'

--
„Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)