From 25181d00dbcdd84bed87018e99c3498244da0434 Mon Sep 17 00:00:00 2001 From: Divyansh Seth Date: Fri, 31 May 2024 23:47:48 +0530 Subject: [PATCH] deck: completed function to create and shuffle a UNO card deck. - added black as a color in CardColor in types.d.ts - separated the values of special cards and wild cards into two arrays named specialValues and wildCardValues, respectively. - Iterates over each color in the colors array. For each color: * Iterates over each number value (0 to 9) in the numValues array and adds two cards of that color for each number, except for '0' where only one card is added. * Iterates over each special value in the specialValues array and adds two cards of that color for each special value. * If the color is 'black', iterates over each wild card value in the wildCardValue array and adds four cards of that color for each wild card value. --- backend/src/types.d.ts | 2 +- backend/uno-game-engine/deck.ts | 37 ++++++++++++++++++++++----------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/backend/src/types.d.ts b/backend/src/types.d.ts index 0ac9c89..95de1c2 100644 --- a/backend/src/types.d.ts +++ b/backend/src/types.d.ts @@ -3,7 +3,7 @@ type CardType = 'number' | 'special' | 'wild'; -type CardColor = 'red' | 'blue' | 'green' | 'yellow'; +type CardColor = 'red' | 'blue' | 'green' | 'yellow' | 'black'; type SpecialCardNames = 'skip' | 'reverse' | 'draw2' | 'draw4' | 'colchange'; type CardNumbers = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'; diff --git a/backend/uno-game-engine/deck.ts b/backend/uno-game-engine/deck.ts index a4aacce..6d25394 100644 --- a/backend/uno-game-engine/deck.ts +++ b/backend/uno-game-engine/deck.ts @@ -1,5 +1,5 @@ const colors: Array = ['red', 'yellow', 'green', 'blue']; -const values = [ +const numValues: Array = [ '0', '1', '2', @@ -10,13 +10,10 @@ const values = [ '7', '8', '9', - 'skip', - 'reverse', - 'draw2', ]; -const specialCards = ['wild', 'draw4']; -const deck = []; -const sameCardCount = []; // to keep track of same cards in assigning unique id to each card +const specialValues: Array = ['skip', 'reverse', 'draw2']; +const wildCardValue: Array = ['colchange', 'draw4']; +const deck: Array = []; /** * In a standard UNO deck, there are 108 cards. Here's the breakdown: @@ -42,11 +39,27 @@ const sameCardCount = []; // to keep track of same cards in assigning unique id @returns {Array} deck - An array of 108 UNO cards. */ export function getShuffledCardDeck(): Array { - const deck = []; - // todo: Implement the card generation logic - // dummy code: - // deck.push(makeCard('special', 'wild', 'wild')) - // deck.push(makeCard('number', 'red', '0')) + const deck: Array = []; + + colors.forEach((color) => { + numValues.forEach((value) => { + deck.push(makeCard('number', color, value)); + if (value !== '0') { + deck.push(makeCard('number', color, value)); + } + }); + specialValues.forEach((value) => { + deck.push(makeCard('special', color, value)); + deck.push(makeCard('special', color, value)); + }); + if (color === 'black') { + wildCardValue.forEach((value) => { + for (let i = 0; i < 4; i++) { + deck.push(makeCard('wild', color, value)); + } + }); + } + }); shuffle(deck); return deck;