require

TripleGame

Triple Game Engine

Parameters

  1. aConfig: Config (=defaultConfig):  

Returns

any this

Example

const {Game, TRIPLE_FIG} = require('triple-game)';
var game = new Game();
game.userMove(0,0);

static

TripleGame.newGame

newGame

newGame() start new game

TripleGame.userMove

userMove

Let the player (user) place next figure to field (x,y)

Parameters

  1. x: integer:  
  2. y: integer:  
  3. fig: integer:  
    a optional figure to play

TripleGame.turn

turn(pos: Pos)

Let the player (user) place next figure to field (pos)

Parameters

  1. pos: Pos:  

TripleGame.undoMove

undoMove

undoMove() undo last user move

TripleGame.swapReserve

swapReserve

swapReserve() swap reserve and next figure

TripleGame.isLegalMove

isLegalMove

Check if figure can be set on pos

Parameters

  1. pos: Pos:  
    board coordinates
  2. fig: integer:  
    figure to set on this field

Returns

any boolean

TripleGame.gameOver

gameOver(): any

Returns

any boolean true if no more moves possible

TripleGame.addFigure

addFigure

add nextFigure from shop

Parameters

  1. fig: integer:  

TripleGame.setConfig

setConfig

set game configuration. board size, figure probability etc.

Parameters

  1. newConfig: Config:  

TripleGame.getConfig

getConfig

get game configuration

Returns

Config

TripleGame.setState

setState

set game for example from a backup

Parameters

  1. newState: GameState:  

TripleGame.getState

getState

get game state. actual bard as string, next_figure, score etc.

Returns

TripleGame.on

on

Set event callback. For detaile @see "Game Events".

Parameters

  1. eventName: string:  
  2. callback: function:  

Example

// log game over
game.on('gameover', (e) => {console.log('GAME OVER')} );

// use 'all' for all events
game.on('all', (e) => {console.log('event:', e.name )} );

TripleGame.toString

toString

Return game as string

Returns

Example

console.log( new require('triple-game').Game().toString() ); 

  0 1 2 3 
-----------
0|   1   1     
1| 4 1   1     
2|     1       
3|             
next: 2 reserve: 0 score: 0 gold: 0

TripleGame.enableLogger

enableLogger

Logger show game events on console. Parameter is true | false | array of event names.

Parameters

  1. val: (boolean | Array<string>):  

GameState

GameState

static

GameState.next

next

next figure

GameState.reserve

reserve: integer

reserve figure

GameState.score

score: integer

actual score

GameState.gold

gold: integer

gold

GameState.undo_enable

undo_enable: boolean

GameState.game_over

game_over: boolean

GameState.move_count

move_count: integer

number of moves in this game

Pos

Stores X,Y coordinates

Parameters

  1. args: ...args:  
    see #assign for optional parameter

instance

Pos.prototype.assign

assign(args: type)

assign(1,2) or assign('1-2') or assign(new Pos(1,2))

Parameters

  1. args: type:  

Pos.prototype.key

key

Returns

String a key like '5-6'

Pos.prototype.key

key

set key for position will change x and y

Parameters

  1. s: string:  

Pos.prototype.eq

eq(pos: Pos): Boolean

compare with a Pos

Parameters

  1. pos: Pos:  

Returns

Boolean true if pos is equal to this

Board

Game Board a 2 dimensional array to hold integers in each cell

Parameters

  1. cols: integer:  
  2. rows: integer:  
  3. initial: type (=0):  
    a interger or function to fill the board

instance

Board.prototype.get

get(col: integer, row: integer): integer

Parameters

  1. col: integer:  
  2. row: integer:  

Returns

integer content of board cell

Board.prototype.set

set(col: integer, row: integer, val: integer)

Parameters

  1. col: integer:  
  2. row: integer:  
  3. val: integer:  

Board.prototype.getPos

getPos(pos: Pos): integer

Parameters

  1. pos: Pos:  

Returns

integer

Board.prototype.setPos

setPos(pos: Pos, val: integer)

Parameters

  1. pos: Pos:  
  2. val: integer:  

Board.prototype.forEach

forEach(callback: function)

iterate through all cells

Parameters

  1. callback: function:  
    ( item, x, y)

Board.prototype.getHash

getHash(filter: function): Object

Parameters

  1. filter: function:  
    = function( {pos,value} ) { return boolean }

Returns

Object board as object {{pos: {x:0,y:0}, val: 1},..}

Board.prototype.getPosList

getPosList(value: type): Array

Parameters

  1. value: type:  
    integer or function(x,y)

Returns

Array array of Pos of cells contains value

Board.prototype.fill

fill(value: type)

Parameters

  1. value: type:  
    integer or function(x,y)

Board.prototype.validPos

validPos(pos: Pos): Boolean

Parameters

  1. pos: Pos:  

Returns

Boolean true if pos is inside board dimensions

Board.prototype.move

move(fromPos: Pos, toPos: Pos)

Parameters

  1. fromPos: Pos:  
  2. toPos: Pos:  

Board.prototype.neighbours

neighbours(pos: Pos): Array

Parameters

  1. pos: Pos:  

Returns

Array array of Pos with neigbour cells

Board.prototype.getCluster

getCluster(startPos: Pos, members: integer, exclusive: Boolean): Array

Collect positions with neighbours of the same value

Parameters

  1. startPos: Pos:  
  2. members: integer:  
    alternative array of integer
  3. exclusive: Boolean:  
    eclude Pos if true

Returns

Array array of Pos

Board.prototype.toString

toString(): string

Return board as string

Returns

Board.prototype.toStringFramed

toStringFramed(): string

Return board as string with frame

Returns

Board.prototype.setString

setString(s: string)

Set board as string. String must have the same format as toString(). Board size will not change.

Parameters

  1. s: string:  

TRIPLE_FIG

triple figure definitions

each figure (object or item) has an integer id. Use the symbols in TRIPLE_FIG.

Figure properties are in 'var figures'. use function figureProp() to retrieve figure property. Example: score = figureProp(TRIPLE_FIG.GRASS).score;

Example

Figure Id Definitions
   
  EMPTY:              0,
  GRASS:              1,
  BUSH:               2,
  TREE:               3,
  HUT:                4,
  HOUSE:              5,
  MANSION:            6,
  CASTLE:             7,
  FLOATINGCASTLE:     8,
  TRIPLECASTLE:       9,
  ROCK:               20,
  MOUNTAIN:           21,
  ROBOT:              25,
  CRYSTAL:            26,
  BEAR:               30,
  TOMB:               31,
  NINJA:              32,
  CHURCH:             40,
  CATHEDRAL:          41,
  TREASURE:           50,
  BIGTREASURE:        51,

Figure

Figure properties

static

Figure.id

id: iteger

TRIPLE_FIG value

Figure.key

key: string

key id as string

Figure.name

name: string

figure name

Figure.score

score: number

score for placing

Figure.gold

gold: number

used for treasure (optional)

Figure.growto

growto: integer

id of figure to grow to (optional)

Figure.destroyto

destroyto: integer

id of figure when it is killed (optional)

Figure.img

img: string

name of image file

Figure.cost

cost: number

price in shop

figureList

list of objects with figure properties

figures

figures is a hash of figureList

figureProp

Get figure by id

Parameters

  1. f: string:  
    figure id (key)

Returns

Figure figure properties for f

figureById

Get figure by id

Parameters

  1. figId: integer:  

Returns

Figure figure properties for figId

figureImgUrl

Get image of a figure id

Parameters

  1. figId: integer:  

Returns

string image name

configList

a list of game configurations