Difference between revisions of "Complete Roguelike Tutorial, using python+libtcod, part 1 code"
Jump to navigation
Jump to search
(Reverting a mistaken overwrite) |
|||
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"> | ||
import libtcodpy as | #!/usr/bin/env python | ||
import libtcodpy as tcod | |||
# | # ###################################################################### | ||
SCREEN_WIDTH = 80 | # Global Game Settings | ||
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 = | |||
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 playerx, | global playerx, player_y | ||
key = get_key_event(TURN_BASED) | |||
key = | |||
if key.vk == tcod.KEY_ENTER and key.lalt: | |||
if key.vk == | # Alt+Enter: toggle fullscreen | ||
#Alt+Enter: toggle fullscreen | tcod.console_set_fullscreen(not tcod.console_is_fullscreen()) | ||
elif key.vk == tcod.KEY_ESCAPE: | |||
elif key.vk == | return True # exit game | ||
return True #exit game | |||
# movement keys | |||
#movement keys | if tcod.console_is_key_pressed(tcod.KEY_UP): | ||
if | player_y -= 1 | ||
elif tcod.console_is_key_pressed(tcod.KEY_DOWN): | |||
elif | player_y += 1 | ||
elif tcod.console_is_key_pressed(tcod.KEY_LEFT): | |||
elif | |||
playerx -= 1 | playerx -= 1 | ||
elif | elif tcod.console_is_key_pressed(tcod.KEY_RIGHT): | ||
playerx += 1 | playerx += 1 | ||
############################################# | ############################################# | ||
# | # Main Game Loop | ||
############################################# | ############################################# | ||
playerx = | def main(): | ||
initialize_game() | |||
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, playerx, player_y, '@', tcod.BKGND_NONE) | |||
tcod.console_flush() | |||
tcod.console_put_char(0, playerx, player_y, ' ', tcod.BKGND_NONE) | |||
exit_game = handle_keys() | |||
main() | |||
</syntaxhighlight></div> | </syntaxhighlight></div> | ||
[[Category:Developing]] | [[Category:Developing]] |
Revision as of 15:01, 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. |
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
#!/usr/bin/env python
import libtcodpy as tcod
# ######################################################################
# Global Game Settings
# ######################################################################
# 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
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():
global playerx, player_y
key = get_key_event(TURN_BASED)
if key.vk == tcod.KEY_ENTER and key.lalt:
# Alt+Enter: toggle fullscreen
tcod.console_set_fullscreen(not tcod.console_is_fullscreen())
elif key.vk == tcod.KEY_ESCAPE:
return True # exit game
# movement keys
if tcod.console_is_key_pressed(tcod.KEY_UP):
player_y -= 1
elif tcod.console_is_key_pressed(tcod.KEY_DOWN):
player_y += 1
elif tcod.console_is_key_pressed(tcod.KEY_LEFT):
playerx -= 1
elif tcod.console_is_key_pressed(tcod.KEY_RIGHT):
playerx += 1
#############################################
# Main Game Loop
#############################################
def main():
initialize_game()
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, playerx, player_y, '@', tcod.BKGND_NONE)
tcod.console_flush()
tcod.console_put_char(0, playerx, player_y, ' ', tcod.BKGND_NONE)
exit_game = handle_keys()
main()