summaryrefslogtreecommitdiff
path: root/bubbob/boarddef.py
diff options
context:
space:
mode:
Diffstat (limited to 'bubbob/boarddef.py')
-rw-r--r--bubbob/boarddef.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/bubbob/boarddef.py b/bubbob/boarddef.py
new file mode 100644
index 0000000..168a3e1
--- /dev/null
+++ b/bubbob/boarddef.py
@@ -0,0 +1,69 @@
+import boards, mnstrmap
+
+class left:
+ dir = 1
+ def __init__(self, cls):
+ self.cls = cls
+ def build(self, x, y):
+ return self.cls(x=x, y=y-1, dir=self.dir)
+
+class right(left):
+ dir = 0
+
+LNasty = left(mnstrmap.Nasty)
+RNasty = right(mnstrmap.Nasty)
+
+LMonky = left(mnstrmap.Monky)
+RMonky = right(mnstrmap.Monky)
+
+LGhosty = left(mnstrmap.Ghosty)
+RGhosty = right(mnstrmap.Ghosty)
+
+LFlappy = left(mnstrmap.Flappy)
+RFlappy = right(mnstrmap.Flappy)
+
+LSpringy = left(mnstrmap.Springy)
+RSpringy = right(mnstrmap.Springy)
+
+LOrcy = left(mnstrmap.Orcy)
+ROrcy = right(mnstrmap.Orcy)
+
+LGramy = left(mnstrmap.Gramy)
+RGramy = right(mnstrmap.Gramy)
+
+LBlitzy = left(mnstrmap.Blitzy)
+RBlitzy = right(mnstrmap.Blitzy)
+
+
+# Sugar around the Board class
+class Level(boards.Board):
+
+ WIND_DELTA = boards.CELL
+ winds = None
+ monsters = []
+
+ def __init__(self, num):
+ walls = [line for line in self.walls.split('\n') if line]
+ self.monsters = list(self.monsters)
+ for y in range(len(walls)):
+ line = walls[y]
+ for x in range(len(line)):
+ c = line[x]
+ if c != ' ' and c != '#':
+ deflist = getattr(self, c)
+ if isinstance(deflist, left):
+ deflist = (deflist,)
+ for builder in deflist:
+ self.monsters.append(builder.build(x,y))
+ self.walls = self.walls.replace(c, ' ')
+ if self.winds is None:
+ width = len(walls[0])
+ height = len(walls)
+ spaces = " " * (width-6)
+ lbar = '>'*(width/2-2)
+ rbar = '<'*(width/2-2)
+ winds = ['>> ' + spaces + ' <<',
+ lbar + 'x'*(width-len(lbar)-len(rbar)) + rbar]
+ winds += ['>>^' + spaces + '^<<'] * (height-2)
+ self.winds = '\n'.join(winds)
+ boards.Board.__init__(self, num)