undoMovefunction
Removes the last move, putting back anything it captured, a piece where it came from, and a twisted quadrant the way it was. Also reopens a finished game. The opening is left as it stands: a colour choice is a decision, not a stone, and is not undone by lifting one.
Import it
import { undoMove } from "@johnmorrisdotca/narabe";
Definition
function undoMove(state: GameState): GameState
Parameters
| Name | Type | Description |
|---|---|---|
state | GameState | The current immutable game position. |
Returns
GameState
The resulting position; a refused or inapplicable action leaves the input position unchanged.
Examples
import { createGame, undoMove } from "@johnmorrisdotca/narabe";
const state = createGame({variant:"freestyle",size:15});
console.log(undoMove(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: [],
opener: 'black',
seats: { black: 'one', white: 'two' },
swapsUsed: { one: 0, two: 0 },
captures: { black: 0, white: 0 },
opening: { stage: 'done', actor: null, choices: [] },
toPlay: 'black',
pendingTwist: false,
kings: [],
chainAt: null,
koPoint: null,
status: 'playing',
winner: null,
winBy: null,
winningLine: []
}What it prints (run when this page was built)