Current collected state Current
Observed since 20 Oct, 18:30 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
1k
Thousand Card Game Logic
♥ ♦ ♣ ♠
Thousand card game logic, written in TypeScript.
Visit https://plnkr.co/edit/o73CajJDIuEZWHp1kH0C?p=preview and observe console output
$ npm install -S 1k
import { initializeGame, createCard, Thousand, Game } from '1k';
const thousand: Thousand = initializeGame();
thousand.init();
let result: boolean; // its a result of action, true - action succeed, false otherwise
// registers player with specific name
result = thousand.registerPlayer('adam');
result = thousand.registerPlayer('pic');
// player makes a bid
result = thousand.bid('adam', 120);
// player passes
result = thousand.pass('adam');
// player (adam) shares card (9♥) with opponent (alan)
result = thousand.shareStock('adam', createCard('9♥'), 'alan');
// player declares a bomb
result = thousand.declareBomb('adam');
// player increases his bid
result = thousand.increaseBid('adam', 130);
// player throws a card
result = thousand.throwCard(createCard('A♥'), 'adam');
// get entire game state object
const state: Game = thousand.getState();
console.log(state);
Available phases:
enum Phase {
REGISTERING_PLAYERS_START = 'REGISTERING_PLAYERS_START',
REGISTERING_PLAYERS_IN_PROGRESS = 'REGISTERING_PLAYERS_IN_PROGRESS',
REGISTERING_PLAYERS_FINISHED = 'REGISTERING_PLAYERS_FINISHED',
DEALING_CARDS_START = 'DEALING_CARDS_START',
DEALING_CARDS_IN_PROGRESS = 'DEALING_CARDS_IN_PROGRESS',
DEALING_CARDS_FINISHED = 'DEALING_CARDS_FINISHED',
BIDDING_START = 'BIDDING_START',
BIDDING_IN_PROGRESS = 'BIDDING_IN_PROGRESS',
BIDDING_FINISHED = 'BIDDING_FINISHED',
BATTLE_START = 'BATTLE_START',
TRICK_START = 'TRICK_START',
TRICK_IN_PROGRESS = 'TRICK_IN_PROGRESS',
TRICK_FINISHED = 'TRICK_FINISHED',
FLIP_STOCK = 'FLIP_STOCK',
ASSIGN_STOCK = 'ASSIGN_STOCK',
SHARE_STOCK = 'SHARE_STOCK',
BATTLE_FINISHED = 'BATTLE_FINISHED',
BATTLE_RESULTS_ANNOUNCEMENT = 'BATTLE_RESULTS_ANNOUNCEMENT',
ASSIGN_TRICK_CARDS = 'ASSIGN_TRICK_CARDS',
BOMB_DECLARED = 'BOMB_DECLARED',
GAME_FINISHED = 'GAME_FINISHED'
}
import { initializeGame, createCard, Thousand } from '1k';
const thousand: Thousand = initializeGame();
// called whenever game is updated
thousand.events.addListener('phaseUpdated', next => {
const state: Game = thousand.getState();
console.log('Current phase', state.phase);
console.log('Current state', state);
// after managing state, let the game proceed...
next();
});
// called, when any action made succesfully
thousand.events.addListener('action', (action, next) => {
const state: Game = thousand.getState();
console.log('action made succesfully: ', action);
// after managing action, let the game proceed...
next();
});
thousand.setCustomShufflingMethod((notShuffledDeck: CardPattern[], cb) => {
//shuffle your cards here...
const shuffledCards: CardPattern[] = ...
cb(shuffledCards);
});
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
js-base64Environment{
"local_name": "js-base64",
"alias": false,
"peer_metadata": null
} | 2.4.0 | runtime |
lodashEnvironment{
"local_name": "lodash",
"alias": false,
"peer_metadata": null
} | 4.17.4 | runtime |
reduxEnvironment{
"local_name": "redux",
"alias": false,
"peer_metadata": null
} | 3.7.2 | runtime |
wolfy87-eventemitterEnvironment{
"local_name": "wolfy87-eventemitter",
"alias": false,
"peer_metadata": null
} | 5.2.4 | runtime |
mochaEnvironment{
"local_name": "mocha",
"alias": false,
"peer_metadata": null
} | 2.3.4 | development |
@types/mochaEnvironment{
"local_name": "@types/mocha",
"alias": false,
"peer_metadata": null
} | 2.2.44 | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | 8.0.20 | development |
shouldEnvironment{
"local_name": "should",
"alias": false,
"peer_metadata": null
} | 8.0.2 | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | 2.4.2 | development |
coverallsEnvironment{
"local_name": "coveralls",
"alias": false,
"peer_metadata": null
} | 3.0.0 | development |
karmaEnvironment{
"local_name": "karma",
"alias": false,
"peer_metadata": null
} | 1.4.1 | development |
karma-chrome-launcherEnvironment{
"local_name": "karma-chrome-launcher",
"alias": false,
"peer_metadata": null
} | 2.2.0 | development |
karma-mochaEnvironment{
"local_name": "karma-mocha",
"alias": false,
"peer_metadata": null
} | 1.3.0 | development |
karma-mocha-reporterEnvironment{
"local_name": "karma-mocha-reporter",
"alias": false,
"peer_metadata": null
} | 2.2.5 | development |
karma-typescriptEnvironment{
"local_name": "karma-typescript",
"alias": false,
"peer_metadata": null
} | 3.0.8 | development |
Source distribution
{
"shasum": "4fa75b9c9f48e8c95b5ccc29e149f0ae208f0bd6",
"tarball": "https://registry.npmjs.org/1k/-/1k-0.0.5.tgz",
"integrity": "sha512-3a+gJTtOW8mMcNb2YmmODQNKHYyxSGeDnadG11rvXJOLvwoYFBtzS61tM/CseUZYzVQJo+mJ30QU9nwgfXeW1w==",
"signatures": [
{
"keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
"sig": "MEYCIQCZjtvVFbQqxIn6AKSlSDiDgTbX7fE5hNLTmZmDAIS8owIhAIqKGrsHHtCQ0HTG5FybcRvyNCyqZRrozV7GUKSvmNRn"
}
]
}Observed since 20 Oct, 18:30 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:78821de3bfbb323ba51a377f8972edac0da1b01fdf46899bf76f60d3963c276d