pygambit.gambit.Game.set_players#

Game.set_players(players: list[str], drop: bool = False, add: bool = True) None#

Set the players of the game to be players, matching by label.

An entry of players matching the label of a current player refers to that player, which keeps its moves or strategies and its payoffs at every outcome; an entry matching no current player creates a new player there, with no decisions in an extensive game, or a single strategy labeled "1" in a strategic game. A current player whose label is not in players is deleted. Listing the current labels in a new order reorders the players.

A player can only be deleted if it has no decisions in the game (in an extensive game) or exactly one strategy (in a strategic game); otherwise the operation raises.

The defaults permit creation and forbid deletion: adding a player – inserting its label into the current list – is the common, non-destructive edit, while deletion discards the player’s payoffs at every outcome, so it must be confirmed.

Added in version 17.0.0: Subsumes and replaces Game.add_player.

Parameters:
  • players (list of str) – The labels of the players the game is to have, in order. Must be nonempty and without duplicates; each label must be a valid, nonempty label, and in an extensive game must not be the reserved chance player label.

  • drop (bool, default False) – Deleting players is destructive, so it must be explicitly confirmed: if any current player is missing from players and drop is False, the operation raises without modifying the game.

  • add (bool, default True) – If False, entries of players matching no current player raise.

Raises:
  • TypeError – If players is a string, or not an iterable of strings.

  • UndefinedOperationError – If players is empty; or if a player to be deleted has decisions in the game, or more than one strategy.

  • ValueError – If a label in players is repeated, empty, is not a valid label, or (in an extensive game) is the reserved label of the chance player.