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

From RogueBasin
Jump to navigation Jump to search
(changed default to turn-based, added syntax highlighting, removed "Generalizing" (it's now in Part 2))
 
(16 intermediate revisions by 8 users not shown)
Line 1: Line 1:
<center><table border="0" cellpadding="10" cellspacing="0" style="background:#F0E68C"><tr><td><center>
<center><table border="0" cellpadding="10" cellspacing="0" style="background:#F0E68C"><tr><td><center>
This is part of the '''code''' for a series of tutorials; the main page can be found [[Complete Roguelike Tutorial, using python+libtcod|here]].
This is part of a series of tutorials; the main page can be found [[Complete Roguelike Tutorial, using python+libtcod|here]].
 
The tutorial uses libtcod version 1.6.0 and above.
 
If you choose to use 1.5.1, you can find the old version [http://www.roguebasin.com/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod,_part_1_code&oldid=30244 here].<br/>
If you choose to use 1.5.0, you can find the old version [http://roguebasin.roguelikedevelopment.org/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod,_part_1_code&oldid=29862 here].
</center></td></tr></table></center>
</center></td></tr></table></center>


Line 22: Line 27:
while not libtcod.console_is_window_closed():
while not libtcod.console_is_window_closed():
      
      
     libtcod.console_set_foreground_color(0, libtcod.white)
     libtcod.console_set_default_foreground(0, libtcod.white)
      
      
     libtcod.console_print_left(0, 1, 1, libtcod.BKGND_NONE, '@')
     libtcod.console_put_char(0, 1, 1, '@', libtcod.BKGND_NONE)
      
      
     libtcod.console_flush()
     libtcod.console_flush()
Line 79: Line 84:
playerx = SCREEN_WIDTH/2
playerx = SCREEN_WIDTH/2
playery = SCREEN_HEIGHT/2
playery = SCREEN_HEIGHT/2
first_time = True  #for turn-based games


while not libtcod.console_is_window_closed():
while not libtcod.console_is_window_closed():
      
      
     libtcod.console_print_left(0, playerx, playery, libtcod.BKGND_NONE, ' ')
     libtcod.console_set_default_foreground(0, libtcod.white)
    libtcod.console_put_char(0, playerx, playery, '@', libtcod.BKGND_NONE)
      
      
     #handle keys and exit game if needed
     libtcod.console_flush()
    if not first_time:  #for turn-based games, remember to indent after!
        exit = handle_keys()
        if exit:
            break
      
      
     first_time = False  #for turn-based games
     libtcod.console_put_char(0, playerx, playery, ' ', libtcod.BKGND_NONE)
      
      
     libtcod.console_set_foreground_color(0, libtcod.white)
     #handle keys and exit game if needed
     libtcod.console_print_left(0, playerx, playery, libtcod.BKGND_NONE, '@')
     exit = handle_keys()
      
     if exit:
    libtcod.console_flush()
        break
</syntaxhighlight></div>
</syntaxhighlight></div>
[[Category:Developing]]

Latest revision as of 16:28, 16 September 2017

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

The tutorial uses libtcod version 1.6.0 and above.

If you choose to use 1.5.1, you can find the old version here.
If you choose to use 1.5.0, you can find the old version here.

Showing the @ on screen

import libtcodpy as libtcod

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

LIMIT_FPS = 20  #20 frames-per-second maximum


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)

while not libtcod.console_is_window_closed():
    
    libtcod.console_set_default_foreground(0, libtcod.white)
    
    libtcod.console_put_char(0, 1, 1, '@', libtcod.BKGND_NONE)
    
    libtcod.console_flush()


Moving around

import libtcodpy as libtcod

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

LIMIT_FPS = 20  #20 frames-per-second maximum


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


#############################################
# 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)
libtcod.sys_set_fps(LIMIT_FPS)

playerx = SCREEN_WIDTH/2
playery = SCREEN_HEIGHT/2

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