Temple of The Roguelike Forums
Development => Programming => Topic started by: Hashiba on May 22, 2012, 10:02:27 PM
-
Hi folks! I've been dabbling at learning to program and have set my sights on a roguelike.
I've been half-following the "Complete Roguelike Tutorial using Python and libtcod", except I'm not using libtcod. I'm using Python 3.2.3, Pygcurse and Pygame.
Call me crazy, but I figure converting a tutorial to a new library is a better learning experience than just copying code and hoping I understand it.
Its working so well I am stumped! I am not experienced enough to write my own FOV algo and obviously I can't used the ones included with libtcod. So...
I found a Python permissive FOV implementation on RogueBasin @
http://roguebasin.com/index.php/Permissive_Field_of_View_in_Python
Well I can't make it work! Specifically it does something I am not familiar with. You call to calculate FOV with a fuction call that takes 7 arguments, 5 or which are variables and 2 are "user functions". The variables make sense but I have no idea how you pass a function as an argument to a function. I've tired Google and some Python documentation without any luck.
If someone can be kind enough to enlighten me, I can finish up the basic 'engine'.
Thanks in advance!
P.S. I'm not really stubborn about what type of FOV I use at this point in my Roguelike career. Any helpful adivce on another implementation would also be helpful.
-
The variables make sense but I have no idea how you pass a function as an argument to a function. I've tired Google and some Python documentation without any luck.
Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)]
Type "copyright", "credits" or "license" for more information.
IPython 0.10 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]: def funA(x, y, z, f1, f2):
...: return (x, y, z, f1(x), f2(y))
...:
In [2]: def funB(x):
...: return x*x
...:
In [3]: def funC(x):
...: return x*x*x
...:
In [4]: funA(1, 2, 3, funB, funC)
Out[4]: (1, 2, 3, 1, 8)