Difference between revisions of "Complete Roguelike Tutorial, using python3+libtcod, part 1 code"

From RogueBasin
Jump to navigation Jump to search
Line 34: Line 34:


<div style="background-color: #EEEEEE; border-style: dotted"><syntaxhighlight lang="python">
<div style="background-color: #EEEEEE; border-style: dotted"><syntaxhighlight lang="python">
import libtcodpy as libtcod
#!/usr/bin/env python
import libtcodpy as tcod


#actual size of the window
SCREEN_WIDTH = 80
SCREEN_HEIGHT = 50


LIMIT_FPS = 20  #20 frames-per-second maximum
# ######################################################################
# Constants and Initial settings
# ######################################################################
# Size of the terminal window in characters
SCREEN_WIDTH = 80  # characters wide
SCREEN_HEIGHT = 50  # characters tall
LIMIT_FPS = 20  # 20 frames-per-second maximum




# Setup displayed font
font_filename = 'arial10x10.png'  # needs to be in same folder as this file
font_flags = tcod.FONT_TYPE_GREYSCALE | tcod.FONT_LAYOUT_TCOD
tcod.console_set_custom_font(font_filename, font_flags)
# Setup window
window_title = 'Python 3 libtcod tutorial'
fullscreen = False
tcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, window_title, fullscreen)
# Limit frames per second
tcod.sys_set_fps(LIMIT_FPS)
# Setup player's initial position
player_x = SCREEN_WIDTH // 2
player_y = SCREEN_HEIGHT // 2
# ######################################################################
# User Interface Control
# ######################################################################
def handle_keys():
def handle_keys():
     global playerx, playery
    """Handles keyboard input
      
 
     #key = libtcod.console_check_for_keypress()  #real-time
    Updates:
     key = libtcod.console_wait_for_keypress(True)  #turn-based
        player_x: x coordinate of player position
   
        player_y: y coordinate of player position
     if key.vk == libtcod.KEY_ENTER and key.lalt:
 
         #Alt+Enter: toggle fullscreen
    Returns:
         libtcod.console_set_fullscreen(not libtcod.console_is_fullscreen())
        bool: True if exit the game is requested else False
       
    """
     elif key.vk == libtcod.KEY_ESCAPE:
     global player_x, player_y
         return True  #exit game
 
   
     exit_game = False
     #movement keys
 
     if libtcod.console_is_key_pressed(libtcod.KEY_UP):
     # key = tcod.console_check_for_keypress()  # real-time
         playery -= 1
     key = tcod.console_wait_for_keypress(True)  # turn-based
       
 
     elif libtcod.console_is_key_pressed(libtcod.KEY_DOWN):
     if key.vk == tcod.KEY_ENTER and key.lalt:
         playery += 1
         # Alt+Enter: toggle fullscreen
       
         tcod.console_set_fullscreen(not tcod.console_is_fullscreen())
     elif libtcod.console_is_key_pressed(libtcod.KEY_LEFT):
 
         playerx -= 1
     elif key.vk == tcod.KEY_ESCAPE:
       
         exit_game = True  # exit game
     elif libtcod.console_is_key_pressed(libtcod.KEY_RIGHT):
 
         playerx += 1
     # movement keys
     if tcod.console_is_key_pressed(tcod.KEY_UP):
         player_y = player_y - 1
 
     elif tcod.console_is_key_pressed(tcod.KEY_DOWN):
         player_y = player_y + 1
 
     elif tcod.console_is_key_pressed(tcod.KEY_LEFT):
         player_x = player_x - 1
 
     elif tcod.console_is_key_pressed(tcod.KEY_RIGHT):
         player_x = player_x + 1


    return exit_game


#############################################
# Initialization & Main Loop
#############################################


libtcod.console_set_custom_font('arial10x10.png', libtcod.FONT_TYPE_GREYSCALE | libtcod.FONT_LAYOUT_TCOD)
# ######################################################################
libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'python/libtcod tutorial', False)
# Main Game Loop
libtcod.sys_set_fps(LIMIT_FPS)
# ######################################################################
exit_game = False
while not tcod.console_is_window_closed() and exit_game is not True:
    tcod.console_set_default_foreground(0, tcod.white)
    tcod.console_put_char(0, player_x, player_y, '@', tcod.BKGND_NONE)
    tcod.console_flush()
    tcod.console_put_char(0, player_x, player_y, ' ', tcod.BKGND_NONE)


