Beispiel #1
0
    def play(self):
        libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT,
                                  'Moria - {0}'.format(self.iteration), False,
                                  libtcod.RENDERER_SDL2, "F", False)
        self.root_console = libtcodconsole.Console(SCREEN_WIDTH, SCREEN_HEIGHT)
        self.panel = libtcodconsole.Console(SCREEN_WIDTH, PANEL_HEIGHT)
        fighter_component = Fighter(hp=PLAYER_MAX_HEALTH,
                                    defence=PLAYER_DEFENCE,
                                    power=PLAYER_POWER)
        inventory_component = Inventory(26)
        equipment_component = Equipment()
        coin_pouch = CoinPouch(0)
        self.player = Entity(0,
                             0,
                             '@',
                             libtcod.white,
                             "Player",
                             blocks=True,
                             render_order=RenderOrder.ACTOR,
                             fighter=fighter_component,
                             inventory=inventory_component,
                             equipment=equipment_component,
                             coin_pouch=coin_pouch)
        self.entities = [self.player]

        self.game_map = GameMap()
        self.game_map.make_map(self.player, self.entities)
        self.fov_recompute = True
        self.fov_map = initialize_fov(self.game_map)

        self.message_log = MessageLog()

        self.game_state = GameStates.PLAYERS_TURN
        self.previous_game_state = self.game_state

        self.init_game()

        while not self.game_ended and self.player is not None:
            if self.agent is not None:
                print("Shop has", len(self.game_map.shop.items))
                self.agent.action = None
                self.run_agent(self.player, self.agent, self.fov_map)

            self.current_enemy = None

            self.run_game()

        return self.game_result
def get_game_variables(constants):
    # fighter_component = Fighter(hp=100, defense=1, power=2)
    # inventory_component = Inventory(26)
    # level_component = Level()
    # equipment_component = Equipment()
    # player = Entity(0, 0, '@', libtcod.white, 'Player', blocks=True, render_order=RenderOrder.ACTOR,
    #                 fighter=fighter_component, inventory=inventory_component, level=level_component, equipment=equipment_component, race="human")
    player = generate_character(0, 0, "human", False)
    entities = [player]

    # equippable_component = Equippable(
    #     EquipmentSlots.MAIN_HAND, attack_bonus=2, attacks=generate_attack_set(blade_attack_definitions))

    # dagger = Entity(0, 0, '-', libtcod.sky, 'Dagger',
    #                 equippable=equippable_component)
    knife = generate_weapon_from_template("knife")
    player.inventory.add_item(knife)
    player.equipment.toggle_equip(knife)

    game_map = GameMap(constants['map_width'], constants['map_height'])
    # game_map.make_map(constants['max_rooms'], constants['room_min_size'], constants['room_max_size'],
    #                   constants['map_width'], constants['map_height'], player, entities)
    game_map.make_overworld_map(
        12, ["player_house"], constants['map_width'], constants['map_height'], player, entities, True)
    message_log = MessageLog(
        constants['message_x'], constants['message_width'], constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #3
0
def get_game_variables(constants):
    fighter_component = Fighter("player")
    inventory_component = Inventory(26)
    level_component = Level()
    player = Entity(0,
                    0,
                    "@",
                    tcod.white,
                    "Player",
                    blocks=True,
                    render_order=RenderOrder.ACTOR,
                    fighter=fighter_component,
                    inventory=inventory_component,
                    level=level_component)
    game_state = GameStates.PLAYER_TURN
    entities = [player]
    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'],
                      constants['room_max_size'], constants['map_width'],
                      constants['map_height'], player, entities,
                      float(player.fighter.cr),
                      constants['max_items_per_room'])
    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])
    return player, entities, game_map, message_log, game_state
