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

From RogueBasin
Jump to navigation Jump to search
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 libtcod version 1.6.0 and above.
The tutorial uses tld version 1.5.3 and Python 3.5


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 64: Line 62:


     #turn-based
     #turn-based
     #user_input = tdl.event.key_wait()
     user_input = tdl.event.key_wait()


     if user_input.key == 'ENTER' and user_input.alt:
     if user_input.key == 'ENTER' and user_input.alt:

Revision as of 10:34, 13 November 2016

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

The tutorial uses tld version 1.5.3 and Python 3.5

Showing the @ on screen

#!/usr/bin/env python3

import tdl

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

LIMIT_FPS = 20  #20 frames-per-second maximum


tdl.set_font('arial10x10.png', greyscale=True, altLayout=True)

console = tdl.init(SCREEN_WIDTH, SCREEN_HEIGHT, title="Roguelike", fullscreen=False)

tdl.setFPS(LIMIT_FPS)

while not tdl.event.is_window_closed():

    console.draw_char(1, 1, '@', bg=None, fg=(255,255,255))
    
    tdl.flush()


Moving around

#!/usr/bin/env python3

import tdl

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

LIMIT_FPS = 20  #20 frames-per-second maximum

def handle_keys():
    global playerx, playery
    
    '''
    #realtime

    keypress = False
    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
        tdl.set_fullscreen(True)
 
    elif user_input.key == 'ESCAPE':
        return True  #exit game

    #movement keys
    if user_input.key == 'UP':
        playery -= 1

    elif user_input.key == 'DOWN':
        playery += 1

    elif user_input.key == 'LEFT':
        playerx -= 1

    elif user_input.key == 'RIGHT':
        playerx += 1


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

tdl.set_font('arial10x10.png', greyscale=True, altLayout=True)
console = tdl.init(SCREEN_WIDTH, SCREEN_HEIGHT, title="Roguelike", fullscreen=False)
tdl.setFPS(LIMIT_FPS)

playerx = int(SCREEN_WIDTH/2)
playery = int(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)

    #handle keys and exit game if needed
    exit_game = handle_keys()
    if exit_game:
        break