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. 0
      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>
</head>
<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>
</html>

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

@ -1,10 +1,11 @@
//Imports
const uno = require("./uno");
const Card = require("./cards/Card");
const ChooseColor = require("./cards/special/ChooseColor");
const Skip = require("./cards/special/Skip");
const PlusAmount = require("./cards/special/PlusAmount");
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
class Game {
@ -12,6 +13,11 @@ 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._playerAmount = playerAmount;
this._rules = rules;
@ -20,6 +26,7 @@ class Game {
initGame(){
this._cardPool = this.generatePool();
this.createPlayers(this._playerAmount);
}
//Gibt ein Array zurück mit allen Karten, die in einem Uno Spiel sind
@ -61,11 +68,21 @@ class Game {
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
get cardPool(){
return this._cardPool;
}
get players(){
return this._players;
}
}
//Exportiert Modul Game

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

@ -2,8 +2,9 @@
class Player {
//Erstellt ein Spieler mit einem Namen
constructor(name) {
constructor(name, gameInstanz) {
this._game = gameInstanz;
this._name = name; //Name des Spielers
this._turn = false; //Ob Spieler gerade am Zug
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
get 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

0
uno/js/uno.js → uno/node/js/uno.js

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 Card = require("../js/cards/Card");
const uno = require("../js/uno");
const Game = require("../js/Game");
//Instanz CARD_COLORS aus uno.js
const CARD_COLORS = uno.CARD_COLORS;
@ -14,7 +15,7 @@ describe('Spieler erstellen', () => {
//Vor jedem Test, neuen Spieler erstellen
beforeEach(() => {
player = new Player('SpielerName');
player = new Player('SpielerName', null);
})
//Testet ob der Name im Konstruktor richtig gesetzt wurde
@ -51,3 +52,28 @@ 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