def get_game_variables(constants):
    player = playerships.player_cruiser()
    targeting_cursor = entity.Entity(
        0,
        0,
        '#',
        'yellow',
        'TargetingCursor',
        blocks=False,
        render_order=RenderOrder.INACTIVE_TARGETING)
    entities = [player, targeting_cursor]

    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_asteroids'],
                      constants['max_asteroid_radius'], entities,
                      constants['max_enemies_per_screen'],
                      constants['max_items_per_screen'],
                      constants['max_stars_per_screen'])

    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
 def __init__(self):
     self.message_log = MessageLog(MSG_X, MSG_WIDTH, MSG_HEIGHT)
     self.fov_recompute = True
     self.game_state = GameStates.PLAYERS_TURN
     self.panel_state = None
     self.active_panel = 'map'  # TODO temporary
     self.world = {}
     self.current_map = None
     self.current_map_id = None
     player_combatant = Combatant(health=50,
                                  strength=10,
                                  agility=10,
                                  endurance=10,
                                  mob_number=0)
     player_logic = PlayerLogic()
     self.player = Entity(x=40,
                          y=20,
                          char='@',
                          color=(255, 255, 255),
                          name='Player',
                          blocks=True,
                          render_order=RenderOrder.ACTOR,
                          team=Team.PLAYER,
                          ai=player_logic,
                          combatant=player_combatant)
     self.nothing_entity = Entity(name='nothing')
