1.4.64 • Published 1 year ago

yd-chess-lib v1.4.64

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

Chess Lib

npm

Chess Lib is a library that allows us emulate a game of chess.

Installation

npm install yd-chess-lib

Getting started with Chess Lib

Here is an example of a basic app using Chess Lib:

import { Chess } from "yd-chess-lib";

let chess = Chess.getInstance();

Public Methods

To access the library you have to call "getInstance()" in every call. We implement a Singleton, to avoid duplicating data.

getInstance

getInstance();
import { Chess } from "yd-chess-lib";

let chess = Chess.getInstance();

printChessboardToConsole

Print the chessboard in the console.

printChessboardToConsole = () => void;
import { Chess } from "yd-chess-lib";

let chess = Chess.getInstance();

//print chessboard
chess.printChessboardToConsole();

move

Moves the piece located in square from to square to. Only if it is a valid and allowed move. Return true if the move was made. Also can move and promote a pawn in one movement example: "7cx8bQ" || "2bx1cR" ("Q","R","N","B")

move = (from: String, to: string) => boolean; || move = (movement: string) => boolean;
import { Chess } from "yd-chess-lib";

let chess = Chess.getInstance();

// moving 2d => 4d
chess.move("2d", "4d"); //return true
chess.printChessboardToConsole();

// moving 2b => 3b
chess.move("2bx3b"); //return true
chess.printChessboardToConsole();

// moving 2c => 5c
chess.move("2cx5c"); //return false (invalid or not allowed movement)
chess.printChessboardToConsole();

// moving 3b => 8bQ
chess.move("3b", "4b"); //return true
chess.move("4bx5b"); //return true
chess.move("5bx6b"); //return true
chess.move("6bx7a"); //return true
chess.move("7ax8bQ"); //return true
chess.printChessboardToConsole();

Result

//moved 2d => 4d         //moved 2b => 3b         //invalid move           //Default 3b => 8bQ
RB|NB|BB|QB|KB|BB|NB|RB  RB|NB|BB|QB|KB|BB|NB|RB  RB|NB|BB|QB|KB|BB|NB|RB  RB|QW|BB|QB|KB|BB|NB|RB
PB|PB|PB|PB|PB|PB|PB|PB  PB|PB|PB|PB|PB|PB|PB|PB  PB|PB|PB|PB|PB|PB|PB|PB  60|PB|PB|PB|PB|PB|PB|PB
50|51|52|53|54|55|56|57  50|51|52|53|54|55|56|57  50|51|52|53|54|55|56|57  50|51|52|53|54|55|56|57
40|41|42|43|44|45|46|47  40|41|42|43|44|45|46|47  40|41|42|43|44|45|46|47  40|41|42|43|44|45|46|47
30|31|32|PW|34|35|36|37  30|31|32|PW|34|35|36|37  30|31|32|PW|34|35|36|37  30|31|32|PW|34|35|36|37
20|21|22|23|24|25|26|27  20|PW|22|23|24|25|26|27  20|PW|22|23|24|25|26|27  20|21|22|23|24|25|26|27
PW|PW|PW|13|PW|PW|PW|PW  PW|11|PW|13|PW|PW|PW|PW  PW|11|PW|13|PW|PW|PW|PW  PW|11|PW|13|PW|PW|PW|PW
RW|NW|BW|QW|KW|BW|NW|RW  RW|NW|BW|QW|KW|BW|NW|RW  RW|NW|BW|QW|KW|BW|NW|RW  RW|NW|BW|QW|KW|BW|NW|RW

getSquare

We get the piece by passing the position.

getSquare = (position: string) => boolean;
let chess = Chess.getInstance();
//pawn
let square_2_d = chess.getSquare("2d");
console.log(square_2_d);

Result

{ key: "2d", color: "W", type: "P", movementsAllowed: ["3d", "4d"], neverMoved: true }
let chess = Chess.getInstance();
//empty square
let square_5_c = chess.getSquare("fc");
console.log(square_5_c);

