diff options
author | Diego Roversi <diegor@tiscali.it> | 2019-09-08 18:12:27 +0200 |
---|---|---|
committer | Diego Roversi <diegor@tiscali.it> | 2019-09-08 18:12:27 +0200 |
commit | 1d9925c287b318ec21343e2682b51ab6a36ae8db (patch) | |
tree | 17d1c0ac21eea6f291146520afa8381db4586fb4 /bubbob/save_rnglevel.py |
initial commit from cvs 1.6.2
Diffstat (limited to 'bubbob/save_rnglevel.py')
-rw-r--r-- | bubbob/save_rnglevel.py | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/bubbob/save_rnglevel.py b/bubbob/save_rnglevel.py new file mode 100644 index 0000000..8b09571 --- /dev/null +++ b/bubbob/save_rnglevel.py @@ -0,0 +1,125 @@ +# +# This script outputs the random levels in a format you can +# save into a file in the levels-directory and bub'n'bros +# will be able to use it. +# +# this accepts the following parameters: +# -seed N use random seed N for the generation +# + +import sys +import random +import string +sys.path.append('..') +sys.path.append('../common') + +n_lvls = 1 + +idx = 0 +while idx < len(sys.argv): + arg = sys.argv[idx] + idx += 1 + if arg == '-seed': + arg = sys.argv[idx] + idx += 1 + print "# Using seed: " + arg + "\n" + random.seed(arg) + +def printlvl(level): + mons = {} + monconv = {} + tmpmons = {} + + # Populate monster tables + for y in range(0,level.HEIGHT): + for x in range(0,level.WIDTH): + wm = level.wmap[y][x] + if wm >= 'a': + m = getattr(level, wm) + if m.dir == 1: + dir = 'L' + else: + dir = 'R' + s = dir + m.cls.__name__ + if tmpmons.has_key(s): + tmpmons[s].append(wm) + else: + tmpmons[s] = [wm] + # Build monster character conversion tables + lettr = 'a' + for m in tmpmons: + for n in tmpmons[m]: + monconv[n] = lettr + mons[lettr] = m + lettr = chr(ord(lettr) + 1) + + # Build walls, replacing monsters from mons[] + walls = "" + + for y in range(0,level.HEIGHT-1): + walls += "##" + for x in range(0,level.WIDTH): + wm = level.wmap[y][x] + if wm >= 'a': + if monconv.has_key(wm): + walls += monconv[wm] + else: + walls += '?' + else: + walls += wm + walls += "##\n" + walls += "##" + for x in range(0,level.WIDTH): + if level.wmap[0][x] == '#' or level.wmap[level.HEIGHT-1][x] == '#': + walls += "#" + else: + walls += " " + walls += "##\n" + + # Build winds + winds = "" + for y in range(0,level.HEIGHT): + for x in range(0,level.WIDTH+4): + winds += level.winds[y][x] + winds += "\n" + + for m in mons: + print " " + m + " = " + mons[m] + + if level.letter: + print " letter = 1" + if level.fire: + print " fire = 1" + if level.lightning: + print " lightning = 1" + if level.water: + print " water = 1" + if level.top: + print " top = 1" + + print " walls = \"\"\"\n" + walls + "\"\"\"" + print " winds = \"\"\"\n" + winds + "\"\"\"" + + +for i in range(n_lvls): + print """ +import boarddef, mnstrmap, random +from boarddef import LNasty, LMonky, LGhosty, LFlappy +from boarddef import LSpringy, LOrcy, LGramy, LBlitzy +from boarddef import RNasty, RMonky, RGhosty, RFlappy +from boarddef import RSpringy, ROrcy, RGramy, RBlitzy +""" + + d = {'__name__': 'RandomLevels'} + execfile('levels/RandomLevels.py', d) + + for i, Lvl in enumerate(d['GenerateLevels']()): + level = Lvl(i) + + if level.monsters: + print "\n\nclass level%02d(boarddef.Level):" % (i+1) + else: + print "\n\nclass levelFinal(boarddef.Level):" + + printlvl(level) + print |