ts-cards
Version:
Cards but in typescript
85 lines (84 loc) • 3.3 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var _this = this;
Object.defineProperty(exports, "__esModule", { value: true });
exports.standardCardCompare = exports.standardRankValues = exports.StandardDeck = void 0;
var deck_1 = require("../deck");
var card_1 = require("../card");
var ranks_1 = require("../ranks");
var suits_1 = require("../suits");
/**
* @class PinochelDeck
* @extends Deck
*/
var StandardDeck = /** @class */ (function (_super) {
__extends(StandardDeck, _super);
function StandardDeck() {
return _super.call(this, generateDeck()) || this;
}
return StandardDeck;
}(deck_1.Deck));
exports.StandardDeck = StandardDeck;
var suits = [suits_1.spades, suits_1.diamonds, suits_1.clubs, suits_1.hearts];
var ranks = [ranks_1.two, ranks_1.three, ranks_1.four, ranks_1.five, ranks_1.six, ranks_1.seven, ranks_1.eight, ranks_1.nine, ranks_1.ten, ranks_1.jack, ranks_1.queen, ranks_1.king, ranks_1.ace];
var generateDeck = function () {
var cards = [];
for (var _i = 0, suits_2 = suits; _i < suits_2.length; _i++) {
var suit = suits_2[_i];
for (var _a = 0, ranks_2 = ranks; _a < ranks_2.length; _a++) {
var rank = ranks_2[_a];
cards.push(new card_1.Card(suit, rank, _this));
}
}
return cards;
};
exports.standardRankValues = new Map();
exports.standardRankValues.set(ranks_1.two, 2);
exports.standardRankValues.set(ranks_1.three, 3);
exports.standardRankValues.set(ranks_1.four, 4);
exports.standardRankValues.set(ranks_1.five, 5);
exports.standardRankValues.set(ranks_1.six, 6);
exports.standardRankValues.set(ranks_1.seven, 7);
exports.standardRankValues.set(ranks_1.eight, 8);
exports.standardRankValues.set(ranks_1.nine, 9);
exports.standardRankValues.set(ranks_1.ten, 10);
exports.standardRankValues.set(ranks_1.jack, 11);
exports.standardRankValues.set(ranks_1.queen, 12);
exports.standardRankValues.set(ranks_1.king, 13);
exports.standardRankValues.set(ranks_1.ace, 14);
var standardCardCompare = function (a, b, leadSuit, trump) {
var bRank = exports.standardRankValues.get(b.rank);
var aRank = exports.standardRankValues.get(a.rank);
if (a.suit === b.suit) {
return (bRank ? bRank : 0) - (aRank ? aRank : 0);
}
else {
if (b.suit === trump) {
return 1;
}
else if (a.suit === trump) {
return -1;
}
else if (b.suit === leadSuit) {
return 1;
}
else {
return -1;
}
}
};
exports.standardCardCompare = standardCardCompare;