From 3ccf7733155c586742f2e8d63e8b02e421b9cede Mon Sep 17 00:00:00 2001 From: Eunchong Kim Date: Sat, 17 Jul 2021 15:53:55 +0900 Subject: [PATCH] Added basic game start in room --- src/index.js | 3 ++- src/js/player.js | 7 +++++++ src/js/room.js | 25 ++++++++++++++++++++----- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/index.js b/src/index.js index 7ecea14..a5ad216 100644 --- a/src/index.js +++ b/src/index.js @@ -17,7 +17,8 @@ document.addEventListener('DOMContentLoaded', () => { const room = new Room(); room.addPlayer('newini'); room.printPlayers(); -room.initCards(); +room.initDeck(); room.shuffleDeck(); +room.startGame(); console.log('Uno End') diff --git a/src/js/player.js b/src/js/player.js index 98a66c9..f80bd59 100644 --- a/src/js/player.js +++ b/src/js/player.js @@ -11,4 +11,11 @@ export default class Player { printCards() { console.log(this._cards); } + playCard(i) { + console.log(this._cards); + return this._cards.splice(i, 1); + } + isEmpty() { + return (this._cards.length === 0) ? true : false; + } } diff --git a/src/js/room.js b/src/js/room.js index 768debc..a556a8f 100644 --- a/src/js/room.js +++ b/src/js/room.js @@ -7,6 +7,7 @@ export default class Room { this._n_players = 0; this._players = []; this._cards = []; + this._turn_who = 0; this.ALL_COLORS = ['red', 'yellow', 'green', 'blue']; } addPlayer(player_name) { @@ -16,7 +17,7 @@ export default class Room { printPlayers() { console.log(this._players); } - initCards() { + initDeck() { this.ALL_COLORS.forEach( (color) => { for (let num=0; num<=12; num++) { const card = new Card(num, color); @@ -35,16 +36,30 @@ export default class Room { this._cards.push( card ); } } - console.log( this._cards ); } shuffleDeck() { this._players.forEach( (player) => { for (let i=0; i<7; i++) { - let j = Math.floor( Math.random() * this._cards.length ); - const card = this._cards.splice(j, 1); - player.addCard(card); + player.addCard( this.draw() ); } player.printCards(); }); } + draw() { + const card_i = Math.floor( Math.random() * this._cards.length ); + return this._cards.splice(card_i, 1); + } + startGame() { + let count = 0; + while (true) { + const card = this.playerTurn(); + if (this._players[0].isEmpty()) { + console.log('game end') + break + } + } + } + async playerTurn() { + return this._players[0].playCard(0); + } }