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

From RogueBasin
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 38: 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 python
import libtcodpy as libtcod
import libtcodpy as tcod


# ######################################################################
#actual size of the window
# Global Game Settings
SCREEN_WIDTH = 80
# ######################################################################
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
def initialize_game():
    # Setup player
    global player_x, player_y
    player_x = SCREEN_WIDTH // 2
    player_y = SCREEN_HEIGHT // 2
 
    # Setup Font
    font_filename = 'terminal.png'
    font_flags = tcod.FONT_TYPE_GREYSCALE | tcod.FONT_LAYOUT_ASCII_INCOL
    tcod.console_set_custom_font(font_filename, font_flags)
 
    # 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)
 
 
# ######################################################################
# 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 player_x, player_y
     global playerx, playery
 
   
     key = get_key_event(TURN_BASED)
     #key = libtcod.console_check_for_keypress() #real-time
 
    key = libtcod.console_wait_for_keypress(True)  #turn-based
     if key.vk == tcod.KEY_ENTER and key.lalt:
   
         # Alt+Enter: toggle fullscreen
     if key.vk == libtcod.KEY_ENTER and key.lalt:
         tcod.console_set_fullscreen(not tcod.console_is_fullscreen())
         #Alt+Enter: toggle fullscreen
 
         libtcod.console_set_fullscreen(not libtcod.console_is_fullscreen())
     elif key.vk == tcod.KEY_ESCAPE:
       
         return True  # exit game
     elif key.vk == libtcod.KEY_ESCAPE:
 
         return True  #exit game
     # movement keys
   
     if tcod.console_is_key_pressed(tcod.KEY_UP):
     #movement keys
         player_y -= 1
     if libtcod.console_is_key_pressed(libtcod.KEY_UP):
 
         playery -= 1
     elif tcod.console_is_key_pressed(tcod.KEY_DOWN):
       
         player_y += 1
     elif libtcod.console_is_key_pressed(libtcod.KEY_DOWN):
 
         playery += 1
     elif tcod.console_is_key_pressed(tcod.KEY_LEFT):
       
         player_x -= 1
     elif libtcod.console_is_key_pressed(libtcod.KEY_LEFT):
 
         playerx -= 1
     elif tcod.console_is_key_pressed(tcod.KEY_RIGHT):
       
         player_x += 1
     elif libtcod.console_is_key_pressed(libtcod.KEY_RIGHT):
         playerx += 1




#############################################
#############################################
# Main Game Loop
# 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)


def main():
playerx = SCREEN_WIDTH/2
    initialize_game()
playery = SCREEN_HEIGHT/2
 
    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()
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
</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