def main() -> object:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 43

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2
    max_items_per_room = 2

    tileset = tcod.tileset.load_tilesheet(
        "dejavu10x10_gs_tc.png", 32, 8, tcod.tileset.CHARMAP_TCOD
    )

    player = copy.deepcopy(entity_factories.player)

    engine = Engine(player=player)

    engine.game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        max_items_per_room=max_items_per_room,
        engine=engine
    )

    engine.update_fov()

    engine.message_log.add_message(
        "Hello and welcome, adventurer, to yet another dungeon!", color.welcome_text
    )

    with tcod.context.new_terminal(
        screen_width,
        screen_height,
        tileset=tileset,
        title="Yet Another Roguelike Tutorial",
        vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            root_console.clear()
            engine.event_handler.on_render(console=root_console)
            context.present(root_console)

            try:
                for event in tcod.event.wait():
                    context.convert_event(event)
                    engine.event_handler.handle_events(event)
            except Exception:  # Handle exceptions in game.
                traceback.print_exc()  # Print error to stderr
                # Then print the error to the message log.
                engine.message_log.add_message(traceback.format_exc(), color.error)
Esempio n. 2
0
def main() -> None:

    # 屏幕的高度
    screen_width = 80
    screen_height = 50

    # map
    map_width = 80
    map_height = 45

    # 房间大小
    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    # 加载字体
    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    # 消息处理器
    event_handler = EventHandler()

    # 生成实体(这个只是显示,没有逻辑)
    player = Entity(int(screen_width / 2), int(screen_height / 2), "@",
                    (255, 255, 255))
    npc = Entity(int(screen_width / 2 - 5), int(screen_height / 2), "@",
                 (255, 255, 0))
    entities = {npc, player}

    # 生成地图
    game_map = generate_dungeon(max_rooms=max_rooms,
                                room_min_size=room_min_size,
                                room_max_size=room_max_size,
                                map_width=map_width,
                                map_height=map_height,
                                player=player)

    # 游戏引擎
    engine = Engine(entities=entities,
                    event_handler=event_handler,
                    game_map=game_map,
                    player=player)

    # 创建一个窗口
    with tcod.context.new_terminal(screen_width,
                                   screen_height,
                                   tileset=tileset,
                                   title="游戏-Roguelike",
                                   vsync=True) as context:

        # 创建控制台
        root_console = tcod.Console(screen_width, screen_height, order="F")

        # 游戏循环
        while True:
            # 消息
            engine.handler_events(events=tcod.event.wait())
            # 渲染
            engine.render(console=root_console, context=context)
Esempio n. 3
0
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = screen_width
    map_height = screen_height - 7

    room_max_size = 10
    room_min_size = 6
    max_rooms = 100

    max_monsters_per_room = 2
    max_monsters_per_cave = 30

    #tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8, tcod.tileset.CHARMAP_TCOD)
    tileset = tcod.tileset.load_tilesheet("terminal32x32.png", 16, 16,
                                          tcod.tileset.CHARMAP_CP437)

    player = copy.deepcopy(entity_factories.player)
    engine = Engine(player=player)

    if map_type == 1:
        engine.game_map = generate_dungeon(
            max_rooms=max_rooms,
            room_min_size=room_min_size,
            room_max_size=room_max_size,
            map_width=map_width,
            map_height=map_height,
            max_monsters_per_room=max_monsters_per_room,
            engine=engine,
        )
        engine.update_fov()

    elif map_type == 2:
        engine.game_map = generate_cave_map(
            map_width=map_width,
            map_height=map_height,
            max_monsters_per_cave=max_monsters_per_cave,
            engine=engine,
        )
        engine.update_fov()

    engine.message_log.add_message("Welcome adventurer, to a new dungeon!",
                                   color.welcome_text)

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="New Roguelike 2020 Version 2",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            root_console.clear()
            engine.event_handler.on_render(console=root_console)
            context.present(root_console)

            engine.event_handler.handle_events(context)
Esempio n. 4
0
def main() -> None:
    # Declare the size of the window
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 45

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    # We need to set what font/tileset we're using
    # The most common is CHARMAP_CP437 (16x16 grid, previously "ASCII_INROW")
    tileset = tcod.tileset.load_tilesheet(
        "fonts/CGA8x8thick.png",  # font file
        16,  # how many rows across
        16,  # how many columns
        tcod.tileset.CHARMAP_CP437)

    # Let's process some events! How vague.
    event_handler = EventHandler()

    # Let's create the player object
    player = Entity(int(screen_width / 2), int(screen_height / 2), "@",
                    (255, 255, 255))

    entities = {player}

    game_map = generate_dungeon(max_rooms=max_rooms,
                                room_min_size=room_min_size,
                                room_max_size=room_max_size,
                                map_width=map_width,
                                map_height=map_height,
                                player=player)

    engine = Engine(entities=entities,
                    event_handler=event_handler,
                    game_map=game_map,
                    player=player)

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="ultima frog",
            vsync=True,
    ) as context:
        # The main off-screen console that we'll draw things to.
        # It will only temporarily have everything drawn to it directly.
        root_console = tcod.Console(screen_width, screen_height, order="F")

        while True:
            engine.render(console=root_console, context=context)

            events = tcod.event.wait()

            engine.handle_events(events)
