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.

71 lines
2.0 KiB

  1. //Klasse Player für Spieler einer Uno Runde
  2. class Player {
  3. //Erstellt ein Spieler mit einem Namen und dem Spiel, in dem er teilnimmt
  4. constructor(name, gameInstanz) {
  5. this._game = gameInstanz; //Spiel, worin der Spieler ist
  6. this._name = name; //Name des Spielers
  7. this._turn = false; //Ob Spieler gerade am Zug
  8. this._hand = []; //Deck des Spielers
  9. this._canPlay = false //Ob spieler gerade Karte legen kann
  10. }
  11. //Lässt den Spieler eine Anzahl "amount" an Karten ziehen
  12. drawCard(amount){
  13. //Ziehe so viele Karten, wie amount übergeben wurde
  14. for (let i = 0; i < amount; i++){
  15. //Füge die erste Karte aus cardPool der Hand des Spielers hinzu
  16. this._hand.push(this._game.cardPool[0]);
  17. //Lösche die erste Karte aus cardPool
  18. this._game.cardPool.splice(0, 1);
  19. }
  20. }
  21. //Lässt den Spieler eine Karte in seiner Hand legen
  22. //Parameter: Index vom Deck des Spielers, wo die Karte liegt
  23. putCard(index){
  24. //Karte muss hinterlegt haben, dass sie gelegt werden kann
  25. if(!this._hand[index].canPut) return;
  26. //Wenn eine Karte auf dem Tisch liegt, soll diese erst wieder dem cardPool hinzugefügt werden
  27. if(this._game.cardOnDeck != null){
  28. this._game.cardPool.push(this._game.cardOnDeck);
  29. }
  30. //Karte in der Hand wird auf den Tisch gelegt
  31. this._game.cardOnDeck = this._hand[index];
  32. //Karte wird aus dem Deck des Spielers entfernt
  33. this._hand.splice(index, 1);
  34. }
  35. //Gibt den Namen eines Spielers zurück
  36. get name() {
  37. return this._name;
  38. }
  39. //Gibt zurück, ob der Spieler am Zug ist
  40. get turn(){
  41. return this._turn;
  42. }
  43. //Gibt zurück, ob der Spieler eine Karte legen kann
  44. get canPlay(){
  45. return this._canPlay;
  46. }
  47. //Gibt das SpielerDeck zurück
  48. get hand(){
  49. return this._hand;
  50. }
  51. }
  52. //Exportiert Modul Player
  53. module.exports = Player;