Result

null

getChessboard

We get the all chessboard.

getChessboard = () :
  Array<Array<{ key: string; color: string; type: string; movementsAllowed: Array<string>; neverMoved: boolean } | null>>;
let chess = Chess.getInstance();
let chessboard = chess.getChessboard();
console.log(chessboard);

Result

[
  [
    {
      key: '1a',
      color: 'W',
      type: 'R',
      movementsAllowed: [],
      neverMoved: true
    },
    {
      key: '1b',
      color: 'W',
      type: 'N',
      movementsAllowed: ["3c", "3a"],
      neverMoved: true
    },
    ...

getHistory

We get an arrays with all the movements made in order that were made.

getHistory = (): Array<string>;
let history = chess.getHistory();
console.log(history);

Result

["2dx4d", "2bx3b"]

isInCheckMate

This function return a boolean with value true is the color is in checkmate. Parameter color "W" (White) "B" (Black)

isInCheckMate = (color: Color): boolean;
chess.isInCheckMate("W"); // check if white is in checkmate
chess.isInCheckMate("B"); // check if black is in checkmate

replacePawn

This function allow us to replace the pawn if is in the end of the rows for a Queen(Q), Rook(R), Bishop(B) or Knight(N).

pawnPromotion = (pawn_key: string, type_of_piece: TypeOfPiece): void
chess.replacePawn("1b", "Q");
chess.replacePawn("8a", "N");

isDraw

This function evaluates if it’s a draw returns a string with the type of draw. if isn’t a draw return null. p_color is the color that it is turn to play

isDraw = (p_color: Color): string | null
chess.isDraw("W"); //   "Slatemate"
chess.isDraw("W"); //   "Dead Position"
chess.isDraw("B"); //   "Repetition"
chess.isDraw("W"); //   null

isCasteling

This function evaluates the board and return a boolean with the value true if it can castling.

isCasteling = (kingPosition: string, rookPosition: string): boolean
chess.isCasteling("1e", "1h"); //   true
chess.isCasteling("1e", "1h"); //   false (may does not meet all requirements)
chess.isCasteling("1e", "1b"); //   false

hasToPromoteAPawn

hasToPromoteAPawn return true if you have a replace a pawn.

hasToPromoteAPawn = (): boolean
chess.hasToPromoteAPawn(); //   true
1.4.60

1 year ago

1.4.62

1 year ago

1.4.61

1 year ago

1.4.64

1 year ago

1.4.63

1 year ago

1.4.57

1 year ago

1.4.56

1 year ago

1.4.59

1 year ago

1.4.58

1 year ago

1.4.55

1 year ago

1.4.54

1 year ago

1.4.53

1 year ago

1.4.52

1 year ago

1.4.51

1 year ago

1.4.50

1 year ago

1.4.49

1 year ago

1.4.48

1 year ago

1.4.47

1 year ago

1.4.46

1 year ago

1.4.45

1 year ago

1.4.43

1 year ago

1.4.42

1 year ago

1.4.41

1 year ago

1.4.40

1 year ago

1.4.39

1 year ago

1.4.38

1 year ago

1.4.37

1 year ago

1.4.36

1 year ago

1.4.35

1 year ago

1.4.33

1 year ago

1.4.32

1 year ago

1.4.3

1 year ago

1.4.2

1 year ago

1.4.1

1 year ago

1.4.0

1 year ago

1.3.9

1 year ago

1.3.8

1 year ago

1.3.7

1 year ago

1.3.6

1 year ago

1.3.5

1 year ago

1.3.4

1 year ago

1.3.3

1 year ago

1.3.2

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

1.2.9

1 year ago

1.2.8

1 year ago

1.2.6

1 year ago

1.2.5

1 year ago

1.2.4

1 year ago

1.2.3

1 year ago

1.2.2

1 year ago

1.2.1

1 year ago

1.2.0

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.5

1 year ago

1.0.0

1 year ago

1.0.4

1 year ago