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

From RogueBasin
Jump to navigation Jump to search
 
(5 intermediate revisions by 2 users not shown)
Line 2: Line 2:
This is part of 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 tld version 1.5.3 and Python 3.5
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>


== Showing the @ on screen ==
== Showing the @ on screen ==
<div style="background-color: #EEEEEE; border-style: dotted"><syntaxhighlight lang="python">
<div style="background-color: #EEEEEE; border-style: dotted"><syntaxhighlight lang="python">
#!/usr/bin/env python3
import libtcodpy as libtcod
 
import tdl


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


LIMIT_FPS = 20  #20 frames-per-second maximum
LIMIT_FPS = 20  #20 frames-per-second maximum




tdl.set_font('arial10x10.png', greyscale=True, altLayout=True)
libtcod.console_set_custom_font('arial10x10.png', libtcod.FONT_TYPE_GREYSCALE | libtcod.FONT_LAYOUT_TCOD)


console = tdl.init(SCREEN_WIDTH, SCREEN_HEIGHT, title="Roguelike", fullscreen=False)
libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'python/libtcod tutorial', False)


tdl.setFPS(LIMIT_FPS)
libtcod.sys_set_fps(LIMIT_FPS)


while not tdl.event.is_window_closed():
while not libtcod.console_is_window_closed():
 
   
     console.draw_char(1, 1, '@', bg=None, fg=(255,255,255))
    libtcod.console_set_default_foreground(0, libtcod.white)
   
     libtcod.console_put_char(0, 1, 1, '@', libtcod.BKGND_NONE)
      
      
     tdl.flush()
     libtcod.console_flush()
</syntaxhighlight></div>
</syntaxhighlight></div>


Line 36: Line 38:


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


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


LIMIT_FPS = 20  #20 frames-per-second maximum
LIMIT_FPS = 20  #20 frames-per-second maximum


def handle_keys():
def handle_keys():
     global playerx, playery
     global playerx, playery
      
      
    '''
     #key = libtcod.console_check_for_keypress() #real-time
     #realtime
    key = libtcod.console_wait_for_keypress(True#turn-based
 
      
    keypress = False
     if key.vk == libtcod.KEY_ENTER and key.lalt:
    for event in tdl.event.get():
        if event.type == 'KEYDOWN':
          user_input = event
          keypress = True
    if not keypress:
        return
    '''
 
    #turn-based
     user_input = tdl.event.key_wait()
 
     if user_input.key == 'ENTER' and user_input.alt:
         #Alt+Enter: toggle fullscreen
         #Alt+Enter: toggle fullscreen
         tdl.set_fullscreen(True)
         libtcod.console_set_fullscreen(not libtcod.console_is_fullscreen())
       
     elif user_input.key == 'ESCAPE':
     elif key.vk == libtcod.KEY_ESCAPE:
         return True  #exit game
         return True  #exit game
 
   
     #movement keys
     #movement keys
     if user_input.key == 'UP':
     if libtcod.console_is_key_pressed(libtcod.KEY_UP):
         playery -= 1
         playery -= 1
 
       
     elif user_input.key == 'DOWN':
     elif libtcod.console_is_key_pressed(libtcod.KEY_DOWN):
         playery += 1
         playery += 1
 
       
     elif user_input.key == 'LEFT':
     elif libtcod.console_is_key_pressed(libtcod.KEY_LEFT):
         playerx -= 1
         playerx -= 1
 
       
     elif user_input.key == 'RIGHT':
     elif libtcod.console_is_key_pressed(libtcod.KEY_RIGHT):
         playerx += 1
         playerx += 1




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


tdl.set_font('arial10x10.png', greyscale=True, altLayout=True)
libtcod.console_set_custom_font('arial10x10.png', libtcod.FONT_TYPE_GREYSCALE | libtcod.FONT_LAYOUT_TCOD)
console = tdl.init(SCREEN_WIDTH, SCREEN_HEIGHT, title="Roguelike", fullscreen=False)
libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'python/libtcod tutorial', False)
tdl.setFPS(LIMIT_FPS)
libtcod.sys_set_fps(LIMIT_FPS)


playerx = int(SCREEN_WIDTH/2)
playerx = SCREEN_WIDTH/2
playery = int(SCREEN_HEIGHT/2)
playery = SCREEN_HEIGHT/2
 
while not tdl.event.is_window_closed():
 
    console.draw_char(playerx, playery, '@', bg=None, fg=(255,255,255))
 
    tdl.flush()
 
    console.draw_char(playerx, playery, ' ', bg=None)


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
     #handle keys and exit game if needed
     exit_game = handle_keys()
     exit = handle_keys()
     if exit_game:
     if exit:
         break
         break
</syntaxhighlight></div>
</syntaxhighlight></div>


[[Category:Developing]]
[[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