tcod.map  Field of View¶
libtcod map attributes and fieldofview functions.

class
tcod.map.
Map
(width: int, height: int, order: str = 'C')[source]¶ A map containing libtcod attributes.
Changed in version 4.1: transparent, walkable, and fov are now numpy boolean arrays.
Changed in version 4.3: Added order parameter.
Parameters: 
transparent
¶ A boolean array of transparent cells.

walkable
¶ A boolean array of walkable cells.

fov
¶ A boolean array of the cells lit by :any:’compute_fov’.
Example:
>>> import tcod >>> m = tcod.map.Map(width=3, height=4) >>> m.walkable array([[False, False, False], [False, False, False], [False, False, False], [False, False, False]]...) # Like the rest of the tcod modules, all arrays here are # in rowmajor order and are addressed with [y,x] >>> m.transparent[:] = True # Sets all to True. >>> m.transparent[1:3,0] = False # Sets (1, 0) and (2, 0) to False. >>> m.transparent array([[ True, True, True], [False, True, True], [False, True, True], [ True, True, True]]...) >>> m.compute_fov(0, 0) >>> m.fov array([[ True, True, True], [ True, True, True], [False, True, True], [False, False, True]]...) >>> m.fov[3,1] False
Deprecated since version 11.13: You no longer need to use this class to hold data for fieldofview or pathfinding as those functions can now take NumPy arrays directly. See
tcod.map.compute_fov
andtcod.path
.
compute_fov
(x: int, y: int, radius: int = 0, light_walls: bool = True, algorithm: int = 12) → None[source]¶ Compute a fieldofview on the current instance.
Parameters: If you already have transparency in a NumPy array then you could use
tcod.map_compute_fov
instead.


tcod.map.
compute_fov
(transparency: numpy.ndarray, pov: Tuple[int, int], radius: int = 0, light_walls: bool = True, algorithm: int = 12) → numpy.ndarray[source]¶ Return a boolean mask of the area covered by a fieldofview.
transparency is a 2 dimensional array where all nonzero values are considered transparent. The returned array will match the shape of this array.
pov is the pointofview origin point. Areas are visible if they can be seen from this position. pov should be a 2D index matching the axes of the transparency array, and must be within the bounds of the transparency array.
radius is the maximum view distance from pov. If this is zero then the maximum distance is used.
If light_walls is True then visible obstacles will be returned, otherwise only transparent areas will be.
algorithm is the fieldofview algorithm to run. The default value is tcod.FOV_RESTRICTIVE. The options are:
 tcod.FOV_BASIC: Simple raycast implementation.
 tcod.FOV_DIAMOND
 tcod.FOV_SHADOW: Recursive shadow caster.
 tcod.FOV_PERMISSIVE(n): n starts at 0 (most restrictive) and goes up to 8 (most permissive.)
 tcod.FOV_RESTRICTIVE
 tcod.FOV_SYMMETRIC_SHADOWCAST
New in version 9.3.
Changed in version 11.0: The parameters x and y have been changed to pov.
Changed in version 11.17: Added tcod.FOV_SYMMETRIC_SHADOWCAST option.
Example
>>> explored = np.zeros((3, 5), dtype=bool, order="F") >>> transparency = np.ones((3, 5), dtype=bool, order="F") >>> transparency[:2, 2] = False >>> transparency # Transparent area. array([[ True, True, False, True, True], [ True, True, False, True, True], [ True, True, True, True, True]]...) >>> visible = tcod.map.compute_fov(transparency, (0, 0)) >>> visible # Visible area. array([[ True, True, True, False, False], [ True, True, True, False, False], [ True, True, True, True, False]]...) >>> explored = visible # Keep track of an explored area.
See also
numpy.where
: For selecting between two arrays using a boolean array, like the one returned by this function.numpy.select
: Select between arrays based on multiple conditions.