Skip to content

Commit 672ef0f

Browse files
committed
Add button to generate random card based on rarity
1 parent 0a064c7 commit 672ef0f

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

index.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ let cards = []; //list of cards in collection
22
const nameElement = document.getElementById("name"); //name element
33
const rarityOption = document.getElementById("rarity"); //rarity option selection
44
const addCardButton = document.getElementById("add-card"); //add card button
5+
const generateRandomCardButton = document.getElementById(
6+
"generate-random-card",
7+
); //generate random card button
58
const output = document.getElementById("output"); //output display text
9+
const randomCardOutput = document.getElementById("random-card-output"); //random card output display text
610
addCardButton.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

Comments
 (0)