Esempio n. 5
0
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 45

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2

    #player_x = int(screen_width / 2)
    #player_y = int(screen_height / 2)

    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    event_handler = EventHandler()

    player = copy.deepcopy(entity_factories.player)

    #engine = Engine(entities, event_handler, player)

    #game_map = GameMap(map_width, map_height)
    #game_map = generate_dungeon(map_width, map_height)
    game_map = generate_dungeon(max_rooms=max_rooms,
                                room_min_size=room_min_size,
                                room_max_size=room_max_size,
                                map_width=map_width,
                                map_height=map_height,
                                max_monsters_per_room=max_monsters_per_room,
                                player=player)

    engine = Engine(event_handler=event_handler,
                    game_map=game_map,
                    player=player)

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Dungeon Crawler",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:

            engine.render(root_console, context)

            events = tcod.event.wait()

            engine.handle_events(events)
            """
Esempio n. 6
0
def main() -> None:
    # Defining Variables for Screen Size
    screen_width = 80
    screen_height = 50

    # Defining variables for Map Size
    map_width = 80
    map_height = 45

    # Defining variables for procedural generation
    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    # Defining variables for enemies
    max_monsters_per_room = 2

    # Telling TCOD which font to use
    tileset = tcod.tileset.load_tilesheet('tileset.png', 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    # initializing a player and npc and creating a set to hold them
    player = copy.deepcopy(entity_factories.player)

    # initializing engine
    engine = Engine(player=player)

    # initialize game map
    engine.game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        engine=engine)
    engine.update_fov()

    # Creating the screen, giving it width and height and other variables
    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Practice",
            vsync=True,
    ) as context:
        # Creates our console, which is what we are drawing to
        # The order argument affects the order of our x and y variables
        # setting order to "F" makes coordinates work as (x,y) instead of (y,x)
        root_console = tcod.Console(screen_width, screen_height, order="F")
        # Creates our game loop, This loop wont end until we close the game
        while True:
            # runs engine
            engine.render(console=root_console, context=context)
            engine.event_handler.handle_events()
Esempio n. 7
0
    def generate_floor(self) -> None:
        from procgen import generate_dungeon

        self.current_floor += 1
        self.engine.game_map = generate_dungeon(
            max_rooms=self.max_rooms,
            room_min_size=self.room_min_size,
            room_max_size=self.room_max_size,
            map_width=self.map_width,
            map_height=self.map_height,
            engine=self.engine)
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 45

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2

    # tells tcod which font to use
    tileset = tcod.tileset.load_tilesheet(
        "dejavu10x10_gs_tc.png", 32, 8, tcod.tileset.CHARMAP_TCOD
    )

    # event_handler is an instance of our EventHandler class
    event_handler = EventHandler()

    player = copy.deepcopy(entity_factories.player)

    game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        player=player
    )

    engine = Engine(event_handler=event_handler, game_map=game_map, player=player)

    # creates the screen
    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Untitled Roguelike Project",
            vsync=True,
    ) as context:
        # creates our console.
        # order="F" changes numpy to access 2D arrays in [x, y] order.
        root_console = tcod.Console(screen_width, screen_height, order="F")
        # game loop
        while True:
            engine.render(console=root_console, context=context)

            events = tcod.event.wait()

            engine.handle_events(events)
    def generate_floor(self) -> None:
        from procgen import generate_dungeon

        self.current_floor += 1

        self.engine.game_map = generate_dungeon(
            level=self.current_floor,
            map_width=self.map_width,
            map_height=self.map_height,
            max_monsters_per_room=self.max_monsters_per_room,
            max_items_per_room=self.max_items_per_room,
            engine=self.engine,
        )
Esempio n. 10
0
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 45

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    # loading font from png
    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    event_handler = EventHandler()

    player = Entity(int(screen_width / 2), int(screen_height / 2), "@",
                    (255, 255, 255))
    npc = Entity(int(screen_width / 2 - 5), int(screen_height / 2), "@",
                 (255, 255, 0))
    entities = {npc, player}

    game_map = generate_dungeon(max_rooms=max_rooms,
                                room_min_size=room_min_size,
                                room_max_size=room_max_size,
                                map_width=map_width,
                                map_height=map_height,
                                player=player)
    engine = Engine(entities=entities,
                    event_handler=event_handler,
                    game_map=game_map,
                    player=player)

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="First Roguelike",
            vsync=True,
    ) as context:
        # creating console
        root_console = tcod.Console(
            screen_width, screen_height,
            order="F")  # order = "F" flips (y,x) to (x,y)
        while True:
            engine.render(console=root_console, context=context)

            events = tcod.event.wait()

            engine.handle_events(events)
Esempio n. 11
0
def main() -> None:
    # Variables for screen dimensions
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 43

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2

    # Sets the custom font based on the file
    tileset = tcod.tileset.load_tilesheet("data/dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    player = copy.deepcopy(entity_factories.player)
    engine = Engine(player=player)

    engine.game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        engine=engine,
    )
    engine.update_fov()

    engine.message_log.add_message("Hello and welcome to yet another dungeon!",
                                   color.welcome_text)

    # This function initializes and creates the screen
    with tcod.context.new_terminal(screen_width,
                                   screen_height,
                                   tileset=tileset,
                                   title="Yet Another Roguelike Tutorial",
                                   vsync=True) as context:
        # Order "F" means coordinates are x, y instead of y, x
        # Creates the console that we will be drawing to
        root_console = tcod.Console(screen_width, screen_height, order="F")
        # This is the game loop!
        while True:
            root_console.clear()
            engine.event_handler.on_render(console=root_console)
            context.present(root_console)

            engine.event_handler.handle_events(context)
Esempio n. 12
0
def main():
    """Main program function."""
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 43

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2

    # set tcod to use the font image included in the project
    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    player = copy.deepcopy(entity_factories.player)

    engine = Engine(player=player)

    engine.game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        engine=engine,
    )
    engine.update_fov()

    engine.message_log.add_message("Oh no! Not this again...",
                                   color.welcome_text)

    # set console parameters
    with tcod.context.new_terminal(screen_width,
                                   screen_height,
                                   tileset=tileset,
                                   title="The Worst Roguelike",
                                   vsync=True) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        # main loop
        while True:
            root_console.clear()
            engine.event_handler.on_render(console=root_console)
            context.present(root_console)

            engine.event_handler.handle_events(context)
Esempio n. 13
0
def main() -> None:
    screen_width = 160
    screen_height = 100

    map_width = 160
    map_height = 86

    room_max_size = 30
    room_min_size = 15
    max_rooms = 10

    max_monsters_per_room = 1

    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    player = copy.deepcopy(entity_factories.player)
    player.is_player = True

    engine = Engine(player=player)

    engine.game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        engine=engine,
    )

    engine.update_fov()

    engine.message_log.add_message("Begin the run.", color.welcome_text)

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="sneak",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            root_console.clear()
            engine.event_handler.on_render(console=root_console)
            context.present(root_console)
            engine.render(root_console)

            engine.event_handler.handle_events(context)
Esempio n. 14
0
def main() -> None:
  screen_width = 100
  screen_height = 50

  map_width = 100
  map_height = 42

  room_max_size = 15
  room_min_size = 6
  max_rooms = 30

  max_monsters_per_room = 2

  tileset = tcod.tileset.load_tilesheet(
    "cursesvector.png", 16, 16, tcod.tileset.CHARMAP_CP437
  )

  player = copy.deepcopy(entity_factories.player)

  engine = Engine(player=player)

  engine.game_map = generate_dungeon(
    max_rooms=max_rooms,
    room_min_size=room_min_size,
    room_max_size=room_max_size,
    map_width=map_width,
    map_height=map_height,
    max_monsters_per_room=max_monsters_per_room,
    engine=engine,
  )
  engine.update_fov()

  engine.message_log.add_message(
    "Hello and welcome, adventurer, to yet another dungeon!", color.welcome_text
  )

  with tcod.context.new_terminal(
    screen_width,
    screen_height,
    tileset=tileset,
    title="Decension",
    vsync=True,
  ) as context:
    root_console = tcod.Console(screen_width, screen_height, order="F")
    while True:
      root_console.clear()
      engine.event_handler.on_render(console=root_console)
      context.present(root_console)

      engine.event_handler.handle_events(context)
Esempio n. 15
0
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 43

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2

    tileset = tcod.tileset.load_tilesheet('dejavu10x10_gs_tc.png', 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    player = copy.deepcopy(entity_factories.player)

    engine = Engine(player=player)

    engine.game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        engine=engine,
    )
    engine.update_fov()

    engine.message_log.add_message(
        'Hello and welcome, adventurer, to yet another dungeon!',
        color.welcome_text)

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Roscoe's Roguelike",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order='F')
        while True:
            root_console.clear()
            engine.event_handler.on_render(console=root_console)
            context.present(root_console)

            engine.event_handler.handle_events(context)
Esempio n. 16
0
def main() -> None:
    screen_width = 80
    screen_height = 60
    map_width = 80
    map_height = 45
    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    tileset = tcod.tileset.load_tilesheet(
        "arial10x10.png",
        32,
        8,
        tcod.tileset.CHARMAP_TCOD,
    )

    event_handler = EventHandler()

    player = Entity(int(screen_width / 2), int(screen_height / 2), '@',
                    tcod.white)
    npc = Entity(int(screen_width / 2 - 5), int(screen_height / 2), '@',
                 tcod.yellow)
    entities = {npc, player}

    game_map = generate_dungeon(max_rooms=max_rooms,
                                room_min_size=room_min_size,
                                room_max_size=room_max_size,
                                map_width=map_width,
                                map_height=map_height,
                                player=player)

    engine = Engine(entities=entities,
                    event_handler=event_handler,
                    game_map=game_map,
                    player=player)

    with tcod.context.new_terminal(screen_width,
                                   screen_height,
                                   tileset=tileset,
                                   title='zephyr',
                                   vsync=True) as context:
        # order='F' changes numpy's 2d array ordering to be x,y instead of y,x
        root_console = tcod.Console(screen_width, screen_height, order='F')
        while True:
            engine.render(console=root_console, context=context)

            events = tcod.event.wait()

            engine.handle_events(events)
Esempio n. 17
0
def main() -> None:
    screen_width = 100
    screen_height = 50

    map_width = 80
    map_height = 43

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2
    max_items_per_room = 1

    tileset = tcod.tileset.load_tilesheet(
        "lucida12x12_gs_tc.png", 32, 8, tcod.tileset.CHARMAP_TCOD
    )

    player = copy.deepcopy(entity_factories.player)

    game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        max_items_per_room=max_items_per_room,
        player=player,
    )

    engine = Engine(game_map=game_map, player=player)

    engine.message_log.add_message(
        "It's dark... you can hear something just out of sight..", (0, 127, 255))

    with tcod.context.new_terminal(
        screen_width,
        screen_height,
        tileset=tileset,
        title="Hero Egg: The beginning!",
        vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            engine.render(console=root_console, context=context)

            engine.event_handler.handle_events(context)
Esempio n. 18
0
def main():
    screen_width: int = 80
    screen_height: int = 50

    map_width = 80
    map_height = 45

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2

    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    event_handler = EventHandler()

    player = copy.deepcopy(entity_factories.player)

    game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        player=player,
    )

    engine = Engine(
        event_handler=event_handler,
        game_map=game_map,
        player=player,
    )

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Yet Another Roguelike Tutorial",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            engine.render(console=root_console, context=context)
            events = tcod.event.wait()
            engine.handle_events(events)
Esempio n. 19
0
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 45

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monster_per_room = 2

    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    event_handler = EventHandler()

    player = Entity(int(screen_width / 2), int(screen_height / 2), "@",
                    (255, 255, 255))

    game_map = generate_dungeon(max_rooms=max_rooms,
                                room_min_size=room_min_size,
                                room_max_size=room_max_size,
                                map_width=map_width,
                                map_height=map_height,
                                max_monsters_per_room=max_monster_per_room,
                                player=player)

    engine = Engine(event_handler=event_handler,
                    game_map=game_map,
                    player=player)

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="roguelike2",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            engine.render(console=root_console, context=context)

            events = tcod.event.wait()

            engine.handle_events(events)
Esempio n. 20
0
def main() -> None:
    screen_width = 160
    screen_height = 90

    player = copy.deepcopy(entity_factories.player)

    engine = Engine(player=player)


    map_width = 160
    map_height = 90

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room=2

    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8, tcod.tileset.CHARMAP_TCOD)

    event_handler = EventHandler(engine)

    player = copy.deepcopy(entity_factories.player)

    engine.game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        engine=engine,
    )
    engine.update_fov()

    with tcod.context.new_terminal(
        screen_width,
        screen_height,
        tileset=tileset,
        title="Nhan's Perilous Dungeon",
        vsync=True
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            engine.render(console=root_console, context=context)

            engine.event_handler.handle_events()
Esempio n. 21
0
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 45

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2

    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    player = copy.deepcopy(entity_factories.player)

    # We can’t use player.spawn here, because spawn requires the GameMap, which isn’t created until after we
    # create the player.
    engine = Engine(player=player)

    engine.game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        engine=engine,
    )
    engine.update_fov()

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Small Rogue",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            engine.render(console=root_console, context=context)

            engine.event_handler.handle_events()
Esempio n. 22
0
def main() -> None:
    screen_width = 160
    screen_height = 90
    map_width = screen_width
    map_height = screen_height - 5

    room_max_size = 15
    room_min_size = 6
    max_rooms = 30

    #Tileset found in the data folder. Standard Ascii pattern letters, could change in future
    tileset = tcod.tileset.load_tilesheet(
        "data\dejavu10x10_gs_tc.png", 32, 8, tcod.tileset.CHARMAP_TCOD
    )
    event_handler = EventHandler()
    player = Entity(int(screen_width / 2), int(screen_height / 2), "@", (255,255,255))
    npc = Entity(int(screen_width / 2), int(screen_height / 2), "@", (255,0,0))
    entities = {npc, player}

    game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        player=player
    )

    engine = Engine(entities=entities, event_handler=event_handler, game_map=game_map, player=player)
    #Actually creates the window
    with tcod.context.new_terminal(
        screen_width,
        screen_height,
        tileset=tileset,
        title="Yet Another Roguelike Tutorial",
        vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            engine.render(console=root_console, context=context)

            events = tcod.event.wait()

            engine.handle_events(events)
Esempio n. 23
0
    def generate_new_dungeon(self, depth=1) -> GameMap:
        """Generate new dungeon and return as gamemap object"""
        # Set temporary context, console values to prevent cffi error
        temp_console, temp_context = self.console, self.context
        self.console, self.context = None, None

        # Select biome
        biome = choose_biome()

        # Generate dungeon
        new_dungeon = generate_dungeon(
            biome=biome,
            engine=self,
            depth=depth,
        )

        # Get console, context info back.
        self.console, self.context = temp_console, temp_context
        return new_dungeon
Esempio n. 24
0
def main() -> None:
    # this tells tcod what font to use
    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    # event handler initialization
    event_handler = EventHandler()

    # initializing player as an entity
    player = Entity(int(SCREEN_WIDTH / 2), int(SCREEN_HEIGHT / 2), "A",
                    (255, 255, 255))
    npc = Entity(int(SCREEN_WIDTH / 2 - 5), int(SCREEN_HEIGHT / 2), "@",
                 (255, 255, 0))
    entities = {npc, player}

    game_map = generate_dungeon(
        max_rooms=MAX_ROOMS,
        room_min_size=ROOM_MIN_SIZE,
        room_max_size=ROOM_MAX_SIZE,
        map_width=MAP_WIDTH,
        map_height=MAP_HEIGHT,
        player=player,
    )

    engine = Engine(entities=entities,
                    event_handler=event_handler,
                    game_map=game_map,
                    player=player)
    # this creates the screen, its title, the tileset
    with tcod.context.new_terminal(SCREEN_WIDTH,
                                   SCREEN_HEIGHT,
                                   tileset=tileset,
                                   title="bug-free-eureka",
                                   vsync=True) as context:
        # this creates the "console" (what we will be drawing to)
        root_console = tcod.Console(SCREEN_WIDTH, SCREEN_HEIGHT, order="F")

        # game loop
        while True:
            engine.render(console=root_console, context=context)
            events = tcod.event.wait()
            engine.handle_events(events)
Esempio n. 25
0
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 45

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2

    tileset = tcod.tileset.load_tilesheet("arial10x10.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    player = copy.deepcopy(entity_factories.player)

    engine = Engine(player=player)

    engine.game_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        engine=engine)
    engine.update_fov()

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Yet Another Roguelike Tutorial",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            engine.render(console=root_console, context=context)
            engine.event_handler.handle_events()
Esempio n. 26
0
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 50

    tileset = tcod.tileset.load_tilesheet("dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    event_handler = EventHandler()

    player = Entity(int(screen_width / 2), int(screen_height / 2), "@",
                    (250, 215, 66))
    npc = Entity(int(screen_width / 2 - 5), int(screen_height / 2), "T",
                 (255, 255, 255))
    entities = {npc, player}

    game_map = generate_dungeon(map_width, map_height)

    engine = Engine(entities=entities,
                    event_handler=event_handler,
                    game_map=game_map,
                    player=player)

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Hullbreaker",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            engine.render(console=root_console, context=context)

            events = tcod.event.wait()

            engine.handle_events(events)
Esempio n. 27
0
    def generate_floor(self) -> None:
        from procgen import generate_dungeon

        self.current_floor += 1

        musHandler = SoundHandler()

        if not musHandler.isBusy():
            musHandler.playBGM("music/Desolate Hallways.mp3")

        if self.current_floor > 4:
            if musHandler.isBusy():
                musHandler.overrideBGM("music/what we make from it.mp3")

        self.engine.game_map = generate_dungeon(
            max_rooms=self.max_rooms,
            room_min_size=self.room_min_size,
            room_max_size=self.room_max_size,
            map_width=self.map_width,
            map_height=self.map_height,
            engine=self.engine,
        )
Esempio n. 28
0
def main() -> None:
    screen_width = 80
    screen_height = 50

    map_width = 80
    map_height = 43

    room_max_size = 10
    room_min_size = 6
    max_rooms = 30

    max_monsters_per_room = 2
    max_items_per_room = 2

    tileset = tcod.tileset.load_tilesheet(
        # why 32/8?
        "static/dejavu12x12.png",
        32,
        8,
        tcod.tileset.CHARMAP_TCOD)

    player = copy.deepcopy(entity_factories.player)

    engine = Engine(player=player)

    starting_map = generate_dungeon(
        max_rooms=max_rooms,
        room_min_size=room_min_size,
        room_max_size=room_max_size,
        map_width=map_width,
        map_height=map_height,
        max_monsters_per_room=max_monsters_per_room,
        max_items_per_room=max_items_per_room,
        engine=engine,
    )
    engine.game_map: GameMap = starting_map

    engine.update_fov()

    engine.message_log.add_message(
        "You wake up in a cold room. The floor is stone.", color.welcome_text)

    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Roguelike Tutorial",
            vsync=True,
    ) as context:
        root_console = tcod.Console(screen_width, screen_height, order="F")
        while True:
            root_console.clear()
            engine.event_handler.on_render(console=root_console)
            context.present(root_console)

            try:
                for event in tcod.event.wait():
                    context.convert_event(event)
                    engine.event_handler.handle_events(event)
            except Exception:
                traceback.print_exc()
                # print error to the message log
                engine.message_log.add_message(traceback.format_exc(),
                                               color.error)
Esempio n. 29
0
def main() -> None:
    """  """
    # console screen size
    screen_width = 80
    screen_height = 50

    # map size
    map_width = 80
    map_height = 45

    # dungeon room data
    room_size_max = 10
    room_size_min = 6
    max_rooms = 30

    # load image with the tileset to be used (I stored this in a 'data' folder)
    tileset = tcod.tileset.load_tilesheet("data/dejavu10x10_gs_tc.png", 32, 8,
                                          tcod.tileset.CHARMAP_TCOD)

    # create an event handler
    event_handler = EventHandler()

    # create entities: player & npc
    player = Entity(int(screen_width / 2), int(screen_height / 2), '@',
                    (255, 255, 255))
    npc = Entity(int(screen_width / 2 - 5), int(screen_height / 2), '@',
                 (255, 255, 0))
    entities = {npc, player}

    # create an instance of the GameMap
    game_map = generate_dungeon(max_rooms=max_rooms,
                                room_size_min=room_size_min,
                                room_size_max=room_size_max,
                                map_width=map_width,
                                map_height=map_height,
                                player=player)

    # create game engine for event handling and rendering
    engine = Engine(entities=entities,
                    event_handler=event_handler,
                    game_map=game_map,
                    player=player)

    # create the console window, set the tileset & title
    with tcod.context.new_terminal(
            screen_width,
            screen_height,
            tileset=tileset,
            title="Yet Another Roguelike Tutorial",
            vsync=True,
    ) as context:
        # create and size a 'console' to draw too &
        # tell numpy to use [x,y] instead of [y,x] by setting 'order' to 'F'
        root_console = tcod.Console(screen_width, screen_height, order="F")

        # the game loop
        while True:
            # handle game display
            engine.render(console=root_console, context=context)
            # get game events
            events = tcod.event.wait()
            # handle events and determine actions
            engine.handle_events(events)
Esempio n. 30
0
def main() -> None:

    # It has to start somewhere, it has to start sometime.
    # What better place than here, what better time than now.
    pygame.display.init()
    pygame.font.init()

    # make main surface
    surface_main = pygame.display.set_mode(
        size=(int(CONFIG.Display.get("game_width")),
              int(CONFIG.Display.get("game_height"))),
        flags=pygame.SCALED | pygame.RESIZABLE)

    # make player and rando NPC
    # TODO: Magic numbers!
    player = copy.deepcopy(entity_factories.player)

    # start the engine
    engine = Engine(player)

    # test message log.
    engine.message_log.add_message("Welcome to the game!")
    engine.message_log.add_message(
        "These are test messages to see how the text wrapping will work.")

    # generate map
    # max_rooms, room_min_size, room_max_size, map_width, map_height, player)
    engine.GAMEMAP = generate_dungeon(CONFIG.Game.get("rooms_max"),
                                      CONFIG.Game.get("room_size_min"),
                                      CONFIG.Game.get("room_size_max"),
                                      CONFIG.Game.get("map_width"),
                                      CONFIG.Game.get("map_height"),
                                      CONFIG.Game.get("monsters_per_room"),
                                      CONFIG.Game.get("potions_per_room"),
                                      engine=engine)

    # Do the first FOV update for where the player stands
    engine.update_fov()

    # gobal quit flag
    should_quit = False

    # MAIN LOOP
    while not should_quit:

        # handle events
        try:
            engine.eventhandler.handle_events()
        except (SystemExit):
            should_quit = True
            continue
        except Exception:
            traceback.print_exc()  # print error to stderr.
            # then print error to message log.
            engine.message_log.add_message(traceback.format_exc(),
                                           CONFIG.get_colour("error"))

        # print to screen
        engine.render(surface_main)

    # ... and we're done!
    pygame.quit()