Beispiel #6
0
def get_arena_variables(constants):
    fighter_component = Fighter(hp=100, defense=1, power=3, speed=100)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()
    player = Entity(
        [],
        3,
        3,
        "@",
        libtcod.white,
        "Player",
        blocks=True,
        render_order=RenderOrder.ACTOR,
        fighter=fighter_component,
        inventory=inventory_component,
        level=level_component,
        equipment=equipment_component,
    )
    entities = [player]
    constants["fov_radius"] = 100 # We can see the whole map in the arena

    game_map = GameMap(constants["map_width"], constants["map_height"])
    game_map.make_arena(entities)

    message_log = MessageLog(
        constants["message_x"], constants["message_width"], constants["message_height"]
    )

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #7
0
def get_game_variables(constants):
    fighter_component = Fighter(hp=100, str=3, dex=3)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()
    death_component = Death(kill_player)
    player = Entity(0, 0, '@', libtcod.white, 'Player', blocks=True, render_order=RenderOrder.ACTOR,
                    fighter=fighter_component, inventory=inventory_component, level=level_component,
                    equipment=equipment_component, death=death_component)

    entities = [player]

    dagger = generate_weapon('dagger', 0, 0)
    player.inventory.add_item(dagger)
    player.equipment.toggle_equip(dagger)

    potion = generate_item('healing_potion', 0, 0)
    player.inventory.add_item(potion)

    game_map = GameMap(constants['map_width'], constants['map_height'], constants['version'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'], constants['room_max_size'],
                      constants['map_width'], constants['map_height'], player, entities)

    message_log = MessageLog(constants['message_x'], constants['message_width'], constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #8
0
def get_game_variables(constants):
    player = Entity(0, 0, '@', libtcod.white, 'Player', blocks=True, render_order=RenderOrder.ACTOR)
    Fighter(hp=100, defense=11, power=2, hit=11).add_to_entity(player)
    Level().add_to_entity(player)

    inventory_component = Inventory(26)
    inventory_component.add_to_entity(player)
    
    equipment_component = Equipment()
    equipment_component.add_to_entity(player)

    dagger = Entity(0, 0, '-', libtcod.sky, 'Dagger')
    equippable_component = Equippable(EquipmentSlots.MAIN_HAND, power_bonus=2)
    equippable_component.add_to_entity(dagger)    
        
    inventory_component.add_item(dagger)
    equipment_component.toggle_equip(dagger)

    StatusEffects().add_to_entity(player)
    
    world = World(player, constants['map_width'], constants['map_height'])

    message_log = MessageLog(constants['message_x'], constants['message_width'], constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, world, message_log, game_state
Beispiel #9
0
def regenerate_map(player, map_width, map_height, max_rooms, min_room_size, max_room_size, min_npcs,
                   max_npcs, colors, entities, floor_number, message_x, message_width, message_height,
                   preserve_messages=False):
    """ Fully resets the game map without closing the window. """
    # Reinitialize the tile map
    game_map = GameMap(map_width, map_height)

    # Remove all entities except the player
    entities.clear()
    entities.append(player)

    # Generate a new game map
    generate_all(game_map, map_width, map_height, max_rooms, min_room_size, max_room_size, min_npcs, max_npcs,
                 colors, entities, floor_number)

    # Reset the message log
    if not preserve_messages:
        message_log = MessageLog(message_x, message_width, message_height)
    else:
        message_log = None

    # Set up the fov_map for the new game map and recalculate it
    fov_recalculate = True
    fov_map = initialize_fov(game_map)

    return game_map, fov_recalculate, fov_map, message_log
Beispiel #10
0
def get_game_variables(consts):
    # Player
    fighter_component = Fighter(hp=30, defense=2, power=5)
    inventory_comp = Inventory(26)
    level_comp = Level()
    player = Entity(0,
                    0,
                    '@',
                    tcod.white,
                    'Player',
                    blocks=True,
                    render_order=RenderOrder.ACTOR,
                    fighter=fighter_component,
                    inventory=inventory_comp,
                    level=level_comp)
    entities = [player]

    # Game Map
    game_map = GameMap(consts['map_width'], consts['map_height'])
    game_map.make_map(consts['max_rooms'], consts['room_min'],
                      consts['room_max'], consts['map_width'],
                      consts['map_height'], player, entities,
                      consts['max_monsts_room'], consts['max_items_room'])

    # Game State
    game_state = GameStates.PLAYER_TURN

    # Message Log
    message_log = MessageLog(consts['msg_x'], consts['msg_width'],
                             consts['msg_height'])

    return player, entities, game_map, message_log, game_state
Beispiel #11
0
    def load_game(cls):
        if not os.path.isfile("save_game.json"):
            raise FileNotFoundError

        with open("save_game.json") as save_file:
            json_data = json.load(save_file)

        entities = [
            Entity.from_json(json_data=entity_json_data)
            for entity_json_data in json_data["entities"]
        ]
        player = entities[json_data["player_index"]]

        game_map = GameMap.from_json(json_data=json_data["game_map"])
        message_log = MessageLog.from_json(json_data=json_data["message_log"])
        game_state = GameStates(json_data["game_state"])

        game = cls()
        game.map_generator: Optional[MapGenerator] = MapGenerator(
            map_width=CONSTANTS.map_width, map_height=CONSTANTS.map_height)
        game.entities = entities
        game.player = player

        game.map_generator.game_map = game_map
        game.message_log = message_log
        game.current_state = game_state

        game.camera: Camera = Camera.from_json(json_data=json_data,
                                               player=player)

        return game
def get_game_variables(constants):
    fighter_component = Fighter(hp=100, defense=1, power=2)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()

    #Create a player entity for the player
    player = Entity(0, 0, '@', libtcod.white, 'Player', blocks=True, render_order=RenderOrder.ACTOR,
                    fighter=fighter_component, inventory=inventory_component, level=level_component,
                    equipment=equipment_component)
    entities = [player]

    #Give a starting weapon - a dagger - to the player
    equippable_component = Equippable(EquipmentSlots.MAIN_HAND, power_bonus=2)
    dagger = Entity(0, 0, '-', libtcod.sky, 'Dagger', equippable=equippable_component)
    player.inventory.add_item(dagger)
    player.equipment.toggle_equip(dagger)

    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'], constants['room_max_size'],
                      constants['map_width'], constants['map_height'], player, entities)

    message_log = MessageLog(constants['message_x'], constants['message_width'], constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
def get_game_variables(constants):
	fighter_component = Fighter(hp=100, defense=1, power=2)
	inventory_component = Inventory(26)
	level_component = Level()
	equipment_component = Equipment()
	player = Entity(0, 0, '@', libtcod.white, "Player", blocks=True,
		render_order=RenderOrder.ACTOR, fighter=fighter_component,
		inventory=inventory_component, level=level_component,
		equipment=equipment_component)
	entities = [player]
	
	equippable_component = Equippable(EquipmentSlots.MAIN_HAND, power_bonus=2)
	dagger = Entity(0, 0, '-', libtcod.sky, "Dagger", equippable=equippable_component)
	player.inventory.add_item(dagger)
	player.equipment.toggle_equip(dagger)
	
	game_map = GameMap(constants["map_width"], constants["map_height"])
	game_map.make_map(constants["max_room"], constants["room_min_size"], 
		constants["room_max_size"], constants["map_width"], constants["map_height"], 
		player, entities)
		
	message_log = MessageLog(constants["message_x"], 
		constants["message_width"], constants["message_height"])

	game_state = GameStates.PLAYERS_TURN
	
	return player, entities, game_map, message_log, game_state
def get_game_variables(constants):
    # Entities
    fighter_component = Fighter(hp=10000,
                                defense=1,
                                strength=200,
                                dexterity=0,
                                intelligence=0,
                                charisma=0)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()
    player = Entity(0,
                    0,
                    '@',
                    libtcodpy.white,
                    'Player',
                    blocks=True,
                    render_order=RenderOrder.ACTOR,
                    fighter=fighter_component,
                    inventory=inventory_component,
                    level=level_component,
                    equipment=equipment_component)
    entities = [player]

    for itm in range(0, 25):
        item_component = Item(use_function=heal, amount=40)
        item = Entity(0,
                      0,
                      '!',
                      libtcodpy.violet,
                      'Healing Potion',
                      render_order=RenderOrder.ITEM,
                      item=item_component)
        player.inventory.add_item(item)

    equippable_component = Equippable(EquipmentSlots.MAIN_HAND,
                                      strength_bonus=2)
    dagger = Entity(0,
                    0,
                    '-',
                    libtcodpy.sky,
                    'Dagger',
                    equippable=equippable_component)
    player.inventory.add_item(dagger)
    player.equipment.toggle_equip(dagger)

    # Game Map
    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'],
                      constants['room_max_size'], constants['map_width'],
                      constants['map_height'], player, entities)

    # Message
    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #15
0
def get_game_variables(constants):
    fighter_component = Fighter(hp=30, defence=2, power=5)

    inventory_component = Inventory(26)
    player = Entity(0,
                    0,
                    '@',
                    libtcod.white,
                    'Player',
                    blocks=True,
                    render_order=RenderOrder.ACTOR,
                    fighter=fighter_component,
                    inventory=inventory_component)
    entities = [player]

    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'],
                      constants['room_max_size'], constants['map_width'],
                      constants['map_height'], player, entities,
                      constants['max_monsters_per_room'],
                      constants['max_items_per_room'])

    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #16
0
def get_game_variables():
    fighter_component = Fighter(hp=100, defense=1, power=2)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()
    player = Entity(name="Player", entity_type=EntityType.PLAYER, x=const.SCREEN_WIDTH // 2,
                    y=const.SCREEN_HEIGHT // 2, glyph=ord('@'),
                    fg=(255, 255, 255), blocks=True, fighter=fighter_component,
                    inventory=inventory_component, level=level_component, equipment=equipment_component)

    equippable_component = Equippable(EquipmentSlots.MAIN_HAND, power_bonus=2)
    dagger = Entity("Dagger", EntityType.ITEM, 0, 0, ord('-'), fg=tcod.sky, equippable=equippable_component)
    player.inventory.add_item(dagger)
    player.equipment.toggle_equip(dagger)

    dungeon = {}
    game_map = GameMap(const.MAP_WIDTH, const.MAP_HEIGHT)
    game_map.make_map(const.MAX_ROOMS, const.ROOM_MIN_SIZE, const.ROOM_MAX_SIZE,
                      const.MAP_WIDTH, const.MAP_HEIGHT, player)
    game_map.entities.append(player)
    dungeon.update({game_map.dungeon_level: game_map})

    message_log = MessageLog(0, const.LOG_WIDTH, const.LOG_HEIGHT)

    game_state = GameState.PLAYER_TURN

    camera = Camera(0, 0, const.VIEWPORT_WIDTH - 1, const.VIEWPORT_HEIGHT - 1)

    current_level = 1

    return player, dungeon, message_log, game_state, current_level, camera
def get_game_variables(constants):
    """Initialize game variables."""
    # === Entities ===
    fighter_component = Fighter(hp=100, defense=1, power=3)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()
    player = Entity(0, 0, '@', libtcod.lightest_grey, 'Player', blocks=True, render_order=RenderOrder.ACTOR,
                    fighter=fighter_component, inventory=inventory_component, level=level_component,
                    equipment=equipment_component, description='You.')
    entities = [player]

    equippable_component = Equippable(**dagger['kwargs'])
    char, color, name = dagger['entity_args']
    starting_weapon = Entity(0, 0, char, color, name, render_order=RenderOrder.ITEM,
                            equippable=equippable_component, description=dagger['description'])

    player.inventory.add_item(starting_weapon)
    player.equipment.toggle_equip(starting_weapon)

    # === Game map ===
    game_map = GameMap(constants['map_width'], constants['map_height'],
                        constants['room_min_size'], constants['room_max_size'])
    dungeon_type = Tunnel
    game_map.make_map(dungeon_type, player, entities)

    # === Message log ===
    message_log = MessageLog(constants['message_x'], constants['message_width'], constants['message_height'])

    # === Game state ===
    game_state = GameStates.PLAYER_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #18
0
def get_game_variables(config):
    fighter_component = Fighter(hp=100, defense=2, power=4)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()

    player = Entity(0,
                    0,
                    '@',
                    libtcod.white,
                    'Player',
                    blocks=True,
                    render_order=RenderOrder.ACTOR,
                    fighter=fighter_component,
                    inventory=inventory_component,
                    level=level_component,
                    equipment=equipment_component)
    entities = [player]

    game_map = GameMap(config)
    game_map.make_map(player, entities)

    message_log = MessageLog(config)

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #19
0
def get_game_variables(constants):
    inventory_component = Inventory(26)
    body_component = get_human_body()
    player = Entity(int(constants['screen_width'] / 2),
                    int(constants['screen_height'] / 2),
                    '@',
                    tcod.white,
                    "Player",
                    blocks=True,
                    render_order=RenderOrder.ACTOR,
                    ai=Player,
                    inventory=inventory_component,
                    body=body_component)

    entities = [player]

    animator = Animator([])

    turn_count = 0

    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(player, entities, constants)

    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])

    game_state = GameStates.PLAYER_TURN

    return player, entities, animator, turn_count, game_map, message_log, game_state
