Initial commit

This commit is contained in:
2021-06-22 22:14:52 +02:00
parent 8a27069375
commit 7d4a60a5e1
5 changed files with 310 additions and 0 deletions
+121
View File
@@ -0,0 +1,121 @@
var deck = {};
var hand = {};
var deckElement = document.getElementById('deck');
var handElement = document.getElementById('hand');
var colors = [ "red", "blue", "yellow" ];
var handSize = 5;
var maxNumber = 8;
fillDeck();
updateUI();
function cardToId(card) {
return card.color + "_" + card.number.toString();
}
function cardToElement(card, forDeck = false) {
var element = document.createElement("okey-card");
element.innerHTML = card.number.toString();
if (forDeck) {
element.setAttribute("onclick", "drawCard('" + cardToId(card) + "')");
if (isHandFull()) {
element.setAttribute("hand-full", "");
}
}
else {
element.setAttribute("onclick", "discard('" + cardToId(card) + "')");
}
if (forDeck && card.drawn) {
element.classList.add("drawn-" + card.color);
}
else {
element.classList.add(card.color);
element.setAttribute("clickable", "");
}
return element.outerHTML;
}
function isHandFull() {
return Object.entries(hand).length >= handSize;
}
function fillDeck() {
for (let color of colors)
{
for (let i = 1; i <= maxNumber; i++)
{
let card = {
color: color,
number: i,
drawn: false
};
deck[cardToId(card)] = card;
}
}
}
function discard(cardId) {
delete hand[cardId];
updateUI();
}
function drawCard(cardId) {
if (!deck[cardId].drawn && !isHandFull()) {
hand[cardId] = deck[cardId];
deck[cardId].drawn = true;
updateUI();
}
}
function getPatterns(thisHand = null) {
if (thisHand == null) {
thisHand = hand;
}
let patterns = [];
for (let i = 1; i <= maxNumber; i++) {
sameNumber = 0;
for (let card of Object.values(thisHand)) {
if (card.number == i) {
sameNumber++;
}
}
if (sameNumber >= colors.length) {
let patternName = i + "-" + i + "-" + i;
patterns[patternName] = (i + 1) * 10;
}
}
console.log(Object.keys(patterns));
patterns = patterns.sort((a,b) => (a.last_nom > b.last_nom) ? -1 : ((b.last_nom > a.last_nom) ? 1 : 0));
return Object.keys(patterns);
}
function updateUI() {
handElement.innerHTML = "";
for (let card of Object.values(hand)) {
handElement.innerHTML += cardToElement(card);
}
deckElement.innerHTML = "";
for (let card of Object.values(deck)) {
deckElement.innerHTML += cardToElement(card, true);
}
}
function reset() {
deck = {};
hand = {};
fillDeck();
updateUI();
}