Catalog npm
Back to packageRELEASE DETAILS

0.0.10

npm

1k

Thousand Card Game Logic

Published18 Apr 2018
Direct dependencies15
Transitive dependenciesNot calculated

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.

Declared dependencies 15

Native requirements
15 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
js-base64
Environment
{
  "local_name": "js-base64",
  "alias": false,
  "peer_metadata": null
}
2.4.0runtime
lodash
Environment
{
  "local_name": "lodash",
  "alias": false,
  "peer_metadata": null
}
4.17.4runtime
redux
Environment
{
  "local_name": "redux",
  "alias": false,
  "peer_metadata": null
}
3.7.2runtime
wolfy87-eventemitter
Environment
{
  "local_name": "wolfy87-eventemitter",
  "alias": false,
  "peer_metadata": null
}
5.2.4runtime
mocha
Environment
{
  "local_name": "mocha",
  "alias": false,
  "peer_metadata": null
}
2.3.4development
@types/mocha
Environment
{
  "local_name": "@types/mocha",
  "alias": false,
  "peer_metadata": null
}
2.2.44development
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
8.0.20development
should
Environment
{
  "local_name": "should",
  "alias": false,
  "peer_metadata": null
}
8.0.2development
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
2.4.2development
coveralls
Environment
{
  "local_name": "coveralls",
  "alias": false,
  "peer_metadata": null
}
3.0.0development
karma
Environment
{
  "local_name": "karma",
  "alias": false,
  "peer_metadata": null
}
1.4.1development
karma-chrome-launcher
Environment
{
  "local_name": "karma-chrome-launcher",
  "alias": false,
  "peer_metadata": null
}
2.2.0development
karma-mocha
Environment
{
  "local_name": "karma-mocha",
  "alias": false,
  "peer_metadata": null
}
1.3.0development
karma-mocha-reporter
Environment
{
  "local_name": "karma-mocha-reporter",
  "alias": false,
  "peer_metadata": null
}
2.2.5development
karma-typescript
Environment
{
  "local_name": "karma-typescript",
  "alias": false,
  "peer_metadata": null
}
3.0.8development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "689ce0f64319fcbaf563183057d9862d18a1c89b",
  "tarball": "https://registry.npmjs.org/1k/-/1k-0.0.10.tgz",
  "fileCount": 212,
  "unpackedSize": 1105545,
  "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1zeoCRA9TVsSAnZWagAAK+IQAKNZhrWDfoXtn5MzwPtl\nhiAY3u4uxSOCZdpupa6e3znXVWn54bnbS16afgh1INW3DU/zFvpB/vvsGOay\nz0K49fTgYnLaAFqBCfaykNosXOjSv4jOLKqN8WCN5guy7E7uJKhgCQudBLUR\ne7fPzIz2K7M3FqljM/BKkvwwFa41YasjgQKkz6Y6ytLgtMDbjXWyCxl80wvn\nLzzZBRMU82DfU7aNP8h4u3W4GiVkZPHpJz2XtZ5EY80UGfxrY1+NmCvDOQ3U\nMYmJ+LKB2j0MRiMmd/IaPzVPdS67RSFKSf0xrom3bO8JU0RTzMYWKLcSOFu5\nMGN7sNj1lxpz685US1z9+ok5RgjSpP22swR9Jbo8/tAz/6ew59KnuPs/KSVT\nvhpMB2FqDrMM0Rm7MuT5nYGccRJyU513g1tozjH9GLcSv3PuW3dU6AvohuGK\nYllukytXX5ZtcZIV95cDHpkqZGgQj2/63NEOwywiElZoJf0XCycP2Rl6OPD7\nDbBNmd9JzOXHgRvOCgvYJGUxKoupw8ILJsPMcXrSx7N3VV56J6JQQvx1vRqU\nDoHgLzenehgAcMkUauZyziSY0j9HwqUeAFgYnP4CDhwQtYddVy8Gm/h+4PUA\nfLxPHKPCwAv+oD9vmsjDYKAm/FVBlGvQvW7R3E0XBoNnKToHaBLtN8pIAARJ\nB3Uy\r\n=dMIu\r\n-----END PGP SIGNATURE-----\r\n",
  "integrity": "sha512-YMB4z5npqnckDaZNeRCo8FQccBN4N8rAxJL9Qe9fS8I3ZWW/srqig8rpkDb/otiMOaMt2Z+zeSOjXgMPYwEn9g==",
  "signatures": [
    {
      "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
      "sig": "MEUCIQDNnDgin8dDbne0tiHBLuHmyeEuzck5YWBw1l3CjretjwIgE/qF465zCTkWhRFFla9we6Vc0zVdamTSWVMG6YR6eko="
    }
  ]
}

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_version:b6b04090b7ba43adf2d71813515895e2c004a77370f814e991cc438727ee818a

Other collected versions

0.0.1118 Apr0.0.917 Apr0.0.812 Jan0.0.78 Jan0.0.66 Jan0.0.56 JanView all collected versions →