Roguelike Tutorial, using python3+tdl, part 1 code

From RogueBasin
Revision as of 08:14, 30 May 2017 by Weilian (talk | contribs) (Updated version to 3.1.0. No changes in code.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

The tutorial uses tdl version 3.1.0 and Python 3.5

Showing the @ on screen

#!/usr/bin/env python3

import tdl

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

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 = 50

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(not tdl.get_fullscreen())
 
    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 = SCREEN_WIDTH//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)

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