basic drawing

This commit is contained in:
2025-08-03 14:43:29 -04:00
parent e4f6e1899d
commit 0124b69440
9 changed files with 200 additions and 38 deletions

View File

@@ -1,6 +1,23 @@
export type Suit = "heart" | "diamond" | "spade" | "club";
const suits = ["heart", "diamond", "spade", "club"] as const;
export type Suit = (typeof suits)[number];
const ranks = [
2,
3,
4,
5,
6,
7,
8,
9,
10,
"jack",
"queen",
"king",
"ace",
] as const;
export type Rank = (typeof ranks)[number];
type Rank = number | "jack" | "queen" | "king" | "ace";
export type Card =
| {
kind: "normal";
@@ -13,3 +30,28 @@ export type Pile = Card[];
export type Stack = Card[];
export type Hand = Card[];
export type Board = Card[];
export const newDeck = (withJokers = false): Pile =>
suits
.map((suit) =>
ranks.map((rank) => ({ kind: "normal", suit, rank } as Card))
)
.flat()
.concat(
withJokers
? [
{ kind: "joker", color: "red" },
{ kind: "joker", color: "black" },
]
: []
);
export const shuffle = (cards: Card[]) => {
let i = cards.length;
while (i > 0) {
const j = Math.floor(Math.random() * i);
i--;
[cards[i], cards[j]] = [cards[j], cards[i]];
}
return cards;
};