Initial commit
This commit is contained in:
@@ -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();
|
||||
}
|
||||
Reference in New Issue
Block a user