Browse Source

Spieler drawCard() + UnitTest

- moved Files in Node Uno-Ordner
main
Nicolas Fritz 2 years ago
parent
commit
6b7654663e
  1. 4
      uno/index.html
  2. 19
      uno/node/js/Game.js
  3. 10
      uno/node/js/Player.js
  4. 0
      uno/node/js/cards/Card.js
  5. 0
      uno/node/js/cards/special/ChooseColor.js
  6. 0
      uno/node/js/cards/special/PlusAmount.js
  7. 0
      uno/node/js/cards/special/Reverse.js
  8. 0
      uno/node/js/cards/special/Skip.js
  9. 2
      uno/node/js/uno.js
  10. 0
      uno/node/tests/test_Card.test.js
  11. 0
      uno/node/tests/test_Game.test.js
  12. 28
      uno/node/tests/test_Player.test.js
  13. 0
      uno/node/tests/test_Uno.test.js

4
uno/index.html

@ -5,7 +5,7 @@
<title>Uno</title> <title>Uno</title>
</head> </head>
<body> <body>
<script type="module" src="js/uno.js"></script>
<script type="module" src="node/js/Game.js"></script>
<script type="module" src="node/js/uno.js"></script>
</body> </body>
</html> </html>

19
uno/js/Game.js → uno/node/js/Game.js

@ -1,10 +1,11 @@
//Imports //Imports
const uno = require("./uno");
const Card = require("./cards/Card"); const Card = require("./cards/Card");
const ChooseColor = require("./cards/special/ChooseColor"); const ChooseColor = require("./cards/special/ChooseColor");
const Skip = require("./cards/special/Skip"); const Skip = require("./cards/special/Skip");
const PlusAmount = require("./cards/special/PlusAmount"); const PlusAmount = require("./cards/special/PlusAmount");
const Reverse = require("./cards/special/Reverse"); const Reverse = require("./cards/special/Reverse");
const uno = require("./uno");
const Player = require("./Player");
//Um generatePool zu exportieren, muss es in eine Klasse konvertiert werden //Um generatePool zu exportieren, muss es in eine Klasse konvertiert werden
class Game { class Game {
@ -12,6 +13,11 @@ class Game {
//Erstellt ein Spiel mit SpielerAnzahl und Array mit Regeln, initialisiert dann das Spiel //Erstellt ein Spiel mit SpielerAnzahl und Array mit Regeln, initialisiert dann das Spiel
constructor(playerAmount, rules) { constructor(playerAmount, rules) {
this._cardOnDeck = null;
this._currentPlayer = 0;
this._direction = 0;
this._players = [];
this._playerAmount = playerAmount; this._playerAmount = playerAmount;
this._rules = rules; this._rules = rules;
@ -20,6 +26,7 @@ class Game {
initGame(){ initGame(){
this._cardPool = this.generatePool(); this._cardPool = this.generatePool();
this.createPlayers(this._playerAmount);
} }
//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
@ -61,11 +68,21 @@ class Game {
return pool; return pool;
} }
createPlayers(playerAmount){
for (let i = 0; i < playerAmount; i++){
this._players.push(new Player("Player" + (i + 1), this));
}
}
//Gib den Pool mit allen UnoKarten zurück //Gib den Pool mit allen UnoKarten zurück
get cardPool(){ get cardPool(){
return this._cardPool; return this._cardPool;
} }
get players(){
return this._players;
}
} }
//Exportiert Modul Game //Exportiert Modul Game

10
uno/js/Player.js → uno/node/js/Player.js

@ -2,8 +2,9 @@
class Player { class Player {
//Erstellt ein Spieler mit einem Namen //Erstellt ein Spieler mit einem Namen
constructor(name) {
constructor(name, gameInstanz) {
this._game = gameInstanz;
this._name = name; //Name des Spielers this._name = name; //Name des Spielers
this._turn = false; //Ob Spieler gerade am Zug this._turn = false; //Ob Spieler gerade am Zug
this._hand = []; this._hand = [];
@ -11,6 +12,13 @@ class Player {
} }
drawCard(cards){
for (let i = 0; i < cards; i++){
this._hand.push(this._game.cardPool[0]);
this._game.cardPool.splice(0, 1);
}
}
//Gibt den Namen eines Spielers zurück //Gibt den Namen eines Spielers zurück
get name() { get name() {
return this._name; return this._name;

0
uno/js/cards/Card.js → uno/node/js/cards/Card.js

0
uno/js/cards/special/ChooseColor.js → uno/node/js/cards/special/ChooseColor.js

0
uno/js/cards/special/PlusAmount.js → uno/node/js/cards/special/PlusAmount.js

0
uno/js/cards/special/Reverse.js → uno/node/js/cards/special/Reverse.js

0
uno/js/cards/special/Skip.js → uno/node/js/cards/special/Skip.js

2
uno/js/uno.js → uno/node/js/uno.js

@ -4,4 +4,4 @@ const CARD_COLORS = ["NONE", "BLUE", "GREEN", "RED", "YELLOW"];
//Exportiert CARD_COLORS //Exportiert CARD_COLORS
module.exports = { module.exports = {
CARD_COLORS: CARD_COLORS, CARD_COLORS: CARD_COLORS,
}
}

0
uno/tests/test_Card.test.js → uno/node/tests/test_Card.test.js

0
uno/tests/test_Game.test.js → uno/node/tests/test_Game.test.js

28
uno/tests/test_Player.test.js → uno/node/tests/test_Player.test.js

@ -2,6 +2,7 @@
const Player = require('../js/Player'); const Player = require('../js/Player');
const Card = require("../js/cards/Card"); const Card = require("../js/cards/Card");
const uno = require("../js/uno"); const uno = require("../js/uno");
const Game = require("../js/Game");
//Instanz CARD_COLORS aus uno.js //Instanz CARD_COLORS aus uno.js
const CARD_COLORS = uno.CARD_COLORS; const CARD_COLORS = uno.CARD_COLORS;
@ -14,7 +15,7 @@ describe('Spieler erstellen', () => {
//Vor jedem Test, neuen Spieler erstellen //Vor jedem Test, neuen Spieler erstellen
beforeEach(() => { beforeEach(() => {
player = new Player('SpielerName');
player = new Player('SpielerName', null);
}) })
//Testet ob der Name im Konstruktor richtig gesetzt wurde //Testet ob der Name im Konstruktor richtig gesetzt wurde
@ -50,4 +51,29 @@ describe('Spieler erstellen', () => {
}); });
});
//Testet die Spieler Funktionalitäten
describe('Spieler Funktionalitäten', () => {
//Erstellt ein Spiel
let game = new Game(2, null);
//Testet, ob ein Spieler eine Karte aus dem CardPool vom Game ziehen kann
it('Karten ziehen', () => {
//Nimmt die Anzahl der Karten im Deck und speichert sie
let cardAmount = game.cardPool.length;
//Funktion vom Player ausführen zum Karte ziehen
game.players[0].drawCard(1);
//Testet, ob die Kate aus cardPool entfernt wurde
expect(game.cardPool.length).toBe(cardAmount - 1);
//Testet, ob der Spieler jetzt eine Karte auf der Hand hat
expect(game.players[0].hand.length).toBe(1);
});
}); });

0
uno/tests/test_Uno.test.js → uno/node/tests/test_Uno.test.js

Loading…
Cancel
Save