New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

weiqi

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

weiqi

An implementation of the ancient Chinese board board Go (Chinese: wéiqí, Korean: baduk, Japanese: igo)

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
6
decreased by-72.73%
Maintainers
1
Weekly downloads
 
Created
Source

weiqi.js Build Status

weiqi.js is an implementation of the board game Go. It provides mechanisms for representing a board with black and white stones, as well as the logic to actually play a game. The objects used in weiqi.js are persistent--methods often return entirely new instances instead of mutating internal state.

Persistence and structural sharing offer a memory-efficient way to represent multiple states of the board simutaneously, a desirable trait for applications where you'd like to explore the history of the game (such as for review) or to explore possible future responses (such as for AI decision-making).

The library is available as an npm package, and can be used in the browser with tools like browserify. If you don't want to use browserify, there is a pre-built file in the dist-browser directory that you can include in your browser-targeted projects right away. Access Weiqi with the global Weiqi variable in this case.

Usage

Creating a game

var Weiqi = require('weiqi');
var game = Weiqi.createGame(9);  // creates a game on a 9 x 9 board
game = Weiqi.createGame(13);  // creates a game on a 13 x 13 board
game = Weiqi.createGame(19);  // creates a game on a 19 x 19 board

Playing a game

var Weiqi = require('weiqi');
var game = Weiqi.createGame(9);
game = Weiqi.play(game, 'black', [2,2]);
game = Weiqi.play(game, 'white', [6,7]);
game = Weiqi.pass(game, 'black'); // black passes
game = Weiqi.pass(game, 'white'); // white passes

Weiqi.play and Weiqi.pass each take a player identifier ('black' or 'white'). Weiqi.play takes an additional zero-indexed array of size two that indicates the position to place a stone. Weiqi.play will raise exceptions for the following situations:

  • the game is already over (there have already been two consecutive passes)
  • it is not currently the turn of the player who is attempting to play
  • the move violates positional superko (at the end of any turn, the board cannot be in a state in which it has been previously).

Querying the game

get('currentPlayer') returns either 'black' or 'white'.

> var Weiqi = require('weiqi');
> var game = Weiqi.play(Weiqi.createGame(9), 'black', [2,2]);
> game.get('currentPlayer');
"o"

isOver returns true iff there have been two consecutive passes.

> var Weiqi = require('weiqi');
> var game = Weiqi.play(Weiqi.createGame(9), 'black', [2,2]);
> Weiqi.isOver(game);
false
> game = Weiqi.pass(game, 'white');
> Weiqi.isOver(game);
false
> game = Weiqi.pass(game, 'black');
> Weiqi.isOver(game);
true

To compute the score of the game (using area score) pass a value of komi to areaScore(). All stones are considered alive.

Weiqi.areaScore(game, 7.5);  // compute area score given 7.5 komi

Keywords

FAQs

Package last updated on 02 Oct 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc