From d3444b30247cf794af1bb4f16ac612c7156b61af Mon Sep 17 00:00:00 2001 From: Nicolas Fritz Date: Fri, 20 Jan 2023 21:55:47 +0100 Subject: [PATCH] refactoring: Codeformatierung und Kommentierung - Card.js - Game.js - Player.js --- uno/node/js/Game.js | 33 +++++++++++++++++++++++++-------- uno/node/js/Player.js | 26 ++++++++++++++++++++------ uno/node/js/cards/Card.js | 1 + 3 files changed, 46 insertions(+), 14 deletions(-) diff --git a/uno/node/js/Game.js b/uno/node/js/Game.js index b02c059..6e5677d 100644 --- a/uno/node/js/Game.js +++ b/uno/node/js/Game.js @@ -13,24 +13,32 @@ class Game { //Erstellt ein Spiel mit SpielerAnzahl und Array mit Regeln, initialisiert dann das Spiel constructor(playerAmount, rules) { - this._cardOnDeck = null; - this._currentPlayer = 0; - this._direction = 0; - this._players = []; - this._cardPool = [] + this._cardOnDeck = null; //Karte die auf dem Tisch liegt + this._currentPlayer = 0; //Aktueller Spieler Index im Player Array + this._direction = 0; //Spielrichtung + this._players = []; //Array mit allen Spielern drin + this._cardPool = [] //Pool aus Karten - this._playerAmount = playerAmount; - this._rules = rules; + this._playerAmount = playerAmount; //Anzahl der Spieler + this._rules = rules; //Array mit Regeln für das Spiel + //Spiel einrichten this.initGame(); } + //Richtet das Spiel ein initGame(){ + + //CardPool wird generiert this._cardPool = this.generatePool(); + + //Spieler werden erstellt this.createPlayers(this._playerAmount); + //Die Erste Karte wird auf den Tisch gelegt this._cardOnDeck = this._cardPool[0]; this._cardPool.splice(0,1); + } //Gibt ein Array zurück mit allen Karten, die in einem Uno Spiel sind @@ -68,18 +76,24 @@ class Game { } - pool.sort(()=> Math.random() - 0.5); //mischen + //Mischt das Array + pool.sort(()=> Math.random() - 0.5); //Array mit Karten wird zurückgegeben return pool; } + //Fügt die Spieler hinzu createPlayers(playerAmount){ + + //Erstelle so viele Spieler, wie bei Erstellung des Spiels übergeben wurden for (let i = 0; i < playerAmount; i++){ this._players.push(new Player("Player" + (i + 1), this)); } + } + //Beendet den Zug des aktuellen Spielers und beginnt den Zug des nächsten Spielers nextTurn(){ } @@ -88,14 +102,17 @@ class Game { return this._cardPool; } + //Gibt das Array mit allen Spielern des Spiels zurück get players(){ return this._players; } + //Gibt die aktuelle Karte auf dem Tisch zurück get cardOnDeck(){ return this._cardOnDeck; } + //Setzt die aktuelle Karte auf dem Tisch set cardOnDeck(card){ this._cardOnDeck = card; } diff --git a/uno/node/js/Player.js b/uno/node/js/Player.js index 7490560..1f5658a 100644 --- a/uno/node/js/Player.js +++ b/uno/node/js/Player.js @@ -1,35 +1,49 @@ //Klasse Player für Spieler einer Uno Runde class Player { - //Erstellt ein Spieler mit einem Namen + //Erstellt ein Spieler mit einem Namen und dem Spiel, in dem er teilnimmt constructor(name, gameInstanz) { - this._game = 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 = []; + this._hand = []; //Deck des Spielers this._canPlay = false //Ob spieler gerade Karte legen kann } - drawCard(cards){ - for (let i = 0; i < cards; i++){ + //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); - this._game.nextTurn(); } //Gibt den Namen eines Spielers zurück diff --git a/uno/node/js/cards/Card.js b/uno/node/js/cards/Card.js index 943a2a1..fd3c5f5 100644 --- a/uno/node/js/cards/Card.js +++ b/uno/node/js/cards/Card.js @@ -32,6 +32,7 @@ class Card { return this._onScreen; } + //Setzt, ob die Karte gelegt werden kann, oder nicht set canPut(bool){ this._canPut = bool; }