playerx = SCREEN_WIDTH/2
    # handle keys
playery = SCREEN_HEIGHT/2
    exit_game = handle_keys()


while not libtcod.console_is_window_closed():
   
    libtcod.console_set_default_foreground(0, libtcod.white)
    libtcod.console_put_char(0, playerx, playery, '@', libtcod.BKGND_NONE)
   
    libtcod.console_flush()
   
    libtcod.console_put_char(0, playerx, playery, ' ', libtcod.BKGND_NONE)
   
    #handle keys and exit game if needed
    exit = handle_keys()
    if exit:
        break
</syntaxhighlight></div>
</syntaxhighlight></div>


[[Category:Developing]]
[[Category:Developing]]

Revision as of 08:20, 15 September 2017

Showing the @ on screen

#!/usr/bin/env python
import libtcodpy as tcod

# Size of the terminal window in characters
SCREEN_WIDTH = 80  # characters wide
SCREEN_HEIGHT = 50  # characters tall

LIMIT_FPS = 20  # 20 frames-per-second maximum

# Setup displayed font
font_filename = 'arial10x10.png'
font_flags = tcod.FONT_TYPE_GREYSCALE | tcod.FONT_LAYOUT_TCOD
tcod.console_set_custom_font(font_filename, font_flags)

# Setup window
window_title = 'python/libtcod tutorial'
fullscreen = False
tcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, window_title, fullscreen)

# Limit frames per second
tcod.sys_set_fps(LIMIT_FPS)

# Game loop
while not tcod.console_is_window_closed():
    tcod.console_set_default_foreground(0, tcod.white)
    tcod.console_put_char(0, 1, 1, '@', tcod.BKGND_NONE)
    tcod.console_flush()

Moving around

#!/usr/bin/env python
import libtcodpy as tcod


# ######################################################################
# Constants and Initial settings
# ######################################################################
# Size of the terminal window in characters
SCREEN_WIDTH = 80  # characters wide
SCREEN_HEIGHT = 50  # characters tall
LIMIT_FPS = 20  # 20 frames-per-second maximum


# Setup displayed font
font_filename = 'arial10x10.png'  # needs to be in same folder as this file
font_flags = tcod.FONT_TYPE_GREYSCALE | tcod.FONT_LAYOUT_TCOD
tcod.console_set_custom_font(font_filename, font_flags)


# Setup window
window_title = 'Python 3 libtcod tutorial'
fullscreen = False
tcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, window_title, fullscreen)


# Limit frames per second
tcod.sys_set_fps(LIMIT_FPS)


# Setup player's initial position
player_x = SCREEN_WIDTH // 2
player_y = SCREEN_HEIGHT // 2


# ######################################################################
# User Interface Control
# ######################################################################
def handle_keys():
    """Handles keyboard input

    Updates:
        player_x: x coordinate of player position
        player_y: y coordinate of player position

    Returns:
        bool: True if exit the game is requested else False
    """
    global player_x, player_y

    exit_game = False

    # key = tcod.console_check_for_keypress()  # real-time
    key = tcod.console_wait_for_keypress(True)  # turn-based

    if key.vk == tcod.KEY_ENTER and key.lalt:
        # Alt+Enter: toggle fullscreen
        tcod.console_set_fullscreen(not tcod.console_is_fullscreen())

    elif key.vk == tcod.KEY_ESCAPE:
        exit_game = True  # exit game

    # movement keys
    if tcod.console_is_key_pressed(tcod.KEY_UP):
        player_y = player_y - 1

    elif tcod.console_is_key_pressed(tcod.KEY_DOWN):
        player_y = player_y + 1

    elif tcod.console_is_key_pressed(tcod.KEY_LEFT):
        player_x = player_x - 1

    elif tcod.console_is_key_pressed(tcod.KEY_RIGHT):
        player_x = player_x + 1

    return exit_game


# ######################################################################
# Main Game Loop
# ######################################################################
exit_game = False
while not tcod.console_is_window_closed() and exit_game is not True:
    tcod.console_set_default_foreground(0, tcod.white)
    tcod.console_put_char(0, player_x, player_y, '@', tcod.BKGND_NONE)
    tcod.console_flush()
    tcod.console_put_char(0, player_x, player_y, ' ', tcod.BKGND_NONE)

    # handle keys
    exit_game = handle_keys()