end of part 6 http://rogueliketutorials.com/tutorials/tcod/v2/part-6/
This commit is contained in:
parent
6e02cfcf13
commit
77a090ff1c
0
__init__.py
Normal file
0
__init__.py
Normal file
45
actions.py
45
actions.py
@ -3,11 +3,11 @@ from typing import Optional, Tuple, TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from engine import Engine
|
||||
from entity import Entity
|
||||
from entity import Entity, Actor
|
||||
|
||||
|
||||
class Action:
|
||||
def __init__(self, entity: Entity) -> None:
|
||||
def __init__(self, entity: Actor) -> None:
|
||||
super().__init__()
|
||||
self.entity = entity
|
||||
|
||||
@ -31,47 +31,66 @@ class EscapeAction(Action):
|
||||
def perform(self) -> None:
|
||||
raise SystemExit()
|
||||
|
||||
|
||||
class WaitAction(Action):
|
||||
def perform(self) -> None:
|
||||
pass
|
||||
|
||||
|
||||
class ActionWithDirection(Action):
|
||||
def __init__(self, entity: Entity, dx: int, dy: int):
|
||||
def __init__(self, entity: Actor, dx: int, dy: int):
|
||||
super().__init__(entity)
|
||||
self.dx = dx
|
||||
self.dy = dy
|
||||
|
||||
@property
|
||||
def dest_xy(self) -> Tuple[int,int]:
|
||||
def dest_xy(self) -> Tuple[int, int]:
|
||||
return self.entity.x + self.dx, self.entity.y + self.dy
|
||||
|
||||
@property
|
||||
def target_actor(self) -> Optional[Actor]:
|
||||
return self.engine.gamemap.get_actor_at_location(*self.dest_xy)
|
||||
|
||||
@property
|
||||
def blocking_entity(self) -> Optional[Entity]:
|
||||
return self.engine.game_map.get_blocking_entity_at_location(*self.dest_xy)
|
||||
return self.engine.gamemap.get_blocking_entity_at_location(*self.dest_xy)
|
||||
|
||||
def perform(self) -> None:
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
class MeleeAction(ActionWithDirection):
|
||||
def perform(self) -> None:
|
||||
target = self.blocking_entity
|
||||
target = self.target_actor
|
||||
if not target:
|
||||
return # no entity to blockj
|
||||
print(f"You kick {target.name}, much to its annoyance")
|
||||
return # no entity to blockj
|
||||
damage = self.entity.fighter.power - target.fighter.defense
|
||||
|
||||
attack_desc = f"{self.entity.name.capitalize()} attacks {target.name}"
|
||||
if damage > 0:
|
||||
print(f"{attack_desc} for {damage} hit points.")
|
||||
target.fighter.hp -= damage
|
||||
else:
|
||||
print(f"{attack_desc} but does no damage.")
|
||||
|
||||
|
||||
class MovementAction(ActionWithDirection):
|
||||
def perform(self) -> None:
|
||||
dest_x, dest_y = self.dest_xy
|
||||
|
||||
if not self.engine.game_map.in_bounds(dest_x, dest_y):
|
||||
if not self.engine.gamemap.in_bounds(dest_x, dest_y):
|
||||
return # OOB
|
||||
if not self.engine.game_map.tiles["walkable"][dest_x, dest_y]:
|
||||
if not self.engine.gamemap.tiles["walkable"][dest_x, dest_y]:
|
||||
return # can't walk
|
||||
if self.engine.game_map.get_blocking_entity_at_location(dest_x, dest_y):
|
||||
return # Blocked
|
||||
if self.engine.gamemap.get_blocking_entity_at_location(dest_x, dest_y):
|
||||
return # Blocked
|
||||
|
||||
self.entity.move(self.dx, self.dy)
|
||||
|
||||
|
||||
class BumpAction(ActionWithDirection):
|
||||
def perform(self) -> None:
|
||||
if self.blocking_entity:
|
||||
if self.target_actor:
|
||||
return MeleeAction(self.entity, self.dx, self.dy).perform()
|
||||
else:
|
||||
return MovementAction(self.entity, self.dx, self.dy).perform()
|
||||
|
0
components/__init__.py
Normal file
0
components/__init__.py
Normal file
68
components/ai.py
Normal file
68
components/ai.py
Normal file
@ -0,0 +1,68 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import List, Tuple, TYPE_CHECKING
|
||||
|
||||
import numpy as np # type: ignore
|
||||
import tcod
|
||||
|
||||
from actions import Action, MeleeAction, MovementAction, WaitAction
|
||||
from components.base_components import BaseComponent
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from entity import Actor
|
||||
|
||||
|
||||
class BaseAI(Action, BaseComponent):
|
||||
entity: Actor
|
||||
|
||||
def perform(self) -> None:
|
||||
raise NotImplementedError()
|
||||
|
||||
def get_path_to(self, dest_x: int, dest_y: int) -> List[Tuple[int, int]]:
|
||||
"""computer and return path"""
|
||||
cost = np.array(self.entity.gamemap.tiles["walkable"], dtype=np.int8)
|
||||
for entity in self.entity.gamemap.entities:
|
||||
# Check that an enitiy blocks movement and the cost isn't zero (blocking.)
|
||||
if entity.blocks_movement and cost[entity.x, entity.y]:
|
||||
# Add to the cost of a blocked position.
|
||||
# A lower number means more enemies will crowd behind each other in
|
||||
# hallways. A higher number means enemies will take longer paths in
|
||||
# order to surround the player.
|
||||
cost[entity.x, entity.y] += 10
|
||||
|
||||
graph = tcod.path.SimpleGraph(cost=cost, cardinal=2, diagonal=3)
|
||||
pathfinder = tcod.path.Pathfinder(graph)
|
||||
|
||||
pathfinder.add_root((self.entity.x, self.entity.y))
|
||||
|
||||
path: List[List[int]] = pathfinder.path_to((dest_x, dest_y))[1:].tolist()
|
||||
|
||||
return [(index[0], index[1]) for index in path]
|
||||
|
||||
|
||||
class HostileEnemy(BaseAI):
|
||||
def __init__(self, entity: Actor):
|
||||
super().__init__(entity)
|
||||
self.path: List[Tuple[int, int]] = []
|
||||
|
||||
def perform(self) -> None:
|
||||
target = self.engine.player
|
||||
dx = target.x - self.entity.x
|
||||
dy = target.y - self.entity.y
|
||||
distance = max(abs(dx), abs(dy))
|
||||
|
||||
if self.engine.gamemap.visible[self.entity.x, self.entity.y]:
|
||||
if distance <= 1:
|
||||
return MeleeAction(self.entity, dx, dy).perform()
|
||||
|
||||
self.path = self.get_path_to(target.x, target.y)
|
||||
|
||||
if self.path:
|
||||
dest_x, dest_y = self.path.pop(0)
|
||||
return MovementAction(
|
||||
self.entity,
|
||||
dest_x - self.entity.x,
|
||||
dest_y - self.entity.y,
|
||||
).perform()
|
||||
|
||||
return WaitAction(self.entity).perform()
|
14
components/base_components.py
Normal file
14
components/base_components.py
Normal file
@ -0,0 +1,14 @@
|
||||
from __future__ import annotations
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from engine import Engine
|
||||
from entity import Entity
|
||||
|
||||
|
||||
class BaseComponent:
|
||||
entity: Entity
|
||||
|
||||
@property
|
||||
def engine(self) -> Engine:
|
||||
return self.entity.gamemap.engine
|
44
components/fighter.py
Normal file
44
components/fighter.py
Normal file
@ -0,0 +1,44 @@
|
||||
from __future__ import annotations
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from components.base_components import BaseComponent
|
||||
from input_handlers import GameOverEventHandler
|
||||
from render_order import RenderOrder
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from entity import Actor
|
||||
|
||||
|
||||
class Fighter(BaseComponent):
|
||||
entity: Actor
|
||||
def __init__(self, hp: int, defense: int, power: int):
|
||||
self.max_hp = hp
|
||||
self._hp = hp
|
||||
self.defense = defense
|
||||
self.power = power
|
||||
|
||||
@property
|
||||
def hp(self) -> int:
|
||||
return self._hp
|
||||
|
||||
@hp.setter
|
||||
def hp(self, value: int) -> None:
|
||||
self._hp = max(0, min(value, self.max_hp))
|
||||
if self._hp == 0 and self.entity.ai:
|
||||
self.die()
|
||||
|
||||
def die(self) -> None:
|
||||
if self.engine.player is self.entity:
|
||||
death_message = "You died."
|
||||
self.engine.event_handler = GameOverEventHandler(self.engine)
|
||||
else:
|
||||
death_message = f"{self.entity.name} is dead!"
|
||||
|
||||
self.entity.char = "%"
|
||||
self.entity.color = (191,0,0)
|
||||
self.entity.blocks_movement = False
|
||||
self.entity.ai = None
|
||||
self.entity.name = f"remains of {self.entity.name}"
|
||||
self.entity.render_order = RenderOrder.CORPSE
|
||||
|
||||
print(death_message)
|
30
engine.py
30
engine.py
@ -5,34 +5,42 @@ from tcod.context import Context
|
||||
from tcod.console import Console
|
||||
from tcod.map import compute_fov
|
||||
|
||||
from input_handlers import EventHandler
|
||||
from input_handlers import MainGameEventHandler
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from entity import Entity
|
||||
from entity import Actor
|
||||
from input_handlers import EventHandler
|
||||
from game_map import GameMap
|
||||
|
||||
|
||||
class Engine:
|
||||
game_map: GameMap
|
||||
gamemap: GameMap
|
||||
|
||||
def __init__(self, player: Entity):
|
||||
self.event_handler: EventHandler = EventHandler(self)
|
||||
def __init__(self, player: Actor):
|
||||
self.event_handler: EventHandler = MainGameEventHandler(self)
|
||||
self.player = player
|
||||
|
||||
def handle_enemy_turns(self) -> None:
|
||||
for entity in self.game_map.entities - {self.player}:
|
||||
print(f'the {entity.name} wonders when it will move')
|
||||
for entity in set(self.gamemap.actors) - {self.player}:
|
||||
if entity.ai:
|
||||
entity.ai.perform()
|
||||
|
||||
def update_fov(self) -> None:
|
||||
self.game_map.visible[:] = compute_fov(
|
||||
self.game_map.tiles["transparent"],
|
||||
self.gamemap.visible[:] = compute_fov(
|
||||
self.gamemap.tiles["transparent"],
|
||||
(self.player.x, self.player.y),
|
||||
radius=8,
|
||||
)
|
||||
self.game_map.explored |= self.game_map.visible
|
||||
self.gamemap.explored |= self.gamemap.visible
|
||||
|
||||
def render(self, console: Console, context: Context) -> None:
|
||||
self.game_map.render(console)
|
||||
self.gamemap.render(console)
|
||||
|
||||
console.print(
|
||||
x=1,
|
||||
y=47,
|
||||
string=f"HP: {self.player.fighter.hp}/{self.player.fighter.max_hp}",
|
||||
)
|
||||
|
||||
context.present(console)
|
||||
console.clear()
|
||||
|
58
entity.py
58
entity.py
@ -1,9 +1,13 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import copy
|
||||
from typing import Tuple, TypeVar, TYPE_CHECKING, Optional
|
||||
from typing import Tuple, TypeVar, TYPE_CHECKING, Optional, Type
|
||||
|
||||
from render_order import RenderOrder
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from components.ai import BaseAI
|
||||
from components.fighter import Fighter
|
||||
from game_map import GameMap
|
||||
|
||||
T = TypeVar("T", bound="Entity")
|
||||
@ -16,14 +20,16 @@ class Entity:
|
||||
|
||||
gamemap: GameMap
|
||||
|
||||
def __init__(self,
|
||||
gamemap: Optional[GameMap] = None,
|
||||
x: int = 0,
|
||||
y: int = 0,
|
||||
char: str = "?",
|
||||
color: Tuple[int, int, int] = (255,255,255),
|
||||
name: str = "<Unnamed>",
|
||||
blocks_movement: bool = False,
|
||||
def __init__(
|
||||
self,
|
||||
gamemap: Optional[GameMap] = None,
|
||||
x: int = 0,
|
||||
y: int = 0,
|
||||
char: str = "?",
|
||||
color: Tuple[int, int, int] = (255, 255, 255),
|
||||
name: str = "<Unnamed>",
|
||||
blocks_movement: bool = False,
|
||||
render_order: RenderOrder = RenderOrder.CORPSE,
|
||||
):
|
||||
self.x = x
|
||||
self.y = y
|
||||
@ -31,6 +37,7 @@ class Entity:
|
||||
self.color = color
|
||||
self.name = name
|
||||
self.blocks_movement = blocks_movement
|
||||
self.render_order = render_order
|
||||
if gamemap:
|
||||
self.gamemap = gamemap
|
||||
gamemap.entities.add(self)
|
||||
@ -56,3 +63,36 @@ class Entity:
|
||||
def move(self, dx: int, dy: int) -> None:
|
||||
self.x += dx
|
||||
self.y += dy
|
||||
|
||||
|
||||
class Actor(Entity):
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
x: int = 0,
|
||||
y: int = 0,
|
||||
char: str = "?",
|
||||
color: Tuple[int, int, int] = (255, 255, 255),
|
||||
name: str = "<Unnamed>",
|
||||
ai_cls: Type[BaseAI],
|
||||
fighter: Fighter
|
||||
):
|
||||
super().__init__(
|
||||
x=x,
|
||||
y=y,
|
||||
char=char,
|
||||
color=color,
|
||||
name=name,
|
||||
blocks_movement=True,
|
||||
render_order=RenderOrder.ACTOR,
|
||||
)
|
||||
|
||||
self.ai: Optional[BaseAI] = ai_cls(self)
|
||||
|
||||
self.fighter = fighter
|
||||
self.fighter.entity = self
|
||||
|
||||
@property
|
||||
def is_alive(self) -> bool:
|
||||
"""returns as long as can return actions."""
|
||||
return bool(self.ai)
|
||||
|
@ -1,7 +1,27 @@
|
||||
from entity import Entity
|
||||
from components.ai import HostileEnemy
|
||||
from components.fighter import Fighter
|
||||
from entity import Actor
|
||||
|
||||
|
||||
player = Entity(char="@", color=(255, 255, 255), name="Player", blocks_movement=True)
|
||||
player = Actor(
|
||||
char="@",
|
||||
color=(255, 255, 255),
|
||||
name="Player",
|
||||
ai_cls=HostileEnemy,
|
||||
fighter=Fighter(hp=30, defense=2, power=5),
|
||||
)
|
||||
|
||||
orc = Entity(char="o", color=(63, 127, 63), name="Orc", blocks_movement=True)
|
||||
troll = Entity(char="T", color=(0, 127, 0), name="Troll", blocks_movement=True)
|
||||
orc = Actor(
|
||||
char="o",
|
||||
color=(63, 127, 63),
|
||||
name="Orc",
|
||||
ai_cls=HostileEnemy,
|
||||
fighter=Fighter(hp=10, defense=0, power=3),
|
||||
)
|
||||
troll = Actor(
|
||||
char="T",
|
||||
color=(0, 127, 0),
|
||||
name="Troll",
|
||||
ai_cls=HostileEnemy,
|
||||
fighter=Fighter(hp=16, defense=1, power=4),
|
||||
)
|
||||
|
42
game_map.py
42
game_map.py
@ -1,9 +1,10 @@
|
||||
from __future__ import annotations
|
||||
from typing import Iterable, TYPE_CHECKING, Optional
|
||||
from typing import Iterable, TYPE_CHECKING, Optional, Iterator
|
||||
|
||||
import numpy as np # type: ignore
|
||||
from tcod.console import Console
|
||||
|
||||
from entity import Actor
|
||||
import tile_types
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@ -12,11 +13,8 @@ if TYPE_CHECKING:
|
||||
|
||||
|
||||
class GameMap:
|
||||
def __init__(self,
|
||||
engine: Engine,
|
||||
width: int,
|
||||
height: int,
|
||||
entities: Iterable[Entity] = ()
|
||||
def __init__(
|
||||
self, engine: Engine, width: int, height: int, entities: Iterable[Entity] = ()
|
||||
):
|
||||
self.engine = engine
|
||||
self.width, self.height = width, height
|
||||
@ -30,18 +28,32 @@ class GameMap:
|
||||
(width, height), fill_value=False, order="F"
|
||||
) # Tiles the player has seen before
|
||||
|
||||
@property
|
||||
def actors(self) -> Iterator[Actor]:
|
||||
yield from (
|
||||
entity
|
||||
for entity in self.entities
|
||||
if isinstance(entity, Actor) and entity.is_alive
|
||||
)
|
||||
|
||||
def get_blocking_entity_at_location(
|
||||
self, location_x: int, location_y: int
|
||||
self, location_x: int, location_y: int
|
||||
) -> Optional[Entity]:
|
||||
for entity in self.entities:
|
||||
if (
|
||||
entity.blocks_movement
|
||||
and entity.x == location_x
|
||||
and entity.y == location_y
|
||||
entity.blocks_movement
|
||||
and entity.x == location_x
|
||||
and entity.y == location_y
|
||||
):
|
||||
return entity
|
||||
return None
|
||||
|
||||
def get_actor_at_location(self, x: int, y: int) -> Optional[Actor]:
|
||||
for actor in self.actors:
|
||||
if actor.x == x and actor.y == y:
|
||||
return actor
|
||||
return None
|
||||
|
||||
def in_bounds(self, x: int, y: int) -> bool:
|
||||
return 0 <= x < self.width and 0 <= y < self.height
|
||||
|
||||
@ -52,6 +64,12 @@ class GameMap:
|
||||
default=tile_types.SHROUD,
|
||||
)
|
||||
|
||||
for entity in self.entities:
|
||||
entities_sorted_for_rendering = sorted(
|
||||
self.entities, key=lambda x: x.render_order.value
|
||||
)
|
||||
|
||||
for entity in entities_sorted_for_rendering:
|
||||
if self.visible[entity.x, entity.y]:
|
||||
console.print(entity.x, entity.y, entity.char, fg=entity.color)
|
||||
console.print(
|
||||
x=entity.x, y=entity.y, string=entity.char, fg=entity.color
|
||||
)
|
||||
|
@ -3,15 +3,60 @@ from typing import Optional, TYPE_CHECKING
|
||||
|
||||
import tcod.event
|
||||
|
||||
from actions import Action, EscapeAction, BumpAction
|
||||
from actions import Action, EscapeAction, BumpAction, WaitAction
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from engine import Engine
|
||||
|
||||
MOVE_KEYS = {
|
||||
# Arrow keys.
|
||||
tcod.event.K_UP: (0, -1),
|
||||
tcod.event.K_DOWN: (0, 1),
|
||||
tcod.event.K_LEFT: (-1, 0),
|
||||
tcod.event.K_RIGHT: (1, 0),
|
||||
tcod.event.K_HOME: (-1, -1),
|
||||
tcod.event.K_END: (-1, 1),
|
||||
tcod.event.K_PAGEUP: (1, -1),
|
||||
tcod.event.K_PAGEDOWN: (1, 1),
|
||||
# Numpad keys.
|
||||
tcod.event.K_KP_1: (-1, 1),
|
||||
tcod.event.K_KP_2: (0, 1),
|
||||
tcod.event.K_KP_3: (1, 1),
|
||||
tcod.event.K_KP_4: (-1, 0),
|
||||
tcod.event.K_KP_6: (1, 0),
|
||||
tcod.event.K_KP_7: (-1, -1),
|
||||
tcod.event.K_KP_8: (0, -1),
|
||||
tcod.event.K_KP_9: (1, -1),
|
||||
# Vi keys.
|
||||
tcod.event.K_h: (-1, 0),
|
||||
tcod.event.K_j: (0, 1),
|
||||
tcod.event.K_k: (0, -1),
|
||||
tcod.event.K_l: (1, 0),
|
||||
tcod.event.K_y: (-1, -1),
|
||||
tcod.event.K_u: (1, -1),
|
||||
tcod.event.K_b: (-1, 1),
|
||||
tcod.event.K_n: (1, 1),
|
||||
}
|
||||
|
||||
WAIT_KEYS = {
|
||||
tcod.event.K_PERIOD,
|
||||
tcod.event.K_KP_5,
|
||||
tcod.event.K_CLEAR,
|
||||
}
|
||||
|
||||
|
||||
class EventHandler(tcod.event.EventDispatch[Action]):
|
||||
def __init__(self, engine: Engine):
|
||||
self.engine = engine
|
||||
|
||||
def handle_events(self) -> None:
|
||||
raise NotImplementedError()
|
||||
|
||||
def ev_quit(self, event: tcod.event.Quit) -> Optional[Action]:
|
||||
raise SystemExit()
|
||||
|
||||
|
||||
class MainGameEventHandler(EventHandler):
|
||||
def handle_events(self) -> None:
|
||||
for event in tcod.event.wait():
|
||||
action = self.dispatch(event)
|
||||
@ -23,25 +68,36 @@ class EventHandler(tcod.event.EventDispatch[Action]):
|
||||
self.engine.handle_enemy_turns()
|
||||
self.engine.update_fov()
|
||||
|
||||
def ev_quit(self, event: tcod.event.Quit) -> Optional[Action]:
|
||||
raise SystemExit()
|
||||
|
||||
def ev_keydown(self, event: tcod.event.KeyDown) -> Optional[Action]:
|
||||
action: Optional[Action] = None
|
||||
|
||||
key = event.sym
|
||||
player = self.engine.player
|
||||
|
||||
if key == tcod.event.K_UP:
|
||||
action = BumpAction(player, dx=0, dy=-1)
|
||||
elif key == tcod.event.K_DOWN:
|
||||
action = BumpAction(player, dx=0, dy=1)
|
||||
elif key == tcod.event.K_LEFT:
|
||||
action = BumpAction(player, dx=-1, dy=0)
|
||||
elif key == tcod.event.K_RIGHT:
|
||||
action = BumpAction(player, dx=1, dy=0)
|
||||
|
||||
elif key == tcod.event.K_ESCAPE:
|
||||
action = EscapeAction(player)
|
||||
if key in MOVE_KEYS:
|
||||
dx, dy = MOVE_KEYS[key]
|
||||
action = BumpAction(player, dx, dy)
|
||||
elif key == WAIT_KEYS:
|
||||
action = WaitAction(player)
|
||||
|
||||
return action
|
||||
|
||||
class GameOverEventHandler(EventHandler):
|
||||
def handle_events(self) -> None:
|
||||
for event in tcod.event.wait():
|
||||
action = self.dispatch(event)
|
||||
|
||||
if action is None:
|
||||
continue
|
||||
|
||||
action.perform()
|
||||
|
||||
def ev_keydown(self, event: tcode.event.KeyDown) -> Optional[Action]:
|
||||
action: Optional[Action] = None
|
||||
|
||||
key = event.sym
|
||||
|
||||
if key == tcod.event.K_ESCAPE:
|
||||
action = EscapeAction(self.engine.player)
|
||||
|
||||
return action
|
||||
|
3
main.py
3
main.py
@ -28,7 +28,7 @@ def main():
|
||||
player = copy.deepcopy(entity_factories.player)
|
||||
engine = Engine(player=player)
|
||||
|
||||
engine.game_map = generate_dungeon(
|
||||
engine.gamemap = generate_dungeon(
|
||||
max_rooms=max_rooms,
|
||||
room_min_size=room_min_size,
|
||||
room_max_size=room_max_size,
|
||||
@ -39,7 +39,6 @@ def main():
|
||||
)
|
||||
engine.update_fov()
|
||||
|
||||
|
||||
with tcod.context.new_terminal(
|
||||
screen_width,
|
||||
screen_height,
|
||||
|
14
procgen.py
14
procgen.py
@ -55,19 +55,21 @@ def tunnel_between(
|
||||
for x, y in tcod.los.bresenham((corner_x, corner_y), (x2, y2)).tolist():
|
||||
yield x, y
|
||||
|
||||
|
||||
def place_entities(
|
||||
room: RectangularRoom, dungeon: GameMap, maximum_monsters: int
|
||||
) -> None:
|
||||
room: RectangularRoom, dungeon: GameMap, maximum_monsters: int
|
||||
) -> None:
|
||||
number_of_monsters = random.randint(0, maximum_monsters)
|
||||
|
||||
for i in range(number_of_monsters):
|
||||
x = random.randint(room.x1 + 1, room.x2 -1)
|
||||
y = random.randint(room.y1 + 1, room.y2 -1)
|
||||
x = random.randint(room.x1 + 1, room.x2 - 1)
|
||||
y = random.randint(room.y1 + 1, room.y2 - 1)
|
||||
if not any(entity.x == x and entity.y == y for entity in dungeon.entities):
|
||||
if random.random() <= 0.8:
|
||||
entity_factories.orc.spawn(dungeon, x,y)
|
||||
entity_factories.orc.spawn(dungeon, x, y)
|
||||
else:
|
||||
entity_factories.troll.spawn(dungeon, x,y)
|
||||
entity_factories.troll.spawn(dungeon, x, y)
|
||||
|
||||
|
||||
def generate_dungeon(
|
||||
max_rooms: int,
|
||||
|
7
render_order.py
Normal file
7
render_order.py
Normal file
@ -0,0 +1,7 @@
|
||||
from enum import auto, Enum
|
||||
|
||||
|
||||
class RenderOrder(Enum):
|
||||
CORPSE = auto()
|
||||
ITEM = auto()
|
||||
ACTOR = auto()
|
53
tags
53
tags
@ -121,6 +121,7 @@ ABI venv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py /^ABI = sysco
|
||||
ACCEPT_ENCODING venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/request.py /^ACCEPT_ENCODING = "gzip,deflate"$/;" v
|
||||
ACF venv/lib/python3.10/site-packages/numpy/typing/tests/data/pass/literal.py /^ACF = frozenset({None, "A", "C", "F"})$/;" v
|
||||
ACO venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py /^ACO = 5 # accent capital other$/;" v
|
||||
ACTOR render_order.py /^ ACTOR = auto()$/;" v class:RenderOrder
|
||||
ACV venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py /^ACV = 4 # accent capital vowel$/;" v
|
||||
AC_BACK venv/lib/python3.10/site-packages/tcod/event.py /^ AC_BACK = 1073742094$/;" v class:KeySym
|
||||
AC_BACK venv/lib/python3.10/site-packages/tcod/event.py /^ AC_BACK = 270$/;" v class:Scancode
|
||||
@ -285,6 +286,7 @@ AbstractTest venv/lib/python3.10/site-packages/numpy/core/tests/test_cpu_feature
|
||||
Action actions.py /^class Action:$/;" c
|
||||
ActionWithDirection actions.py /^class ActionWithDirection(Action):$/;" c
|
||||
ActiveFormattingElements venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/base.py /^class ActiveFormattingElements(list):$/;" c
|
||||
Actor entity.py /^class Actor(Entity):$/;" c
|
||||
AdjacentTempDirectory venv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py /^class AdjacentTempDirectory(TempDirectory):$/;" c
|
||||
AfterAfterBodyPhase venv/lib/python3.10/site-packages/pip/_vendor/html5lib/html5parser.py /^ class AfterAfterBodyPhase(Phase):$/;" c function:getPhases file:
|
||||
AfterAfterFramesetPhase venv/lib/python3.10/site-packages/pip/_vendor/html5lib/html5parser.py /^ class AfterAfterFramesetPhase(Phase):$/;" c function:getPhases file:
|
||||
@ -531,12 +533,14 @@ Bar venv/lib/python3.10/site-packages/numpy/core/tests/test_multiarray.py /^
|
||||
Bar venv/lib/python3.10/site-packages/pip/_vendor/progress/bar.py /^class Bar(Progress):$/;" c
|
||||
Base venv/lib/python3.10/site-packages/blib2to3/pytree.py /^class Base(object):$/;" c
|
||||
Base venv/lib/python3.10/site-packages/numpy/random/tests/test_direct.py /^class Base:$/;" c
|
||||
BaseAI components/ai.py /^class BaseAI(Action, BaseComponent):$/;" c
|
||||
BaseAction venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__init__.py /^class BaseAction:$/;" c
|
||||
BaseAdapter venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py /^class BaseAdapter(object):$/;" c
|
||||
BaseCache venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py /^class BaseCache(object):$/;" c
|
||||
BaseCandidate venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py /^BaseCandidate = Union[$/;" v
|
||||
BaseCommand venv/lib/python3.10/site-packages/click/__init__.py /^from .core import BaseCommand as BaseCommand$/;" x nameref:unknown:BaseCommand
|
||||
BaseCommand venv/lib/python3.10/site-packages/click/core.py /^class BaseCommand:$/;" c
|
||||
BaseComponent components/base_components.py /^class BaseComponent:$/;" c
|
||||
BaseConfigurator venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py /^ class BaseConfigurator(object):$/;" c
|
||||
BaseDistribution venv/lib/python3.10/site-packages/pip/_internal/metadata/base.py /^class BaseDistribution(Protocol):$/;" c
|
||||
BaseDownloadProgressBar venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py /^class BaseDownloadProgressBar(WindowsMixin, InterruptibleMixin, DownloadProgressMixin):$/;" c
|
||||
@ -897,6 +901,7 @@ CONVERT_PATTERN venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py
|
||||
COORD venv/lib/python3.10/site-packages/pip/_vendor/colorama/win32.py /^ COORD = wintypes._COORD$/;" v
|
||||
COPY venv/lib/python3.10/site-packages/tcod/event.py /^ COPY = 1073741948$/;" v class:KeySym
|
||||
COPY venv/lib/python3.10/site-packages/tcod/event.py /^ COPY = 124$/;" v class:Scancode
|
||||
CORPSE render_order.py /^ CORPSE = auto()$/;" v class:RenderOrder
|
||||
COUNTER venv/lib/python3.10/site-packages/numpy/f2py/symbolic.py /^COUNTER = _counter()$/;" v
|
||||
CO_NEWLOCALS venv/lib/python3.10/site-packages/numpy/compat/_inspect.py /^CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, CO_VARKEYWORDS = 1, 2, 4, 8$/;" v
|
||||
CO_OPTIMIZED venv/lib/python3.10/site-packages/numpy/compat/_inspect.py /^CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, CO_VARKEYWORDS = 1, 2, 4, 8$/;" v
|
||||
@ -1836,6 +1841,7 @@ False_ venv/lib/python3.10/site-packages/numpy/core/numeric.py /^False_ = bool_(
|
||||
FancyGetopt venv/lib/python3.10/site-packages/setuptools/_distutils/fancy_getopt.py /^class FancyGetopt:$/;" c
|
||||
Feature venv/lib/python3.10/site-packages/black/mode.py /^class Feature(Enum):$/;" c
|
||||
FieldExpr venv/lib/python3.10/site-packages/cffi/recompiler.py /^class FieldExpr:$/;" c
|
||||
Fighter components/fighter.py /^class Fighter(BaseComponent):$/;" c
|
||||
File venv/lib/python3.10/site-packages/click/__init__.py /^from .types import File as File$/;" x nameref:unknown:File
|
||||
File venv/lib/python3.10/site-packages/click/types.py /^class File(ParamType):$/;" c
|
||||
File venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py /^ class File(Protocol):$/;" c
|
||||
@ -1969,6 +1975,7 @@ GT venv/lib/python3.10/site-packages/numpy/f2py/symbolic.py /^ GT = 5$/;" v c
|
||||
GUI venv/lib/python3.10/site-packages/tcod/event.py /^ GUI = LGUI | RGUI$/;" v class:Modifier
|
||||
G_FLAGS venv/lib/python3.10/site-packages/cffi/cffi_opcode.py /^G_FLAGS = dict([('_CFFI_' + _key, globals()[_key])$/;" v
|
||||
GameMap game_map.py /^class GameMap:$/;" c
|
||||
GameOverEventHandler input_handlers.py /^class GameOverEventHandler(EventHandler):$/;" c
|
||||
GenericAlias venv/lib/python3.10/site-packages/typing_extensions.py /^ GenericAlias = typing._GenericAlias$/;" v
|
||||
GenericMeta venv/lib/python3.10/site-packages/typing_extensions.py /^ GenericMeta = type$/;" v
|
||||
GenericObject venv/lib/python3.10/site-packages/numpy/testing/print_coercion_tables.py /^class GenericObject:$/;" c
|
||||
@ -2143,6 +2150,7 @@ Hlist venv/lib/python3.10/site-packages/numpy/polynomial/tests/test_hermite.py /
|
||||
HookMissing venv/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py /^class HookMissing(Exception):$/;" c
|
||||
HookMissing venv/lib/python3.10/site-packages/pip/_vendor/pep517/wrappers.py /^class HookMissing(Exception):$/;" c
|
||||
HostChangedError venv/lib/python3.10/site-packages/pip/_vendor/urllib3/exceptions.py /^class HostChangedError(RequestError):$/;" c
|
||||
HostileEnemy components/ai.py /^class HostileEnemy(BaseAI):$/;" c
|
||||
I venv/lib/python3.10/site-packages/numpy/matrixlib/defmatrix.py /^ def I(self):$/;" m class:matrix
|
||||
I venv/lib/python3.10/site-packages/tcod/event.py /^ I = 12 # noqa: E741$/;" v class:Scancode
|
||||
IBM855_RUSSIAN_CHAR_TO_ORDER venv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py /^IBM855_RUSSIAN_CHAR_TO_ORDER = {$/;" v
|
||||
@ -2270,6 +2278,7 @@ IS_PYPY venv/lib/python3.10/site-packages/setuptools/_distutils/sysconfig.py /^I
|
||||
IS_PYSTON venv/lib/python3.10/site-packages/numpy/testing/_private/utils.py /^IS_PYSTON = hasattr(sys, "pyston_version_info")$/;" v
|
||||
IS_S390X venv/lib/python3.10/site-packages/numpy/f2py/tests/test_return_character.py /^IS_S390X = platform.machine() == 's390x'$/;" v
|
||||
IS_SECURETRANSPORT venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_.py /^IS_SECURETRANSPORT = False$/;" v
|
||||
ITEM render_order.py /^ ITEM = auto()$/;" v class:RenderOrder
|
||||
ITER_CHUNK_SIZE venv/lib/python3.10/site-packages/pip/_vendor/requests/models.py /^ITER_CHUNK_SIZE = 512$/;" v
|
||||
ITS_ME venv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py /^ ITS_ME = 2$/;" v class:MachineState
|
||||
I_arr_10 venv/lib/python3.10/site-packages/numpy/typing/tests/data/pass/random.py /^I_arr_10: np.ndarray[Any, np.dtype[np.int_]] = np.array([10], dtype=np.int_)$/;" v typeref:typename:np.ndarray[Any, np.dtype[np.int_]]
|
||||
@ -3338,6 +3347,7 @@ MODULE venv/lib/python3.10/site-packages/pkg_resources/__init__.py /^MODULE = re
|
||||
MOUSEWHEEL venv/lib/python3.10/site-packages/tcod/event_constants.py /^MOUSEWHEEL = 1027$/;" v
|
||||
MOUSEWHEEL_FLIPPED venv/lib/python3.10/site-packages/tcod/event_constants.py /^MOUSEWHEEL_FLIPPED = 1$/;" v
|
||||
MOUSEWHEEL_NORMAL venv/lib/python3.10/site-packages/tcod/event_constants.py /^MOUSEWHEEL_NORMAL = 0$/;" v
|
||||
MOVE_KEYS input_handlers.py /^MOVE_KEYS = {$/;" v
|
||||
MSBuild venv/lib/python3.10/site-packages/setuptools/msvc.py /^ def MSBuild(self):$/;" m class:EnvironmentInfo
|
||||
MSVCCompiler venv/lib/python3.10/site-packages/numpy/distutils/msvc9compiler.py /^class MSVCCompiler(_MSVCCompiler):$/;" c
|
||||
MSVCCompiler venv/lib/python3.10/site-packages/numpy/distutils/msvccompiler.py /^class MSVCCompiler(_MSVCCompiler):$/;" c
|
||||
@ -3365,6 +3375,7 @@ Macro venv/lib/python3.10/site-packages/pycparser/ply/cpp.py /^class Macro(objec
|
||||
MacroExpander venv/lib/python3.10/site-packages/setuptools/_distutils/msvc9compiler.py /^class MacroExpander:$/;" c
|
||||
MacroExpander venv/lib/python3.10/site-packages/setuptools/_distutils/msvccompiler.py /^class MacroExpander:$/;" c
|
||||
MagicFinder venv/lib/python3.10/site-packages/black/handle_ipynb_magics.py /^class MagicFinder(ast.NodeVisitor):$/;" c
|
||||
MainGameEventHandler input_handlers.py /^class MainGameEventHandler(EventHandler):$/;" c
|
||||
Manifest venv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py /^class Manifest(object):$/;" c
|
||||
Map venv/lib/python3.10/site-packages/numpy/core/tests/test_multiarray.py /^ class Map:$/;" c member:TestCreation.test_non_sequence_sequence file:
|
||||
Map venv/lib/python3.10/site-packages/tcod/map.py /^class Map(object):$/;" c
|
||||
@ -6080,6 +6091,7 @@ ReleaseRange venv/lib/python3.10/site-packages/blib2to3/pgen2/driver.py /^class
|
||||
RemoteNotFoundError venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py /^class RemoteNotFoundError(Exception):$/;" c
|
||||
RemoteNotValidError venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py /^class RemoteNotValidError(Exception):$/;" c
|
||||
RemovedCommandError venv/lib/python3.10/site-packages/setuptools/errors.py /^class RemovedCommandError(DistutilsError, RuntimeError):$/;" c
|
||||
RenderOrder render_order.py /^class RenderOrder(Enum):$/;" c
|
||||
Replacement venv/lib/python3.10/site-packages/black/handle_ipynb_magics.py /^class Replacement:$/;" c
|
||||
Report venv/lib/python3.10/site-packages/black/report.py /^class Report:$/;" c
|
||||
Repository venv/lib/python3.10/site-packages/numpy/lib/_datasource.py /^class Repository (DataSource):$/;" c
|
||||
@ -8214,6 +8226,7 @@ Visitor venv/lib/python3.10/site-packages/black/nodes.py /^class Visitor(Generic
|
||||
VoidType venv/lib/python3.10/site-packages/cffi/model.py /^class VoidType(BaseType):$/;" c
|
||||
VsTDb venv/lib/python3.10/site-packages/setuptools/msvc.py /^ def VsTDb(self):$/;" m class:EnvironmentInfo
|
||||
W venv/lib/python3.10/site-packages/tcod/event.py /^ W = 26$/;" v class:Scancode
|
||||
WAIT_KEYS input_handlers.py /^WAIT_KEYS = {$/;" v
|
||||
WARN venv/lib/python3.10/site-packages/setuptools/_distutils/log.py /^WARN = 3$/;" v
|
||||
WAVELET venv/lib/python3.10/site-packages/tcod/noise.py /^ WAVELET = 4$/;" v class:Algorithm
|
||||
WHEEL_BUILT_MARKER venv/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py /^WHEEL_BUILT_MARKER = 'PEP517_ALREADY_BUILT_WHEEL'$/;" v
|
||||
@ -8252,6 +8265,7 @@ WRITE_SUPPORT venv/lib/python3.10/site-packages/pkg_resources/__init__.py /^
|
||||
WS_TRANS venv/lib/python3.10/site-packages/setuptools/_distutils/fancy_getopt.py /^WS_TRANS = {ord(_wschar) : ' ' for _wschar in string.whitespace}$/;" v
|
||||
WWW venv/lib/python3.10/site-packages/tcod/event.py /^ WWW = 1073742088$/;" v class:KeySym
|
||||
WWW venv/lib/python3.10/site-packages/tcod/event.py /^ WWW = 264$/;" v class:Scancode
|
||||
WaitAction actions.py /^class WaitAction(Action):$/;" c
|
||||
WeirdArrayInterface venv/lib/python3.10/site-packages/numpy/core/tests/test_deprecations.py /^ class WeirdArrayInterface:$/;" c class:TestSpecialAttributeLookupFailure
|
||||
WeirdArrayLike venv/lib/python3.10/site-packages/numpy/core/tests/test_deprecations.py /^ class WeirdArrayLike:$/;" c class:TestSpecialAttributeLookupFailure
|
||||
Wheel venv/lib/python3.10/site-packages/pip/_internal/models/wheel.py /^class Wheel:$/;" c
|
||||
@ -10369,11 +10383,14 @@ __index__ venv/lib/python3.10/site-packages/numpy/random/tests/test_random.py /^
|
||||
__index__ venv/lib/python3.10/site-packages/numpy/typing/tests/data/pass/array_constructors.py /^ def __index__(self) -> int:$/;" m class:Index typeref:typename:int
|
||||
__index__ venv/lib/python3.10/site-packages/numpy/typing/tests/data/pass/scalars.py /^ def __index__(self) -> int:$/;" m class:D typeref:typename:int
|
||||
__index__ venv/lib/python3.10/site-packages/typing_extensions.py /^ def __index__(self) -> int:$/;" m class:SupportsIndex typeref:typename:int
|
||||
__init__ actions.py /^ def __init__(self, entity: Entity) -> None:$/;" m class:Action typeref:typename:None
|
||||
__init__ actions.py /^ def __init__(self, entity: Entity, dx: int, dy: int):$/;" m class:ActionWithDirection
|
||||
__init__ engine.py /^ def __init__(self, player: Entity):$/;" m class:Engine
|
||||
__init__ entity.py /^ def __init__(self,$/;" m class:Entity
|
||||
__init__ game_map.py /^ def __init__(self,$/;" m class:GameMap
|
||||
__init__ actions.py /^ def __init__(self, entity: Actor) -> None:$/;" m class:Action typeref:typename:None
|
||||
__init__ actions.py /^ def __init__(self, entity: Actor, dx: int, dy: int):$/;" m class:ActionWithDirection
|
||||
__init__ components/ai.py /^ def __init__(self, entity: Actor):$/;" m class:HostileEnemy
|
||||
__init__ components/fighter.py /^ def __init__(self, hp: int, defense: int, power: int):$/;" m class:Fighter
|
||||
__init__ engine.py /^ def __init__(self, player: Actor):$/;" m class:Engine
|
||||
__init__ entity.py /^ def __init__($/;" m class:Actor
|
||||
__init__ entity.py /^ def __init__($/;" m class:Entity
|
||||
__init__ game_map.py /^ def __init__($/;" m class:GameMap
|
||||
__init__ input_handlers.py /^ def __init__(self, engine: Engine):$/;" m class:EventHandler
|
||||
__init__ procgen.py /^ def __init__(self, x: int, y: int, width: int, height: int):$/;" m class:RectangularRoom
|
||||
__init__ venv/lib/python3.10/site-packages/black/handle_ipynb_magics.py /^ def __init__(self) -> None:$/;" m class:MagicFinder typeref:typename:None
|
||||
@ -17011,6 +17028,7 @@ acos venv/lib/python3.10/site-packages/numpy/array_api/_elementwise_functions.py
|
||||
acosh venv/lib/python3.10/site-packages/numpy/array_api/_elementwise_functions.py /^def acosh(x: Array, \/) -> Array:$/;" f typeref:typename:Array
|
||||
activate venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py /^ def activate(self, path=None, replace=False):$/;" m class:Distribution
|
||||
activate venv/lib/python3.10/site-packages/pkg_resources/__init__.py /^ def activate(self, path=None, replace=False):$/;" m class:Distribution
|
||||
actors game_map.py /^ def actors(self) -> Iterator[Actor]:$/;" m class:GameMap typeref:typename:Iterator[Actor]
|
||||
add venv/lib/python3.10/site-packages/numpy/array_api/_elementwise_functions.py /^def add(x1: Array, x2: Array, \/) -> Array:$/;" f typeref:typename:Array
|
||||
add venv/lib/python3.10/site-packages/numpy/core/defchararray.py /^def add(x1, x2):$/;" f
|
||||
add venv/lib/python3.10/site-packages/numpy/f2py/func2subr.py /^ def add(line, ret=ret):$/;" f function:createfuncwrapper file:
|
||||
@ -20236,7 +20254,7 @@ description venv/lib/python3.10/site-packages/setuptools/command/upload_docs.py
|
||||
description_of venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py /^def description_of(lines, name='stdin'):$/;" f
|
||||
descriptors venv/lib/python3.10/site-packages/numpy/core/include/numpy/experimental_dtype_api.h /^ PyArray_Descr **descriptors;$/;" m struct:__anoncd93f9d90408 typeref:typename:PyArray_Descr **
|
||||
dest_path venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py /^ dest_path = None # type: str$/;" v class:File
|
||||
dest_xy actions.py /^ def dest_xy(self) -> Tuple[int,int]:$/;" m class:ActionWithDirection typeref:typename:Tuple[int,int]
|
||||
dest_xy actions.py /^ def dest_xy(self) -> Tuple[int, int]:$/;" m class:ActionWithDirection typeref:typename:Tuple[int,int]
|
||||
det venv/lib/python3.10/site-packages/numpy/array_api/linalg.py /^def det(x: Array, \/) -> Array:$/;" f typeref:typename:Array
|
||||
det venv/lib/python3.10/site-packages/numpy/dual.py /^det = linpkg.det$/;" v
|
||||
det venv/lib/python3.10/site-packages/numpy/linalg/linalg.py /^def det(a):$/;" f
|
||||
@ -20294,6 +20312,7 @@ dict_iteritems venv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py
|
||||
dict_to_sequence venv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py /^def dict_to_sequence(d):$/;" f
|
||||
dictappend venv/lib/python3.10/site-packages/numpy/f2py/auxfuncs.py /^def dictappend(rd, ar):$/;" f
|
||||
dictionary venv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py /^ def dictionary(self):$/;" m class:Metadata
|
||||
die components/fighter.py /^ def die(self) -> None:$/;" m class:Fighter typeref:typename:None
|
||||
diff venv/lib/python3.10/site-packages/black/output.py /^def diff(a: str, b: str, a_name: str, b_name: str) -> str:$/;" f typeref:typename:str
|
||||
diff venv/lib/python3.10/site-packages/black/report.py /^ diff: bool = False$/;" v class:Report typeref:typename:bool
|
||||
diff venv/lib/python3.10/site-packages/numpy/lib/function_base.py /^def diff(a, n=1, axis=-1, prepend=np._NoValue, append=np._NoValue):$/;" f
|
||||
@ -20859,6 +20878,7 @@ endprogs venv/lib/python3.10/site-packages/blib2to3/pgen2/tokenize.py /^endprogs
|
||||
endswith venv/lib/python3.10/site-packages/numpy/core/defchararray.py /^ def endswith(self, suffix, start=0, end=None):$/;" m class:chararray
|
||||
endswith venv/lib/python3.10/site-packages/numpy/core/defchararray.py /^def endswith(a, suffix, start=0, end=None):$/;" f
|
||||
engine actions.py /^ def engine(self) -> Engine:$/;" m class:Action typeref:typename:Engine
|
||||
engine components/base_components.py /^ def engine(self) -> Engine:$/;" m class:BaseComponent typeref:typename:Engine
|
||||
english_capitalize venv/lib/python3.10/site-packages/numpy/core/_string_helpers.py /^def english_capitalize(s):$/;" f
|
||||
english_lower venv/lib/python3.10/site-packages/numpy/core/_string_helpers.py /^def english_lower(s):$/;" f
|
||||
english_upper venv/lib/python3.10/site-packages/numpy/core/_string_helpers.py /^def english_upper(s):$/;" f
|
||||
@ -20993,7 +21013,8 @@ eta_td venv/lib/python3.10/site-packages/pip/_vendor/progress/__init__.py /^
|
||||
etree venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py /^import lxml.etree as etree$/;" I nameref:module:lxml.etree
|
||||
etree_builders venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py /^from . import etree as etree_builders$/;" x nameref:unknown:etree
|
||||
ev_ venv/lib/python3.10/site-packages/tcod/event.py /^ def ev_(self, event: Any) -> Optional[T]:$/;" m class:EventDispatch typeref:typename:Optional[T]
|
||||
ev_keydown input_handlers.py /^ def ev_keydown(self, event: tcod.event.KeyDown) -> Optional[Action]:$/;" m class:EventHandler typeref:typename:Optional[Action]
|
||||
ev_keydown input_handlers.py /^ def ev_keydown(self, event: tcod.event.KeyDown) -> Optional[Action]:$/;" m class:MainGameEventHandler typeref:typename:Optional[Action]
|
||||
ev_keydown input_handlers.py /^ def ev_keydown(self, event: tcode.event.KeyDown) -> Optional[Action]:$/;" m class:GameOverEventHandler typeref:typename:Optional[Action]
|
||||
ev_keydown venv/lib/python3.10/site-packages/tcod/event.py /^ def ev_keydown(self, event: tcod.event.KeyDown) -> Optional[T]:$/;" m class:EventDispatch typeref:typename:Optional[T]
|
||||
ev_keyup venv/lib/python3.10/site-packages/tcod/event.py /^ def ev_keyup(self, event: tcod.event.KeyUp) -> Optional[T]:$/;" m class:EventDispatch typeref:typename:Optional[T]
|
||||
ev_mousebuttondown venv/lib/python3.10/site-packages/tcod/event.py /^ def ev_mousebuttondown(self, event: tcod.event.MouseButtonDown) -> Optional[T]:$/;" m class:EventDispatch typeref:typename:Optional[T]
|
||||
@ -22304,6 +22325,7 @@ getTreeBuilder venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilde
|
||||
getTreeWalker venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py /^def getTreeWalker(treeType, implementation=None, **kwargs):$/;" f
|
||||
get_abi3_suffix venv/lib/python3.10/site-packages/setuptools/command/build_ext.py /^def get_abi3_suffix():$/;" f
|
||||
get_active_window venv/lib/python3.10/site-packages/tcod/sdl.py /^def get_active_window() -> Window:$/;" f typeref:typename:Window
|
||||
get_actor_at_location game_map.py /^ def get_actor_at_location(self, x: int, y: int) -> Optional[Actor]:$/;" m class:GameMap typeref:typename:Optional[Actor]
|
||||
get_adapter venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py /^ def get_adapter(self, url):$/;" m class:Session
|
||||
get_additional_deps venv/lib/python3.10/site-packages/numpy/typing/mypy_plugin.py /^ def get_additional_deps($/;" m class:_NumpyPlugin typeref:typename:list[tuple[int,str,int]]
|
||||
get_all venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_collections.py /^ get_all = getlist$/;" v class:HTTPHeaderDict
|
||||
@ -22922,6 +22944,7 @@ get_path_for_link venv/lib/python3.10/site-packages/pip/_internal/cache.py /^
|
||||
get_path_for_link venv/lib/python3.10/site-packages/pip/_internal/cache.py /^ def get_path_for_link(self, link):$/;" m class:WheelCache
|
||||
get_path_from_frame venv/lib/python3.10/site-packages/numpy/distutils/misc_util.py /^def get_path_from_frame(frame, parent_path=None):$/;" f
|
||||
get_path_names venv/lib/python3.10/site-packages/pip/_vendor/distlib/_backport/sysconfig.py /^def get_path_names():$/;" f
|
||||
get_path_to components/ai.py /^ def get_path_to(self, dest_x: int, dest_y: int) -> List[Tuple[int, int]]:$/;" m class:BaseAI typeref:typename:List[Tuple[int,int]]
|
||||
get_path_uid venv/lib/python3.10/site-packages/pip/_internal/utils/compat.py /^def get_path_uid(path: str) -> int:$/;" f typeref:typename:int
|
||||
get_paths venv/lib/python3.10/site-packages/numpy/distutils/system_info.py /^ def get_paths(self, section, key):$/;" m class:agg2_info
|
||||
get_paths venv/lib/python3.10/site-packages/numpy/distutils/system_info.py /^ def get_paths(self, section, key):$/;" m class:atlas_info
|
||||
@ -23387,6 +23410,8 @@ handle_display_options venv/lib/python3.10/site-packages/setuptools/_distutils/d
|
||||
handle_display_options venv/lib/python3.10/site-packages/setuptools/dist.py /^ def handle_display_options(self, option_order):$/;" m class:Distribution
|
||||
handle_enemy_turns engine.py /^ def handle_enemy_turns(self) -> None:$/;" m class:Engine typeref:typename:None
|
||||
handle_events input_handlers.py /^ def handle_events(self) -> None:$/;" m class:EventHandler typeref:typename:None
|
||||
handle_events input_handlers.py /^ def handle_events(self) -> None:$/;" m class:GameOverEventHandler typeref:typename:None
|
||||
handle_events input_handlers.py /^ def handle_events(self) -> None:$/;" m class:MainGameEventHandler typeref:typename:None
|
||||
handle_extra_path venv/lib/python3.10/site-packages/setuptools/_distutils/command/install.py /^ def handle_extra_path(self):$/;" m class:install
|
||||
handle_extra_path venv/lib/python3.10/site-packages/setuptools/command/install.py /^ def handle_extra_path(self):$/;" m class:install
|
||||
handle_line venv/lib/python3.10/site-packages/pip/_internal/req/req_file.py /^def handle_line($/;" f typeref:typename:Optional[ParsedRequirement]
|
||||
@ -23664,6 +23689,8 @@ host venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connection.py /^ d
|
||||
hostname venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/url.py /^ def hostname(self):$/;" m class:Url
|
||||
hosttype venv/lib/python3.10/site-packages/numpy/core/tests/test_errstate.py /^hosttype = sysconfig.get_config_var('HOST_GNU_TYPE')$/;" v
|
||||
hour venv/lib/python3.10/site-packages/numpy/core/include/numpy/ndarraytypes.h /^ npy_int32 month, day, hour, min, sec, us, ps, as;$/;" m struct:__anonbeb738b31208 typeref:typename:npy_int32
|
||||
hp components/fighter.py /^ def hp(self) -> int:$/;" m class:Fighter typeref:typename:int
|
||||
hp components/fighter.py /^ def hp(self, value: int) -> None:$/;" m class:Fighter typeref:typename:None
|
||||
hsplit venv/lib/python3.10/site-packages/numpy/lib/shape_base.py /^def hsplit(ary, indices_or_sections):$/;" f
|
||||
hsplit venv/lib/python3.10/site-packages/numpy/ma/extras.py /^hsplit = _fromnxfunction_single('hsplit')$/;" v
|
||||
hstack venv/lib/python3.10/site-packages/numpy/core/shape_base.py /^def hstack(tup):$/;" f
|
||||
@ -24247,6 +24274,7 @@ isSurrogatePair venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_utils.py
|
||||
is_ venv/lib/python3.10/site-packages/pip/_vendor/tomli/_parser.py /^ def is_(self, key: Key, flag: int) -> bool:$/;" m class:Flags typeref:typename:bool
|
||||
is_ venv/lib/python3.10/site-packages/tomli/_parser.py /^ def is_(self, key: Key, flag: int) -> bool:$/;" m class:Flags typeref:typename:bool
|
||||
is_64bit venv/lib/python3.10/site-packages/setuptools/command/easy_install.py /^def is_64bit():$/;" f
|
||||
is_alive entity.py /^ def is_alive(self) -> bool:$/;" m class:Actor typeref:typename:bool
|
||||
is_appengine venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py /^def is_appengine():$/;" f
|
||||
is_appengine venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/appengine.py /^is_appengine = _appengine_environ.is_appengine$/;" v
|
||||
is_appengine_sandbox venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py /^def is_appengine_sandbox():$/;" f
|
||||
@ -26661,6 +26689,7 @@ notmasked_edges venv/lib/python3.10/site-packages/numpy/ma/extras.py /^def notma
|
||||
nout venv/lib/python3.10/site-packages/numpy/core/include/numpy/experimental_dtype_api.h /^ int nin, nout;$/;" m struct:__anoncd93f9d90308 typeref:typename:int
|
||||
nout venv/lib/python3.10/site-packages/numpy/core/include/numpy/ufuncobject.h /^ int nin, nout, nargs;$/;" m struct:_tagPyUFuncObject typeref:typename:PyObject_HEAD int
|
||||
nout venv/lib/python3.10/site-packages/numpy/core/include/numpy/ufuncobject.h /^ int nout;$/;" m struct:__anond4dee2850108 typeref:typename:int
|
||||
np components/ai.py /^import numpy as np # type: ignore$/;" I nameref:module:numpy
|
||||
np game_map.py /^import numpy as np # type: ignore$/;" I nameref:module:numpy
|
||||
np tile_types.py /^import numpy as np # type: ignore$/;" I nameref:module:numpy
|
||||
np venv/lib/python3.10/site-packages/numpy/_pytesttester.py /^ import numpy as np$/;" I function:_show_numpy_info file: nameref:module:numpy
|
||||
@ -27390,7 +27419,7 @@ options venv/lib/python3.10/site-packages/setuptools/_distutils/util.py /^ op
|
||||
options venv/lib/python3.10/site-packages/setuptools/command/easy_install.py /^ options = []$/;" v class:CommandSpec
|
||||
optrule venv/lib/python3.10/site-packages/pycparser/plyparser.py /^ def optrule(self, p):$/;" f member:PLYParser._create_opt_rule file:
|
||||
orange venv/lib/python3.10/site-packages/tcod/constants.py /^orange = Color(255, 127, 0)$/;" v
|
||||
orc entity_factories.py /^orc = Entity(char="o", color=(63, 127, 63), name="Orc", blocks_movement=True)$/;" v
|
||||
orc entity_factories.py /^orc = Actor($/;" v
|
||||
order venv/lib/python3.10/site-packages/numpy/lib/polynomial.py /^ def order(self):$/;" m class:poly1d
|
||||
order venv/lib/python3.10/site-packages/pip/_internal/exceptions.py /^ order = -1 # type: int$/;" v class:HashError
|
||||
order venv/lib/python3.10/site-packages/pip/_internal/exceptions.py /^ order = 0$/;" v class:VcsHashUnsupported
|
||||
@ -28074,6 +28103,9 @@ perform actions.py /^ def perform(self) -> None:$/;" m class:BumpAction typer
|
||||
perform actions.py /^ def perform(self) -> None:$/;" m class:EscapeAction typeref:typename:None
|
||||
perform actions.py /^ def perform(self) -> None:$/;" m class:MeleeAction typeref:typename:None
|
||||
perform actions.py /^ def perform(self) -> None:$/;" m class:MovementAction typeref:typename:None
|
||||
perform actions.py /^ def perform(self) -> None:$/;" m class:WaitAction typeref:typename:None
|
||||
perform components/ai.py /^ def perform(self) -> None:$/;" m class:BaseAI typeref:typename:None
|
||||
perform components/ai.py /^ def perform(self) -> None:$/;" m class:HostileEnemy typeref:typename:None
|
||||
perm venv/lib/python3.10/site-packages/numpy/core/include/numpy/ndarraytypes.h /^ npy_intp perm, stride;$/;" m struct:__anonbeb738b31808 typeref:typename:npy_intp
|
||||
permutation_index venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.py /^def permutation_index(element, iterable):$/;" f
|
||||
permute_dims venv/lib/python3.10/site-packages/numpy/array_api/_manipulation_functions.py /^def permute_dims(x: Array, \/, axes: Tuple[int, ...]) -> Array:$/;" f typeref:typename:Array
|
||||
@ -28155,7 +28187,7 @@ platform_skip venv/lib/python3.10/site-packages/numpy/core/tests/test_umath_comp
|
||||
platform_tags venv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py /^def platform_tags(linux: str, arch: str) -> Iterator[str]:$/;" f typeref:typename:Iterator[str]
|
||||
platform_tags venv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py /^def platform_tags(arch: str) -> Iterator[str]:$/;" f typeref:typename:Iterator[str]
|
||||
platforms venv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py /^platforms: Callable[..., Option] = partial($/;" v typeref:typename:Callable[..., Option]
|
||||
player entity_factories.py /^player = Entity(char="@", color=(255, 255, 255), name="Player", blocks_movement=True)$/;" v
|
||||
player entity_factories.py /^player = Actor($/;" v
|
||||
plugin venv/lib/python3.10/site-packages/numpy/typing/mypy_plugin.py /^ def plugin(version: str) -> type[_NumpyPlugin]:$/;" f typeref:typename:type[_NumpyPlugin]
|
||||
plugins venv/lib/python3.10/site-packages/numpy/typing/tests/data/mypy.ini /^plugins = numpy.typing.mypy_plugin$/;" k section:mypy
|
||||
poetry venv/lib/python3.10/site-packages/black_primer/primer.json /^ "poetry": {$/;" o object:projects
|
||||
@ -31282,6 +31314,7 @@ tan venv/lib/python3.10/site-packages/numpy/array_api/_elementwise_functions.py
|
||||
tan venv/lib/python3.10/site-packages/numpy/ma/core.py /^tan = _MaskedUnaryOperation(umath.tan, 0.0,$/;" v
|
||||
tanh venv/lib/python3.10/site-packages/numpy/array_api/_elementwise_functions.py /^def tanh(x: Array, \/) -> Array:$/;" f typeref:typename:Array
|
||||
tanh venv/lib/python3.10/site-packages/numpy/ma/core.py /^tanh = _MaskedUnaryOperation(umath.tanh)$/;" v
|
||||
target_actor actions.py /^ def target_actor(self) -> Optional[Actor]:$/;" m class:ActionWithDirection typeref:typename:Optional[Actor]
|
||||
target_cpu venv/lib/python3.10/site-packages/setuptools/msvc.py /^ def target_cpu(self):$/;" m class:PlatformInfo
|
||||
target_dir venv/lib/python3.10/site-packages/setuptools/msvc.py /^ def target_dir(self, hidex86=False, x64=False):$/;" m class:PlatformInfo
|
||||
target_is_x86 venv/lib/python3.10/site-packages/setuptools/msvc.py /^ def target_is_x86(self):$/;" m class:PlatformInfo
|
||||
@ -37483,7 +37516,7 @@ triu venv/lib/python3.10/site-packages/numpy/array_api/_creation_functions.py /^
|
||||
triu venv/lib/python3.10/site-packages/numpy/lib/twodim_base.py /^def triu(m, k=0):$/;" f
|
||||
triu_indices venv/lib/python3.10/site-packages/numpy/lib/twodim_base.py /^def triu_indices(n, k=0, m=None):$/;" f
|
||||
triu_indices_from venv/lib/python3.10/site-packages/numpy/lib/twodim_base.py /^def triu_indices_from(arr, k=0):$/;" f
|
||||
troll entity_factories.py /^troll = Entity(char="T", color=(0, 127, 0), name="Troll", blocks_movement=True)$/;" v
|
||||
troll entity_factories.py /^troll = Actor($/;" v
|
||||
true_divide venv/lib/python3.10/site-packages/numpy/ma/core.py /^true_divide = _DomainedBinaryOperation(umath.true_divide,$/;" v
|
||||
true_intent_list venv/lib/python3.10/site-packages/numpy/f2py/crackfortran.py /^def true_intent_list(var):$/;" f
|
||||
true_vals venv/lib/python3.10/site-packages/numpy/core/tests/test_multiarray.py /^ true_vals = [True, np._CopyMode.ALWAYS, np.True_]$/;" v class:TestArrayCreationCopyArgument
|
||||
|
Loading…
Reference in New Issue
Block a user