From d9ceeebcd5c129d81a6a847646815ff0acaecf1e Mon Sep 17 00:00:00 2001 From: Nicolas Fritz Date: Thu, 26 Jan 2023 00:38:58 +0100 Subject: [PATCH] =?UTF-8?q?refactoring:=20Getter=20Verwendung=20=C3=BCbera?= =?UTF-8?q?rbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- uno/web/Game.js | 33 ++++++++++++++--------------- uno/web/Player.js | 28 +++++++++++++----------- uno/web/cards/special/PlusAmount.js | 12 +++++++---- uno/web/uno.js | 1 + 4 files changed, 41 insertions(+), 33 deletions(-) diff --git a/uno/web/Game.js b/uno/web/Game.js index a88594e..ac30fc9 100644 --- a/uno/web/Game.js +++ b/uno/web/Game.js @@ -5,7 +5,7 @@ import Skip from "./cards/special/Skip.js"; import PlusAmount from "./cards/special/PlusAmount.js"; import Reverse from "./cards/special/Reverse.js"; import Player from "./Player.js"; -import {CARD_COLORS, style} from "./uno.js"; +import {CARD_COLORS} from "./uno.js"; //Um generatePool zu exportieren, muss es in eine Klasse konvertiert werden export default class Game { @@ -28,7 +28,7 @@ export default class Game { initGame(){ //CardPool wird generiert - this._cardPool = this.generatePool(); + this.cardPool = this.generatePool(); //Spieler werden erstellt this.createPlayers(this._playerAmount); @@ -37,17 +37,17 @@ export default class Game { //Startet das Spiel start(){ - if(this._currentPlayer !== -1) return; + if(this.currentPlayer !== -1) return; //Wenn das Spiel noch nicht initialisiert wurde, initialisiere es - if (this._cardPool.length === 0 || this._players.length === 0) + if (this.cardPool.length === 0 || this.players.length === 0) this.initGame(); let firstCardIndex = 0; let boolFirstSpecial = false; - if (this._rules !== null){ + if (this.rules !== null){ if('startCards' in this.rules) for (let i = 0; i < this.players.length; i++) this.players[i].drawCard(this.rules.startCards); @@ -72,19 +72,14 @@ export default class Game { } //Die Erste Karte wird auf den Tisch gelegt - this._cardOnDeck = this._cardPool[firstCardIndex]; - this._cardPool.splice(firstCardIndex,1); + this.cardOnDeck = this.cardPool[firstCardIndex]; + this.cardPool.splice(firstCardIndex,1); //Karten Funktion der Karte auf dem Deck ausführen this.cardOnDeck.putSelf(); } - // - gameLoop(){ - - } - //Gibt ein Array zurück mit allen Karten, die in einem Uno Spiel sind generatePool(){ @@ -132,7 +127,7 @@ export default class Game { //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)); + this.players.push(new Player("Player" + (i + 1), this)); } } @@ -177,21 +172,21 @@ export default class Game { for(let i = 0; i < currentPlayerCards.length; i++){ //Wenn Farbe oder Zahl gleich oder eine Karte, die keine Farbe hat - if(this._cardOnDeck.name.toString() === currentPlayerCards[i].name.toString() || + if(this.cardOnDeck.name.toString() === currentPlayerCards[i].name.toString() || this.cardOnDeck.color === currentPlayerCards[i].color || currentPlayerCards[i].color === CARD_COLORS[0] || this.cardOnDeck.color === CARD_COLORS[0]) { //Aktualisiere den Wert der Karte, sodass sie gelegt werden kann - this._players[this._currentPlayer].hand[i].canPut = true; + this.players[this.currentPlayer].hand[i].canPut = true; //Der Spieler kann nun Karten legen - this._players[this._currentPlayer].canPlay = true; + this.players[this.currentPlayer].canPlay = true; } else { //Sonst setze den Wert der Karte so, dass sie nicht gelegt werden kann - this._players[this._currentPlayer].hand[i].canPut = false; + this.players[this.currentPlayer].hand[i].canPut = false; } @@ -217,6 +212,10 @@ export default class Game { return this._cardPool; } + set cardPool(pool){ + this._cardPool = pool; + } + //Gibt das Array mit allen Spielern des Spiels zurück get players(){ return this._players; diff --git a/uno/web/Player.js b/uno/web/Player.js index e68118b..102e0e2 100644 --- a/uno/web/Player.js +++ b/uno/web/Player.js @@ -21,14 +21,14 @@ export default class Player { 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]); + this.hand.push(this.game.cardPool[0]); //Lösche die erste Karte aus cardPool - this._game.cardPool.splice(0, 1); + this.game.cardPool.splice(0, 1); } if(amount === 1) - this._game.nextTurn(); + this.game.nextTurn(); } @@ -37,29 +37,29 @@ export default class Player { putCard(index){ //Karte muss hinterlegt haben, dass sie gelegt werden kann if(!this.turn) return; - if(!this._hand[index].canPut) return; - if(this._turn === false) return; + if(!this.hand[index].canPut) return; + if(this.turn === false) return; //Wenn eine Karte auf dem Tisch liegt - if(this._game.cardOnDeck != null){ + if(this.game.cardOnDeck != null){ //Wenn eine "NONE" Color Karte gelegt wurde, resette die Farbe auf "NONE" - if(this._game.cardOnDeck.name === "CC" || this._game.cardOnDeck.name === "+4") - this._game.cardOnDeck.color = CARD_COLORS[0]; + if(this.game.cardOnDeck.name === "CC" || this._game.cardOnDeck.name === "+4") + this.game.cardOnDeck.color = CARD_COLORS[0]; //Füge die Karte dem Pool wieder hinzu - this._game.cardPool.push(this._game.cardOnDeck); + this.game.cardPool.push(this._game.cardOnDeck); } //Karte in der Hand wird auf den Tisch gelegt - this._game.cardOnDeck = this._hand[index]; + this.game.cardOnDeck = this._hand[index]; //Karte wird aus dem Deck des Spielers entfernt - this._hand.splice(index, 1); + this.hand.splice(index, 1); //führe Funktion der Karte aus - this._game.cardOnDeck.putSelf(); + this.game.cardOnDeck.putSelf(); } @@ -98,4 +98,8 @@ export default class Player { return this._hand; } + get game(){ + return this._game; + } + } \ No newline at end of file diff --git a/uno/web/cards/special/PlusAmount.js b/uno/web/cards/special/PlusAmount.js index 01fcfcd..b4d09c0 100644 --- a/uno/web/cards/special/PlusAmount.js +++ b/uno/web/cards/special/PlusAmount.js @@ -12,7 +12,7 @@ export default class PlusAmount extends Card { super((color === CARD_COLORS[0]) ? "+4" : "+2", color, gameInstanz); //Wenn keine Farbe beim Konstruktor übergeben wird, plus = 4, sonst plus = 2 - if (color === CARD_COLORS[0]) this._plus = 4; else this._plus = 2; + if (color === CARD_COLORS[0]) this.plus = 4; else this.plus = 2; } @@ -21,14 +21,14 @@ export default class PlusAmount extends Card { //Todo: Karten Stapeln Regel //lässt den nächsten Spieler den PlusAmount der Karte ziehen - this.game.players[this.game.nextPlayer()].drawCard(this._plus); + this.game.players[this.game.nextPlayer()].drawCard(this.plus); - if(this._plus === 4){ + if(this.plus === 4){ if(this.game.currentPlayer === -1) this.color = CARD_COLORS[Math.floor(Math.random() * 4) + 1]; else - this._color = this.game.players[this.game.currentPlayer].selectColor(); + this.color = this.game.players[this.game.currentPlayer].selectColor(); } //Logik von Card.js ausführen @@ -40,4 +40,8 @@ export default class PlusAmount extends Card { return this._plus; } + set plus(plus) { + this._plus = plus; + } + } \ No newline at end of file diff --git a/uno/web/uno.js b/uno/web/uno.js index c657e32..efe3576 100644 --- a/uno/web/uno.js +++ b/uno/web/uno.js @@ -10,6 +10,7 @@ let rules = { startCards: 5, firstPlaySpecial: true, } + $(()=>{ let game = new Game(2, rules);