Catalog npm
PACKAGE EXPLORERView in registry

1k

npm

Thousand Card Game Logic

Versions collected11
Direct dependencies15From release 0.0.11
Last observed20 Oct, 18:30 UTC

README

Current package documentation

Build Status Coverage Status NPM Downloads

1k

♥ ♦ ♣ ♠

Thousand card game logic, written in TypeScript.

Working example

Visit https://plnkr.co/edit/o73CajJDIuEZWHp1kH0C?p=preview and observe console output

How to install?

$ npm install -S 1k

How to use?

Actions:


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);

Phases:

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'
}

Events:


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);
});

Putting all together:

See https://plnkr.co/edit/o73CajJDIuEZWHp1kH0C?p=preview

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 11

Collected releases
VersionPublishedDirect dependenciesOpen version
0.0.11Registry latest18 Apr 201815
0.0.1018 Apr 201815
0.0.917 Apr 201815
0.0.812 Jan 201815
0.0.78 Jan 201815
0.0.66 Jan 201815
0.0.56 Jan 201815
0.0.45 Jan 201814
0.0.35 Jan 201814
0.0.25 Jan 201814
0.0.119 Dec 201714

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:30 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:87735efeb8069caed9511dcf0115deee369240e2773bd52eb41746e4c48ea303