@@ -2,7 +2,11 @@ let cards = []; //list of cards in collection
22const nameElement = document . getElementById ( "name" ) ; //name element
33const rarityOption = document . getElementById ( "rarity" ) ; //rarity option selection
44const addCardButton = document . getElementById ( "add-card" ) ; //add card button
5+ const generateRandomCardButton = document . getElementById (
6+ "generate-random-card" ,
7+ ) ; //generate random card button
58const output = document . getElementById ( "output" ) ; //output display text
9+ const randomCardOutput = document . getElementById ( "random-card-output" ) ; //random card output display text
610addCardButton . addEventListener ( "click" , ( ) => {
711 //when add card button is pressed
812 const name = nameElement . value ; //get name value
@@ -12,3 +16,43 @@ addCardButton.addEventListener("click", () => {
1216 nameElement . value = "" ; //clear name value
1317 rarityOption . value = "common" ; //reset rarity value
1418} ) ;
19+ generateRandomCardButton . addEventListener ( "click" , ( ) => {
20+ //when generate random card button is pressed
21+ const totalWeight = cards . reduce (
22+ ( total , card ) =>
23+ total + card . rarity === "common"
24+ ? 0.5
25+ : card . rarity === "uncommon"
26+ ? 0.25
27+ : card . rarity === "rare"
28+ ? 0.15
29+ : card . rarity === "epic"
30+ ? 0.075
31+ : card . rarity === "legendary"
32+ ? 0.025
33+ : 0 ,
34+ 0 ,
35+ ) ; //calculate total weight of all cards based on card rarity
36+ const number = Math . random ( ) * totalWeight ; //generate random number between 0 and total weight
37+ let weightSum = 0 ; //initialize weight sum
38+ for ( const card of cards ) {
39+ //for each card in collection
40+ weightSum +=
41+ card . rarity === "common"
42+ ? 0.5
43+ : card . rarity === "uncommon"
44+ ? 0.25
45+ : card . rarity === "rare"
46+ ? 0.15
47+ : card . rarity === "epic"
48+ ? 0.075
49+ : card . rarity === "legendary"
50+ ? 0.025
51+ : 0 ; //add card weight to weight sum
52+ if ( number <= weightSum ) {
53+ //if random number is less than or equal to weight sum
54+ randomCardOutput . innerText = `You got a ${ card . rarity } card: ${ card . name } ` ; //display generated random card
55+ return ; //exit function
56+ }
57+ }
58+ } ) ;
0 commit comments