def get_game_variables(constants):
    fighter_component = Fighter(hp=100, defense=1, power=4)
    inventory_component = Inventory(26)
    level_component = Level()
    player = Entity(0,
                    0,
                    '@', (255, 255, 255),
                    'Player',
                    blocks=True,
                    render_order=RenderOrder.ACTOR,
                    fighter=fighter_component,
                    inventory=inventory_component,
                    level=level_component)
    entities = [player]

    game_map = GameMap(constants['map_width'], constants['map_height'])
    make_map(game_map, constants['max_rooms'], constants['room_min_size'],
             constants['room_max_size'], constants['map_width'],
             constants['map_height'], player, entities, constants['colors'])

    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #21
0
def get_game_variables(constants):

    fighter_component = Fighter(hp=100, defense=1, power=3)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()
    caster_component = Caster(mana=5, focus=2)
    body_component = Body('anthropod')

    player = Entity(0,0, '@', (255,255,255), 'Player', blocks=True, render_order=RenderOrder.ACTOR,
            fighter=fighter_component, caster=caster_component, inventory=inventory_component, level=level_component,
            equipment=equipment_component, body=body_component)
    entities = [player]

    equippable_component = Equippable(EquipmentSlots.MAIN_HAND, power_bonus=1)
    dagger = Entity(0, 0, '-', constants['colors'].get('sky'), 'Dagger', equippable=equippable_component)
    player.inventory.add_item(dagger, constants['colors'])
    player.equipment.toggle_equip(dagger)

    lexicon = get_lexicon()

    game_map = GameMap(constants['map_width'], constants['map_height'])
    make_map(game_map, constants['max_rooms'], constants['room_min_size'], constants['room_max_size'], 
            constants['map_width'], constants['map_height'], player, entities, constants['colors'], lexicon)

    message_log = MessageLog(constants['message_x'], constants['message_width'], constants['message_height'])

    
    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state, lexicon
