Javascript:engine xx.js

From MediaWiki for e-dama.net
Jump to: navigation, search

File: engine_xx.js or engine_xx.min.js (minimized version with same functionality, smaller in size) where 'xx' should be one of:

20 International draughts
21 English draughts (checkers)
22 Italian draughts
23 American pool draughts
24 Spanish draughts
25 Russian draughts
26 Brazilian draughts
27 Canadian draughts
28 Portuguese draughts
29 Czech draughts
30 Turkish draughts
31 Thai draughts
40 Frisian draughts
41 Russian draughts 10x8
125 Croda
126 Armenian draughts
127 German draughts

Use: draughts_engine(xx) will return engine as javascript object with following members:

gameType number game type as defined in previous table
rows number number of rows on board
columns number number of columns on board
squares number number of squares used for playing
piecesPerSide number pieces on each side in initiali position
firstMoveWhite boolean true if white plays first move
immediatePromotion boolean true if man reaching the promotion row during the capture should be immediately promoted to king (Russian draughts)
turkishCapture boolean true if pieces are removed during the capture, not after end of complete capturing move (Turkish and Armenian draughts)
captureSeparator string character used to separate squares in capturing move (usually 'x' or ':')
encodeSquare function(x)

x - number,

returns string

function that maps square number (zero for leftmost active square in topmost row) to used notation (numeric ar alphanumeric)
decodeSquare function(x)

x - string,

returns number

function that maps used notation to square number (zero for leftmost active square in topmost row)
initialPosition function ()

returns array of numbers

function that returns initial position on board. Returned position is array of numbers, each numbers is for piece occupying one square:

1 - white man

2 - white king

-1 - black man

-2 - black king

0 - empty square

packPosition function(position)

position - array of numbers,

returns string

function that packs position as array of numbers to string
unpackPosition function(packed)

packed - string,

returns array of numbers

function that unpacks position packed to string with packPosition function
validMoves function(position, whiteMove)

position - array of numbers or string,

whiteMove boolean,

returns array of move objects

function for selecting all valid moves in specified position (can be array or string as result of packPosition function) with selected player on move.
findMove function(move, validMovesList)

move - string,

validMovesList - array of move objects,

returns move object

function that is locating move represented as string in current notation in list of valid moves and returns corresponding move object.
makeMove function(move, position, whiteMove)

move - move object or string,

position array of numbers,

whiteMove boolean,

returns object.

function that is making desired move (can be move object or string) in specified position (array of numbers) with selected player on move.

Returned object members: move - move object, position - position after move is played, changed - array of squares (numbers) changed during the move.

advanceMove function(game)

game - object: num - number (move number), whiteMove - boolean

functon that is changing side that is on the move (black to white and vice versa) and incrementing move number if needed.
checkForPromotion function(piece, square)

piece - number,

square - number,

returns boolean

check is man has reached promotion row
mapping function() function for mapping square number (starting from zero to number of squares minus one) to row, column, and square colour and vice versa. It can be called with two or three arguments.

When called with two arguments (square number and boolean saying if board is positioned upside-down) returns object:

row - number, row number, zero for topmost row;

column - number, column number, zefo for leftmost row;

black - boolean, true if square is black.

When called with three arguments (row and column numbers, and boolean saying if board is positioned upside-down) returns object:

active - boolean, true for active square (i.e. square that is used for playing);

black - boolean, true if square is black;

number - number, square number (zero based), only for active sqaures.