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)
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)
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)
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)
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) """
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()
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, )
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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()
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()
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)
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
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)
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()
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)
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, )
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)
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)
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()