Beispiel #22
0
def get_game_variables(constants):
    fighter_comp = Fighter(20, 5, 5)
    inventory_comp = Inventory(10)
    level_comp = Level()
    equipment_component = Equipment()
    player = Entity('Player', int(constants['screen_width'] / 2),
                    int(constants['screen_height'] / 2), '@', libtcod.white,
                    is_player=True, fighter=fighter_comp, inventory=inventory_comp,
                    level=level_comp, equipment=equipment_component)

    entities = [player]

    weapon = get_item('Hammer', 0, 0)
    player.inventory.add_item(weapon)
    player.equipment.toggle_equip(weapon)

    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'],
                      constants['room_max_size'], constants['map_width'],
                      constants['map_height'], player, entities)

    game_map.populate_dungeon(entities)

    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])

    game_state = GameStates.PLAYER_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #23
0
def get_game_variables(constants):
    # Open the event queue, and load it up.
    event_queue = EventQueue()

    # Create entities lists.
    entities = []

    # Create player.
    location = (int(constants['screen_width'] / 2), int(constants['screen_height'] / 2))
    player = entity_factory(EntityType.PLAYER, location, entities)
    
    # Create NPC.
    location = (int(constants['screen_width'] / 2) - 12, int(constants['screen_height'] / 2))
    entity_factory(EntityType.NPC, location, entities)
    
    # Create cursor.
    cursor_component = Cursor()
    location_component = Location()
    render_component = Render('X', libtcod.red)
    cursor = Entity('cursor', 0, cursor=cursor_component, location=location_component, render=render_component)
    cursor.render_order=RenderOrder.CURSOR

    # Create game_map.
    game_map = GameMap(constants['map_width'], constants['map_height'])

    # Create message_log.
    message_log = MessageLog(constants['message_x'], constants['message_width'], constants['message_height'])

    # Set game_state.
    game_state = GameStates.PLAYER_TURN
    
    # Set turn_state.
    turn_state = TurnStates.UPKEEP_PHASE

    return player, cursor, entities, game_map, message_log, game_state, turn_state, event_queue
