@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
97 lines • 2.18 kB
TypeScript
export type StateType = number;
export namespace StateType {
let Undecided: number;
let Win: number;
let Loss: number;
let Tie: number;
let DepthCapped: number;
let NoMoves: number;
}
/**
* @template State, Action
* @author Alex Goldring
* @copyright Company Named Limited (c) 2025
*/
export class StateNode<State, Action> {
/**
* How deep is the node in the tree
* @type {number}
*/
depth: number;
/**
*
* @type {number}
*/
wins: number;
/**
* Number of leses in the subtree of this state
* @type {number}
*/
losses: number;
/**
* total number of explored playouts
* @type {number}
*/
playouts: number;
/**
*
* @type {number}
*/
heuristicValue: number;
/**
* parent node, previous state
* @type {null|StateNode}
*/
parent: null | StateNode<any, any>;
/**
*
* @type {null|MoveEdge[]}
*/
moves: null | MoveEdge<any>[];
/**
*
* @type {StateType}
*/
type: StateType;
bubbleUpHeuristicScore(): void;
/**
* Aggregate heuristic score from children
*/
aggregateHeuristicScore(): void;
/**
* @param state
* @param {function(State, source:StateNode):MoveEdge[]} computeValidMoves
* @param computeTerminalFlag
* @returns {number} number of children
*/
expand(state: any, computeValidMoves: any, computeTerminalFlag: any): number;
/**
*
* @param {number} playouts
* @param {number} wins
* @param {number} losses
*/
addPlayouts(playouts: number, wins: number, losses: number): void;
/**
* Whenever this is a terminal state or not (win/loss)
* @returns {boolean}
*/
isTerminal(): boolean;
/**
*
* @returns {boolean}
*/
isExpanded(): boolean;
/**
*
* @returns {MoveEdge[]}
*/
pickBestMoves(): MoveEdge<any>[];
/**
*
* @param {function(StateNode)} visitor
*/
traverse(visitor: (arg0: StateNode<any, any>) => any): void;
}
import { MoveEdge } from "./MoveEdge.js";
//# sourceMappingURL=StateNode.d.ts.map