Post-competition version

I have uploaded a new version of Rainbow Rooms.  This one adds support for Python 3, 64-bit Linux, and (hopefully) OS X, while still supporting Python 2.6+, 32-bit Linux, and (probably) Windows.

I have also fixed the level-generation bugs.  It always terminates quickly, and there should always be a way to the goal.  It can still prevent you from going back to the starting point, though.

For those who had fun with the original, this one promises a bit more challenge.  The new maze generator tries to hide switches when it can, and each maze is longer than the last, no matter how long you play.  Yes, that means that the seamless height transitions are in, starting on level 6.

For those who didn't; sorry.  There's nothing spectacularly different about this one.  I have a few ideas, though...

(log in to comment)

Comments

Thanks for posting this!

Note that on my Mac (Snow Leopard) it doesn't work out of the box :-( The libtcod.dylib only contains a 32-bit image and not a 64-bit image. If I try to run it with a 32-bit python I get a different error :-(

l-rjones:rainbowrooms-1.1.0 richard$ python2.7-32 run_game.py
Traceback (most recent call last):
  File "run_game.py", line 2, in <module>
    import rainbowrooms.main
  File "/private/tmp/rainbowrooms-1.1.0/rainbowrooms/main.py", line 1, in <module>
    from rainbowrooms.commands import base, Quit
  File "/private/tmp/rainbowrooms-1.1.0/rainbowrooms/commands.py", line 2, in <module>
    import libtcodpy as tcod
  File "/private/tmp/rainbowrooms-1.1.0/libtcodpy.py", line 54, in <module>
    _lib = ctypes.cdll['./libtcod.dylib']
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 428, in __getitem__
    return getattr(self, name)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 423, in __getattr__
    dll = self._dlltype(name)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(./libtcod.dylib, 6): Library not loaded: @executable_path/../Frameworks/libpng.framework/Versions/1.4.1/libpng
  Referenced from: /private/tmp/rainbowrooms-1.1.0/libtcod.dylib
  Reason: image not found
I get that error regardless of how I invoke Python in 32-bit mode to make libtcod happy (as above or using arch or the more verbose environment var.)
Sorry to hear that.  I considered including the libtcod source, but it increased the archive size by a factor of 30.  If you compile a 64-bit Mac library, though, I'll include it for future users.