|
@ -5,7 +5,7 @@ import Skip from "./cards/special/Skip.js"; |
|
|
import PlusAmount from "./cards/special/PlusAmount.js"; |
|
|
import PlusAmount from "./cards/special/PlusAmount.js"; |
|
|
import Reverse from "./cards/special/Reverse.js"; |
|
|
import Reverse from "./cards/special/Reverse.js"; |
|
|
import Player from "./Player.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
|
|
|
//Um generatePool zu exportieren, muss es in eine Klasse konvertiert werden
|
|
|
export default class Game { |
|
|
export default class Game { |
|
@ -28,7 +28,7 @@ export default class Game { |
|
|
initGame(){ |
|
|
initGame(){ |
|
|
|
|
|
|
|
|
//CardPool wird generiert
|
|
|
//CardPool wird generiert
|
|
|
this._cardPool = this.generatePool(); |
|
|
|
|
|
|
|
|
this.cardPool = this.generatePool(); |
|
|
|
|
|
|
|
|
//Spieler werden erstellt
|
|
|
//Spieler werden erstellt
|
|
|
this.createPlayers(this._playerAmount); |
|
|
this.createPlayers(this._playerAmount); |
|
@ -37,17 +37,17 @@ export default class Game { |
|
|
|
|
|
|
|
|
//Startet das Spiel
|
|
|
//Startet das Spiel
|
|
|
start(){ |
|
|
start(){ |
|
|
if(this._currentPlayer !== -1) return; |
|
|
|
|
|
|
|
|
if(this.currentPlayer !== -1) return; |
|
|
|
|
|
|
|
|
//Wenn das Spiel noch nicht initialisiert wurde, initialisiere es
|
|
|
//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(); |
|
|
this.initGame(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let firstCardIndex = 0; |
|
|
let firstCardIndex = 0; |
|
|
let boolFirstSpecial = false; |
|
|
let boolFirstSpecial = false; |
|
|
|
|
|
|
|
|
if (this._rules !== null){ |
|
|
|
|
|
|
|
|
if (this.rules !== null){ |
|
|
if('startCards' in this.rules) |
|
|
if('startCards' in this.rules) |
|
|
for (let i = 0; i < this.players.length; i++) |
|
|
for (let i = 0; i < this.players.length; i++) |
|
|
this.players[i].drawCard(this.rules.startCards); |
|
|
this.players[i].drawCard(this.rules.startCards); |
|
@ -72,19 +72,14 @@ export default class Game { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//Die Erste Karte wird auf den Tisch gelegt
|
|
|
//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
|
|
|
//Karten Funktion der Karte auf dem Deck ausführen
|
|
|
this.cardOnDeck.putSelf(); |
|
|
this.cardOnDeck.putSelf(); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
gameLoop(){ |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//Gibt ein Array zurück mit allen Karten, die in einem Uno Spiel sind
|
|
|
//Gibt ein Array zurück mit allen Karten, die in einem Uno Spiel sind
|
|
|
generatePool(){ |
|
|
generatePool(){ |
|
|
|
|
|
|
|
@ -132,7 +127,7 @@ export default class Game { |
|
|
|
|
|
|
|
|
//Erstelle so viele Spieler, wie bei Erstellung des Spiels übergeben wurden
|
|
|
//Erstelle so viele Spieler, wie bei Erstellung des Spiels übergeben wurden
|
|
|
for (let i = 0; i < playerAmount; i++){ |
|
|
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++){ |
|
|
for(let i = 0; i < currentPlayerCards.length; i++){ |
|
|
|
|
|
|
|
|
//Wenn Farbe oder Zahl gleich oder eine Karte, die keine Farbe hat
|
|
|
//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 || |
|
|
this.cardOnDeck.color === currentPlayerCards[i].color || |
|
|
currentPlayerCards[i].color === CARD_COLORS[0] || |
|
|
currentPlayerCards[i].color === CARD_COLORS[0] || |
|
|
this.cardOnDeck.color === CARD_COLORS[0]) { |
|
|
this.cardOnDeck.color === CARD_COLORS[0]) { |
|
|
|
|
|
|
|
|
//Aktualisiere den Wert der Karte, sodass sie gelegt werden kann
|
|
|
//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
|
|
|
//Der Spieler kann nun Karten legen
|
|
|
this._players[this._currentPlayer].canPlay = true; |
|
|
|
|
|
|
|
|
this.players[this.currentPlayer].canPlay = true; |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
|
|
|
|
|
|
//Sonst setze den Wert der Karte so, dass sie nicht gelegt werden kann
|
|
|
//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; |
|
|
return this._cardPool; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
set cardPool(pool){ |
|
|
|
|
|
this._cardPool = pool; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//Gibt das Array mit allen Spielern des Spiels zurück
|
|
|
//Gibt das Array mit allen Spielern des Spiels zurück
|
|
|
get players(){ |
|
|
get players(){ |
|
|
return this._players; |
|
|
return this._players; |
|
|