RandomKingCaptureSearch
Random bot that never declines a king it can take at once.
It plays like RandomSearch, a uniformly random legal full-turn path, with one exception: when the very first micro-move of some path captures the opponent's King (the King is under direct attack from a piece the roll lets it move), it plays one of those paths, chosen uniformly at random.
The look is deliberately one micro-move deep. A king capture that needs a preparatory micro-move (a pawn clearing a file, a second knight jump) is not looked for, and the bot does not protect its own King. That keeps it between RandomSearch and CheckmateAwareSearch, which finds multi-move captures and also keeps its King safe.
Attributes
- Source
- RandomKingCaptureSearch.scala
- Graph
-
- Supertypes
- Self type
Members list
Value members
Concrete methods
Finds a move using the shared internal Random instance.
Finds a move using the shared internal Random instance.
Value parameters
- state
-
current dicechess.engine.domain.GameState;
state.activeColorindicates who is moving
Attributes
- Returns
-
the selected ScoredSequence, or
Noneif no legal move exists (forced pass) - Definition Classes
- Source
- RandomKingCaptureSearch.scala
Finds a move with an explicit Random instance for reproducible sampling.
Finds a move with an explicit Random instance for reproducible sampling.
Value parameters
- random
-
RNG used to choose among the candidate paths
- state
Attributes
- Returns
-
the selected ScoredSequence, or
Noneif no legal move exists (forced pass) - Definition Classes
- Source
- RandomKingCaptureSearch.scala
Inherited methods
Estimates the winning probability in [0.0, 1.0] for the side to move. Convenience over winProbability for offer decisions, where the deciding side is the active colour; do not override it, override winProbability.
Estimates the winning probability in [0.0, 1.0] for the side to move. Convenience over winProbability for offer decisions, where the deciding side is the active colour; do not override it, override winProbability.
Attributes
- Inherited from:
- SearchAlgorithm
- Source
- SearchAlgorithm.scala
Determines whether the bot should accept (Take) or decline (Drop) a double from the opponent, taking the side to move as the responder. Kept for source and binary compatibility; it delegates to the three-argument overload.
Determines whether the bot should accept (Take) or decline (Drop) a double from the opponent, taking the side to move as the responder. Kept for source and binary compatibility; it delegates to the three-argument overload.
Value parameters
- currentStake
-
the proposed double stake (e.g. 2, 4...)
- state
-
current game state (dice pool is empty)
Attributes
- Returns
-
true to accept the double (Take), false to resign the current stake (Drop)
- Note
-
Perspective hazard: this overload evaluates the win probability of
state.activeColor. In a double decision state,state.activeColoris the player who offered the double, NOT the responder, so a caller that feeds the delivered position here asks whether the offerer should take. Callers must prefershouldAcceptDouble(state, currentStake, responder); strategies must override that overload, not this one. - Inherited from:
- SearchAlgorithm
- Source
- SearchAlgorithm.scala
Determines whether the bot should accept (Take) or decline (Drop) a double from the opponent, evaluated from the perspective of responder.
Determines whether the bot should accept (Take) or decline (Drop) a double from the opponent, evaluated from the perspective of responder.
This is the single policy point for the take/drop decision: strategies that want their own threshold or estimator override this overload. The two-argument form below only delegates here, so a policy written against it is bypassed whenever a caller names the responder explicitly (which every caller holding a doubleDecision state must, see the hazard note there).
Value parameters
- currentStake
-
the proposed double stake (e.g. 2, 4...)
- responder
-
the colour of the player responding to the double offer
- state
-
current game state (dice pool is empty); its active colour is the side to move, which in a double decision is the offerer, not the responder
Attributes
- Returns
-
true to accept the double (Take), false to resign the current stake (Drop)
- Inherited from:
- SearchAlgorithm
- Source
- SearchAlgorithm.scala
Determines whether the bot should accept a draw offered by the opponent.
Determines whether the bot should accept a draw offered by the opponent.
Value parameters
- state
-
current game state
Attributes
- Returns
-
true to accept the draw
- Inherited from:
- SearchAlgorithm
- Source
- SearchAlgorithm.scala
Determines whether the bot should offer a double before its dice roll.
Determines whether the bot should offer a double before its dice roll.
Value parameters
- currentStake
-
the current stake of the game
- state
-
current game state (dice pool is empty)
Attributes
- Returns
-
true to offer a double, false otherwise
- Inherited from:
- SearchAlgorithm
- Source
- SearchAlgorithm.scala
Determines whether the bot should offer a draw in the current position.
Determines whether the bot should offer a draw in the current position.
Value parameters
- state
-
current game state
Attributes
- Returns
-
true to offer a draw
- Inherited from:
- SearchAlgorithm
- Source
- SearchAlgorithm.scala
Estimates the winning probability in [0.0, 1.0] of color, whichever side is to move.
Estimates the winning probability in [0.0, 1.0] of color, whichever side is to move.
This is the estimator hook: a strategy with its own equity model (for example a Monte-Carlo rollout) overrides this method, so that both the offer decision (active colour) and the take/drop decision (responder colour) see the same estimate. The default maps the centipawn evaluation to a probability with a logistic sigmoid.
Attributes
- Inherited from:
- SearchAlgorithm
- Source
- SearchAlgorithm.scala