1.0.6 • Published 2 years ago

@sqooid/big-two v1.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

Big Two Engine

Description

This is a TypeScript library that can be used to run games of Big Two. Additional rulesets, scoring and sandboxing may be added in the future.

Install

Can be installed using NPM using:

npm install @sqooid/big-two

Getting started

Create a Big Two Game instance using createGame:

const game = createGame()

Start the game by dealing the cards using the dealCards method. Specify options with a DealOptions parameter. All optional parameters are false by default:

game.dealCards({
  playerCount: 4,
})

Once cards have been dealt, plays can begin to be made. The player at index 0 always starts.

Information about the state of the game can be acquired using the various getters provided in the Game object.

For instance, to get cards held by the current player:

const currentPlayerIndex = game.currentPlayer
const currentPlayerCards = game.players[currentPlayerIndex].cards

Plays are made using the makePlay method, which automatically attempts to play the specified hand from the player whose turn it is. Whether the play was successful or not can be checked by the return value.

Plays can easily be formed using the findPlay function, which createds a play given only an array of Cards. For instance:

// Suppose player1's third and fourth cards form a pair
const play = findPlay([player1[2], player1[3]])
const result = game.makePlay(play)
// result would be true if this play was valid

After making each successful play, the game should be checked to see someone has won:

const winnerIndex = game.winner
if (winnerIndex !== undefined) {
  // Index of winner is winnerIndex
  console.log('winner is player', winnerIndex + 1)
}

Calls to makePlay will then continue until such a winner is found. After a player has won, subsequent calls to makePlay will always fail.

Note: The Card objects being used in the game should not be modified directly, as only a single instance of each card is created when dealing for the sake of memory efficiency.

For more detailed information about the API, view the API documentation.

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago