You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

72 lines
2.0 KiB

//Klasse Player für Spieler einer Uno Runde
class Player {
//Erstellt ein Spieler mit einem Namen und dem Spiel, in dem er teilnimmt
constructor(name, gameInstanz) {
this._game = gameInstanz; //Spiel, worin der Spieler ist
this._name = name; //Name des Spielers
this._turn = false; //Ob Spieler gerade am Zug
this._hand = []; //Deck des Spielers
this._canPlay = false //Ob spieler gerade Karte legen kann
}
//Lässt den Spieler eine Anzahl "amount" an Karten ziehen
drawCard(amount){
//Ziehe so viele Karten, wie amount übergeben wurde
for (let i = 0; i < amount; i++){
//Füge die erste Karte aus cardPool der Hand des Spielers hinzu
this._hand.push(this._game.cardPool[0]);
//Lösche die erste Karte aus cardPool
this._game.cardPool.splice(0, 1);
}
}
//Lässt den Spieler eine Karte in seiner Hand legen
//Parameter: Index vom Deck des Spielers, wo die Karte liegt
putCard(index){
//Karte muss hinterlegt haben, dass sie gelegt werden kann
if(!this._hand[index].canPut) return;
//Wenn eine Karte auf dem Tisch liegt, soll diese erst wieder dem cardPool hinzugefügt werden
if(this._game.cardOnDeck != null){
this._game.cardPool.push(this._game.cardOnDeck);
}
//Karte in der Hand wird auf den Tisch gelegt
this._game.cardOnDeck = this._hand[index];
//Karte wird aus dem Deck des Spielers entfernt
this._hand.splice(index, 1);
}
//Gibt den Namen eines Spielers zurück
get name() {
return this._name;
}
//Gibt zurück, ob der Spieler am Zug ist
get turn(){
return this._turn;
}
//Gibt zurück, ob der Spieler eine Karte legen kann
get canPlay(){
return this._canPlay;
}
//Gibt das SpielerDeck zurück
get hand(){
return this._hand;
}
}
//Exportiert Modul Player
module.exports = Player;