def initialize_game(constants, chosen):

    player_component, inventory_component, abilities_component, info_component, starting_equip, starting_feats, name = Character(chosen)

    level_component = Level()
    equipment_component = Equipment()


    player = Entity(0, 0, '@', libtcod.lightest_gray, name, blocks=True, render_order=RenderOrder.PLAYER,
                    fighter=player_component, inventory=inventory_component, abilities=abilities_component, level=level_component,
                    equipment=equipment_component, info=info_component)

    entities = [player]

    player.abilities.add_feat(starting_feats)
    player.inventory.add_item(starting_equip)
    player.equipment.toggle_equip(starting_equip)


    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'], constants['room_max_size'],
                      constants['map_width'], constants['map_height'], player, entities)

    message_log = MessageLog(constants['message_x'], constants['message_width'], constants['message_height'])

    game_state = GameStates.PLAYERS_TURN
    
    permanent_cooldown_counter = 0

    return player, entities, game_map, message_log, game_state, permanent_cooldown_counter
def render_all(entities: List[Entity], player: Entity, game_map: GameMap,
               game_state: GameStates, message_log: MessageLog, constants):
    # Draw the map
    game_map.current_floor.render(colors=constants['colors'])

    entities_in_render_order = sorted(entities,
                                      key=lambda x: x.render_order.value)

    # Draw all entities in the list
    for entity in entities_in_render_order:
        if game_map.current_floor.fov[entity.x, entity.y]:
            entity.draw()

    render_bar(x=81,
               y=1,
               total_width=30,
               label='HP',
               current_value=player.fighter.hp,
               maximum_value=player.fighter.max_hp,
               text_color='white',
               bar_primary_color='green',
               bar_secondary_color='red')

    terminal.printf(x=81,
                    y=3,
                    s=f'Dungeon Floor: {game_map.current_floor_number}')

    message_log.render()

    names_under_mouse = get_names_under_mouse(entities,
                                              game_map.current_floor.fov)

    if names_under_mouse:
        terminal.printf(81, 5, names_under_mouse)

    if game_state in (GameStates.SHOW_INVENTORY, GameStates.DROP_INVENTORY):
        if game_state == GameStates.SHOW_INVENTORY:
            inventory_title = 'Press the key next to an item to use it, or Esc to cancel.\n'
        else:
            inventory_title = 'Press the key next to an item to drop it, or Esc to cancel.\n'

        inventory_menu(header=inventory_title,
                       player=player,
                       inventory_width=50,
                       screen_width=constants['screen_width'],
                       screen_height=constants['screen_height'])
Beispiel #26
0
    def next_floor(self, player: Entity,
                   message_log: MessageLog,
                   constants: Type['constants']) -> List[Entity]:
        self.dungeon_level += 1
        entities = [player]

        self.tiles = self.initialize_tiles()
        self.make_map(
            constants.max_rooms, constants.room_min_size,
            constants.room_max_size, player, entities)

        player.fighter.heal(player.fighter.max_hp // 2)

        message_log.add_message(
            Message('You take a moment to rest, and recover your strength.',
                    tcod.light_violet))

        return entities
def get_game_variables(constants):
    fighter_component = Fighter(hp=100,
                                defense=1,
                                power=2,
                                magic=0,
                                magic_defense=1,
                                talismanhp=0,
                                gold=0)
    inventory_component = Inventory(26)
    equipment_inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()
    player = Entity(0,
                    0,
                    '@',
                    libtcod.white,
                    'Player',
                    blocks=True,
                    render_order=RenderOrder.ACTOR,
                    fighter=fighter_component,
                    inventory=inventory_component,
                    level=level_component,
                    equipment=equipment_component,
                    equipment_inventory=equipment_inventory_component)
    entities = [player]

    equipment_component = Equippable(EquipmentSlots.MAIN_HAND, power_bonus=1)
    dagger = Entity(0,
                    0,
                    '-',
                    libtcod.darker_orange,
                    "Dagger (+1 atk)",
                    equippable=equipment_component)
    player.equipment_inventory.add_item(dagger)
    player.equipment.toggle_equip(dagger)

    item_component = Item(use_function=cast_magic, damage=2, maximum_range=3)
    magic_wand = Entity(0,
                        0,
                        '|',
                        libtcod.darker_sepia,
                        "Magic Wand",
                        item=item_component)
    player.inventory.add_item(magic_wand)

    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'],
                      constants['room_max_size'], constants['map_width'],
                      constants['map_height'], player, entities)

    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #28
