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

From RogueBasin
Jump to navigation Jump to search
 
(4 intermediate revisions by 2 users not shown)
Line 19: Line 19:


# Setup Font
# Setup Font
font_filename = 'terminal.png'
font_filename = 'arial10x10.png'
tcod.console_set_custom_font(font_filename, tcod.FONT_TYPE_GREYSCALE | tcod.FONT_LAYOUT_TCOD)
tcod.console_set_custom_font(font_filename, tcod.FONT_TYPE_GREYSCALE | tcod.FONT_LAYOUT_TCOD)


Line 41: Line 41:


<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
# Global Game Settings
SCREEN_HEIGHT = 50
# ######################################################################
# Windows Controls
FULLSCREEN = False
SCREEN_WIDTH = 80 # characters wide
SCREEN_HEIGHT = 50 # characters tall
LIMIT_FPS = 20  # 20 frames-per-second maximum
# Game Controls
TURN_BASED = True  # turn-based game


LIMIT_FPS = 20  #20 frames-per-second maximum
 
# ######################################################################
# User Input
# ######################################################################
def get_key_event(turn_based=None):
    if turn_based:
        # Turn-based game play; wait for a key stroke
        key = tcod.console_wait_for_keypress(True)
    else:
        # Real-time game play; don't wait for a player's key stroke
        key = tcod.console_check_for_keypress()
    return key




def handle_keys():
def handle_keys():
     global playerx, playery
     global player_x, player_y
   
 
     #key = libtcod.console_check_for_keypress() #real-time
     key = get_key_event(TURN_BASED)
    key = libtcod.console_wait_for_keypress(True)  #turn-based
 
   
     if key.vk == tcod.KEY_ENTER and key.lalt:
     if key.vk == libtcod.KEY_ENTER and key.lalt:
         # Alt+Enter: toggle fullscreen
         #Alt+Enter: toggle fullscreen
         tcod.console_set_fullscreen(not tcod.console_is_fullscreen())
         libtcod.console_set_fullscreen(not libtcod.console_is_fullscreen())
 
       
     elif key.vk == tcod.KEY_ESCAPE:
     elif key.vk == libtcod.KEY_ESCAPE:
         return True  # exit game
         return True  #exit game
 
   
     # movement keys
     #movement keys
     if tcod.console_is_key_pressed(tcod.KEY_UP):
     if libtcod.console_is_key_pressed(libtcod.KEY_UP):
         player_y -= 1
         playery -= 1
 
       
     elif tcod.console_is_key_pressed(tcod.KEY_DOWN):
     elif libtcod.console_is_key_pressed(libtcod.KEY_DOWN):
         player_y += 1
         playery += 1
 
       
     elif tcod.console_is_key_pressed(tcod.KEY_LEFT):
     elif libtcod.console_is_key_pressed(libtcod.KEY_LEFT):
         player_x -= 1
         playerx -= 1
 
       
     elif tcod.console_is_key_pressed(tcod.KEY_RIGHT):
     elif libtcod.console_is_key_pressed(libtcod.KEY_RIGHT):
         player_x += 1
         playerx += 1




#############################################
#############################################
# Initialization & Main Loop
# Main Game 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)
libtcod.sys_set_fps(LIMIT_FPS)


playerx = SCREEN_WIDTH/2
def main():
playery = SCREEN_HEIGHT/2
    # Setup player
    global player_x, player_y
    player_x = SCREEN_WIDTH // 2
    player_y = SCREEN_HEIGHT // 2
 
    # Setup Font
    font_filename = 'arial10x10.png'
    tcod.console_set_custom_font(font_filename, tcod.FONT_TYPE_GREYSCALE | tcod.FONT_LAYOUT_TCOD)
 
    # Initialize screen
    title = 'Python 3 + Libtcod tutorial'
    tcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, title, FULLSCREEN)
 
    # Set FPS
    tcod.sys_set_fps(LIMIT_FPS)
 
    exit_game = False
    while not tcod.console_is_window_closed() and not exit_game:
        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)
 
        exit_game = handle_keys()
 


while not libtcod.console_is_window_closed():
main()
   
    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]]

Latest revision as of 02:34, 26 April 2019

This is part of a series of tutorials; the main page can be found here.

Showing the @ on screen

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

# ######################################################################
# Global Game Settings
# ######################################################################
# Size of window
SCREEN_WIDTH = 80  # characters wide
SCREEN_HEIGHT = 50  # characters tall
LIMIT_FPS = 20  # 20 frames-per-second maximum

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

# Initialize screen
tcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'python/libtcod tutorial', False)

# Set FPS
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

# ######################################################################
# Global Game Settings
# ######################################################################
# Windows Controls
FULLSCREEN = False
SCREEN_WIDTH = 80  # characters wide
SCREEN_HEIGHT = 50  # characters tall
LIMIT_FPS = 20  # 20 frames-per-second maximum
# Game Controls
TURN_BASED = True  # turn-based game


# ######################################################################
# User Input
# ######################################################################
def get_key_event(turn_based=None):
    if turn_based:
        # Turn-based game play; wait for a key stroke
        key = tcod.console_wait_for_keypress(True)
    else:
        # Real-time game play; don't wait for a player's key stroke
        key = tcod.console_check_for_keypress()
    return key


def handle_keys():
    global player_x, player_y

    key = get_key_event(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:
        return True  # exit game

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

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

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

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


#############################################
# Main Game Loop
#############################################


def main():
    # Setup player
    global player_x, player_y
    player_x = SCREEN_WIDTH // 2
    player_y = SCREEN_HEIGHT // 2

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

    # Initialize screen
    title = 'Python 3 + Libtcod tutorial'
    tcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, title, FULLSCREEN)

    # Set FPS
    tcod.sys_set_fps(LIMIT_FPS)

    exit_game = False
    while not tcod.console_is_window_closed() and not exit_game:
        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)

        exit_game = handle_keys()


main()