ts-cards
Version:
Cards but in typescript
79 lines (78 loc) • 2.92 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.pinochleCardCompare = exports.pinochleRankValues = exports.PinochleDeck = 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 PinochleDeck = /** @class */ (function (_super) {
__extends(PinochleDeck, _super);
function PinochleDeck() {
return _super.call(this, generateDeck()) || this;
}
return PinochleDeck;
}(deck_1.Deck));
exports.PinochleDeck = PinochleDeck;
var suits = [suits_1.spades, suits_1.diamonds, suits_1.clubs, suits_1.hearts];
var ranks = [ranks_1.nine, ranks_1.jack, ranks_1.queen, ranks_1.king, ranks_1.ten, 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));
cards.push(new card_1.Card(suit, rank, _this));
}
}
return cards;
};
exports.pinochleRankValues = new Map();
exports.pinochleRankValues.set(ranks_1.nine, 9);
exports.pinochleRankValues.set(ranks_1.jack, 10);
exports.pinochleRankValues.set(ranks_1.queen, 11);
exports.pinochleRankValues.set(ranks_1.king, 12);
exports.pinochleRankValues.set(ranks_1.ten, 13);
exports.pinochleRankValues.set(ranks_1.ace, 14);
var pinochleCardCompare = function (a, b, leadSuit, trump) {
var bRank = exports.pinochleRankValues.get(b.rank);
var aRank = exports.pinochleRankValues.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.pinochleCardCompare = pinochleCardCompare;