Skip to the content

Narabe並べ

Play forty-eight abstract board games through immutable moves, legal choices and replayable records.

Narabe means arranging in Japanese, as in gomoku-narabe: five in a row. About the name

Contents

Reference · Rules and records

forfeitTurnfunction

Takes the turn away from the colour to move without a stone: the graceful penalty for a missed deadline. It is a FORFEIT on the record, not a pass, so a replay changes hands at the same point the game did — a pass the rules do not offer would stop the replay there instead. Unlike a pass in the piece games, two of these in a row do not end anything; the forfeit count does.

Where the rules DO offer a pass, a missed turn is that pass and not this: forfeitOnRecord in engine.ts decides, since only the engine knows.

Import it

import { forfeitTurn } from "@johnmorrisdotca/narabe";

Definition

function forfeitTurn(state: GameState): GameState

Parameters

NameTypeDescription
stateGameState

The current immutable game position.

Returns

GameState

The resulting position; a refused or inapplicable action leaves the input position unchanged.

Examples

import { createGame, forfeitTurn } from "@johnmorrisdotca/narabe";

const state = createGame({variant:"freestyle",size:15});
console.log(forfeitTurn(state));
{
  settings: {
    size: 15,
    winLength: 5,
    variant: 'freestyle',
    opening: 'free',
    handicap: {
      stone: null,
      doubleThree: false,
      doubleFour: false,
      overline: false,
      exactLine: false,
      openLine: false,
      longerLine: false,
      singleStone: false,
      noCaptures: false,
      secondStoneExclusion: 0
    },
    headStart: { stone: null, freeTurns: 0, traditional: 0 },
    seed: 0,
    capturesToWin: 10,
    firstPlayer: 'black',
    obstacles: 'none',
    allowUndo: true,
    allowSkip: false,
    allowSwap: false,
    allowResize: false,
    swapsPerSeat: 1,
    drawLimit: 'none'
  },
  board: [
    null, null, null, null, null, null, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null,
    ... 125 more items
  ],
  moves: [ { row: -1, col: -1, stone: 'black', kind: 'forfeit' } ],
  opener: 'black',
  seats: { black: 'one', white: 'two' },
  swapsUsed: { one: 0, two: 0 },
  captures: { black: 0, white: 0 },
  opening: { stage: 'done', actor: null, choices: [] },
  toPlay: 'white',
  pendingTwist: false,
  kings: [],
  chainAt: null,
  koPoint: null,
  status: 'playing',
  winner: null,
  winBy: null,
  winningLine: []
}

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/narabe 1.3.0.