0
def get_game_variables(constants):
    status_component = Status_Effects()
    job_component = Jobs()
    fighter_component = Fighter(hp=100,
                                mana=50,
                                defense=1,
                                power=2,
                                attack_dice_minimum=1,
                                attack_dice_maximum=4,
                                constitution=10,
                                willpower=10,
                                status_effects=status_component,
                                job=job_component,
                                nutrition=500,
                                ac=1,
                                accuracy=1)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()
    skill_component = Skills(50)
    player = Entity(0,
                    0,
                    '@',
                    libtcod.white,
                    'Player',
                    blocks=True,
                    player=True,
                    render_order=RenderOrder.ACTOR,
                    fighter=fighter_component,
                    inventory=inventory_component,
                    level=level_component,
                    equipment=equipment_component,
                    skills=skill_component)
    entities = [player]

    equippable_component = Equippable(EquipmentSlots.MAIN_HAND, power_bonus=2)
    dagger = Entity(0,
                    0,
                    '-',
                    libtcod.sky,
                    'Dagger',
                    equippable=equippable_component)
    player.inventory.add_item(dagger)
    player.equipment.toggle_equip(dagger)

    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'],
                      constants['room_max_size'], constants['map_width'],
                      constants['map_height'], player, entities)

    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])

    game_state = GameStates.PLAYERS_TURN

    return player, entities, game_map, message_log, game_state
Beispiel #29
0
def get_game_variables(constants):
    fighter_component = Fighter(hp=100, defense=1, power=4, agility=4)
    inventory_component = Inventory(26)
    level_component = Level()
    equipment_component = Equipment()
    player = Entity(0,
                    0,
                    '@',
                    libtcod.white,
                    'Player',
                    blocks=True,
                    render_order=RenderOrder.ACTOR,
                    fighter=fighter_component,
                    inventory=inventory_component,
                    level=level_component,
                    equipment=equipment_component)
    entities = [player]

    equippable_component = Equippable(EquipmentSlots.MAIN_HAND, power_bonus=4)
    dagger = Entity(0,
                    0,
                    '/',
                    libtcod.sky,
                    'Carving Knife',
                    equippable=equippable_component)
    equippable_component = Equippable(EquipmentSlots.OFF_HAND,
                                      defense_bonus=1,
                                      agility_bonus=-1)
    buckler = Entity(0,
                     0,
                     '{',
                     libtcod.sky,
                     'Buckler',
                     equippable=equippable_component)
    player.inventory.add_item(dagger)
    player.equipment.toggle_equip(dagger)
    player.inventory.add_item(buckler)
    player.equipment.toggle_equip(buckler)

    game_map = GameMap(constants['map_width'], constants['map_height'])
    game_map.make_map(constants['max_rooms'], constants['room_min_size'],
                      constants['room_max_size'], constants['max_maze_rooms'],
                      constants['maze_min_size'], constants['maze_max_size'],
                      constants['map_width'], constants['map_height'], player,
                      entities)

    message_log = MessageLog(constants['message_x'],
                             constants['message_width'],
                             constants['message_height'])

    game_state = GameStates.CHARACTER_CREATION
    ggender = Gender.male

    return player, entities, game_map, message_log, game_state, ggender
Beispiel #30
0
def init_message_and_states():
    """
    메세지 출력
    """
    message_log = MessageLog(MESSAGE_X, MESSAGE_WIDTH, MESSAGE_HEIGHT)

    game_state = GameStates.PLAYERS_TURN
    previous_game_state = game_state
    targeting_item = None

    return message_log, game_state, previous_game_state, targeting_item