Completed scrolling in tile picker for level editor
authorHarishankar <v.harishankar@gmail.com>
Sat, 1 Oct 2011 17:03:21 +0000 (22:33 +0530)
committerHarishankar <v.harishankar@gmail.com>
Sat, 1 Oct 2011 17:03:21 +0000 (22:33 +0530)
Bit the bullet (phew!) and completed the logic for scrolling
through a tileset that is larger than the 480*480 view. This
logic is quite tricky so I documented it in readable English

level.py
leveleditor.py
levels/level1.dat [new file with mode: 0644]
levels/level1e.dat [new file with mode: 0644]
levels/level1w.dat [new file with mode: 0644]
maingame.py

index 8224332..4ba77a9 100644 (file)
--- a/level.py
+++ b/level.py
@@ -14,34 +14,6 @@ import object
 KEY_CHEST1 = 1000
 KEY_ROOM1 = 1001
 
 KEY_CHEST1 = 1000
 KEY_ROOM1 = 1001
 
-# start level background data
-LEVEL_1 =  [
- [ (0, 0, 0), (1, 0, 0), (0, 5, 1), (0, 6, 1), (1, 0, 0), (0, 0, 0), (1, 0, 0), (1, 0, 0), (0, 0, 0), (1, 0, 0) ],
- [ (0, 0, 0), (0, 0, 0), (1, 5, 1), (1, 6, 1), (0, 0, 0), (3, 8, 1), (0, 7, 1), (0, 7, 1), (0, 7, 1), (0, 7, 1) ],
- [ (0, 0, 0), (0, 0, 0), (0, 0, 0), (2, 0, 1), (1, 0, 0), (0, 8, 1), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0) ],
- [ (2, 0, 1), (2, 0, 1), (2, 0, 1), (2, 0, 1), (0, 0, 0), (1, 9, 1), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0) ],
- [ (4, 5, 0), (4, 5, 0), (4, 5, 0), (4, 5, 0), (4, 5, 0), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0) ],
- [ (5, 5, 0), (5, 5, 0), (5, 5, 0), (5, 5, 0), (5, 5, 0), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0) ],
- [ (2, 0, 1), (2, 0, 1), (2, 0, 1), (2, 0, 1), (1, 0, 0), (0, 9, 1), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0) ],
- [ (0, 0, 0), (0, 0, 0), (0, 0, 0), (2, 0, 1), (1, 0, 0), (1,11, 1), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0) ],
- [ (0, 0, 0), (0, 0, 0), (0, 5, 1), (0, 6, 1), (0, 0, 0), (0,10, 1), (0, 7, 1), (0, 7, 1), (1,10, 1), (0, 7, 1) ],
- [ (1, 0, 0), (0, 0, 0), (1, 5, 1), (1, 6, 1), (1, 0, 0), (0, 0, 0), (0, 0, 0), (1, 0, 0), (0, 0, 0), (1, 0, 0) ]
-]
-
-# level to the east of start level background data
-LEVEL_1E = [
- [ (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (1, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0) ],
- [ (0, 7, 1), (0, 7, 1), (0, 7, 1), (0, 7, 1), (0, 7, 1), (0, 7, 1), (3, 9, 1), (0, 0, 0), (0, 0, 0), (2, 0, 1) ],
- [ (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (0, 8, 1), (0, 0, 0), (0, 0, 0), (0, 0, 0) ],
- [ (0, 9, 1), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (0, 8, 1), (0, 0, 0), (3, 6, 0), (3, 5, 0) ],
- [ (0, 8, 1), (3,10, 0), (6, 2, 1), (6, 3, 1), (3,10, 0), (3,10, 0), (0, 8, 1), (0, 0, 0), (3, 5, 0), (3, 6, 0) ],
- [ (0, 8, 1), (3,10, 0), (7, 2, 0), (7, 3, 0), (3,10, 0), (3,10, 0), (0, 8, 1), (0, 0, 0), (3, 6, 0), (3, 5, 0) ],
- [ (0, 8, 1), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (0, 8, 1), (0, 0, 0), (3, 5, 0), (3, 6, 0) ],
- [ (0, 8, 1), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (3,10, 0), (0, 8, 1), (0, 0, 0), (0, 0, 0), (0, 0, 0) ],
- [ (3, 7, 1), (0 ,7, 1), (0, 7, 1), (0, 7, 1), (0, 7, 1), (1,10, 1), (0,11, 1), (0, 0, 0), (0, 0, 0), (2, 0, 1) ],
- [ (0, 0, 0), (0, 0, 0), (1, 0, 0), (3, 4, 0), (0, 0, 0), (0, 0, 0), (1, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0) ]
-]
-
 # Class to represent levels
 class Level:
        def __init__ (self, bgdata, levelleft=None, levelright=None, leveltop = None, levelbottom = None, objects=[]):
 # Class to represent levels
 class Level:
        def __init__ (self, bgdata, levelleft=None, levelright=None, leveltop = None, levelbottom = None, objects=[]):
index 5b98c09..1fe96e1 100755 (executable)
@@ -25,7 +25,7 @@ def draw_level (screen, leveldata, tileset):
                                j += 1
                        i += 1
 
                                j += 1
                        i += 1
 
-def display_menu (screen):
+def display_menu (screen, tileset, tilerow, tilecol):
        utility.put_text (screen, 490, 10, 10, (255,255,0), "p to pick tile")
        utility.put_text (screen, 490, 50, 10, (255,255,0), "w to wall (solid)")
        utility.put_text (screen, 490, 90, 10, (255,255,0), "<space> to place")
        utility.put_text (screen, 490, 10, 10, (255,255,0), "p to pick tile")
        utility.put_text (screen, 490, 50, 10, (255,255,0), "w to wall (solid)")
        utility.put_text (screen, 490, 90, 10, (255,255,0), "<space> to place")
@@ -33,6 +33,10 @@ def display_menu (screen):
        utility.put_text (screen, 490, 170, 10, (255,255,0), "s to Save level")
        utility.put_text (screen, 490, 210, 10, (255,255,0), "q to Quit editor")
 
        utility.put_text (screen, 490, 170, 10, (255,255,0), "s to Save level")
        utility.put_text (screen, 490, 210, 10, (255,255,0), "q to Quit editor")
 
+       # currently selected tile
+       utility.put_text (screen, 490, 250, 10, (255,255,255), "Tile selected")
+       screen.blit (tileset, (490, 290), (tilecol*48, tilerow*48, 48, 48))
+
 # draw the tile cursor
 def draw_cursor (screen, currow, curcol):
        pygame.draw.rect (screen, (255,255,255), (curcol*48, currow*48, 48, 48), 1)
 # draw the tile cursor
 def draw_cursor (screen, currow, curcol):
        pygame.draw.rect (screen, (255,255,255), (curcol*48, currow*48, 48, 48), 1)
@@ -51,13 +55,57 @@ def put_tile (leveldata, row, col, tilerow, tilecol):
 def pick_tile (screen, tileset):
        selrow, selcol = 0, 0
 
 def pick_tile (screen, tileset):
        selrow, selcol = 0, 0
 
+       # total number of rows and columns
        totalrows = tileset.get_height () / 48
        totalcols = tileset.get_width () / 48
 
        totalrows = tileset.get_height () / 48
        totalcols = tileset.get_width () / 48
 
+       # implement scrolling by 480x480
+       # first get the number of pages to span across. If the width is
+       # exactly fitting in the page use totalwidth/480 else totalwidth/480+1
+       # (integer divison)
+       if tileset.get_width () % 480 == 0:
+               totalpages_cols = tileset.get_width () / 480
+       else:
+               totalpages_cols = tileset.get_width () / 480 + 1
+
+       if tileset.get_height () % 480 == 0:
+               totalpages_rows = tileset.get_height () / 480
+       else:
+               totalpages_rows = tileset.get_height () / 480 + 1
+
+       # set the current page
+       curpage_cols = 0
+       curpage_rows = 0
+
+       # cursor row and column
+       cursor_row = 0
+       cursor_col = 0
+
+       # the code for scrolling through the tileset is quite complicated here are the steps
+       # first we determine the total number of pages (number of row pages and col pages
+       # then when scrolling we check for two things:
+       # first horizontal scrolling:
+       # logic goes like this
+       # left arrow key movement:
+       # is the cursor col < 0 ? if so, is it the first page? if so, then set the
+       # cursor col to the last col of the last page. This unfortunately is not so easy
+       # because it need not be 10. So we determine the last col as follows:
+       # total width of the tileset image modulo 480 = this gives us a multiple of 48
+       # since we are using 48x48 tiles and the tileset file size is a multiple of 48.
+       # then we divide that value by 48 which gives us a number between 0 and 9.
+       # this is the last col. If it is not the first page, we simply set the cursor
+       # column to 9 and reduce the page by 1.
+       # right arrow movement:
+       # simply if it is the last col and last page we simply reset the
+       # page to 0 and the cursor col to 0. Otherwise page is incremented by 1
+       # and col is still set to 0. simple logic
+
+       # vertical scrolling using the same logic
+
        while 1:
                screen.fill (pygame.Color (0, 0, 0))
        while 1:
                screen.fill (pygame.Color (0, 0, 0))
-               screen.blit (tileset, (0, 0))
-               draw_cursor (screen, selrow, selcol)
+               screen.blit (tileset, (0, 0), (curpage_cols * 480, curpage_rows * 480, 480, 480))
+               draw_cursor (screen, cursor_row, cursor_col)
                pygame.display.update ()
                for event in pygame.event.get ():
                        if event.type == pygame.KEYDOWN:
                pygame.display.update ()
                for event in pygame.event.get ():
                        if event.type == pygame.KEYDOWN:
@@ -66,22 +114,83 @@ def pick_tile (screen, tileset):
                                elif event.key == pygame.K_SPACE or event.key == pygame.K_RETURN:
                                        return selrow, selcol
                                elif event.key == pygame.K_UP:
                                elif event.key == pygame.K_SPACE or event.key == pygame.K_RETURN:
                                        return selrow, selcol
                                elif event.key == pygame.K_UP:
+                                       # reduce the selected row by 1
                                        selrow -= 1
                                        if selrow < 0:
                                                selrow = totalrows - 1
                                        selrow -= 1
                                        if selrow < 0:
                                                selrow = totalrows - 1
+
+                                       # reduce the cursor row by 1
+                                       cursor_row -= 1
+                                       # if cursor row is < 0
+                                       if cursor_row < 0:
+                                               # reduce the page by 1
+                                               curpage_rows -= 1
+                                               if curpage_rows < 0:
+                                                       curpage_rows = totalpages_rows - 1
+                                                       if tileset.get_height () % 480 > 0 :
+                                                               # cursor row should be the last row - this is
+                                                               cursor_row = (tileset.get_height () % 480) / 48 - 1
+                                                       else:
+                                                               cursor_row = 9
+                                               else:
+                                                       cursor_row = 9
+
                                elif event.key == pygame.K_DOWN:
                                elif event.key == pygame.K_DOWN:
+                                       # increase the selected row by 1
                                        selrow += 1
                                        if selrow >= totalrows:
                                                selrow = 0
                                        selrow += 1
                                        if selrow >= totalrows:
                                                selrow = 0
+
+                                       # increase the cursor row by 1
+                                       cursor_row += 1
+                                       # if cursor row is > 9
+                                       if ((tileset.get_height () % 480 > 0 and curpage_rows >= totalpages_rows - 1 and cursor_row >= (tileset.get_height () % 480) / 48)
+                                                       or cursor_row >= 10):
+                                               # increase the page by 1
+                                               curpage_rows += 1
+                                               # if the pages rows is >= totalpages_rows
+                                               if curpage_rows >= totalpages_rows:
+                                                       curpage_rows = 0
+                                                       cursor_row = 0
+                                               else:
+                                                       cursor_row = 0
+
                                elif event.key == pygame.K_LEFT:
                                elif event.key == pygame.K_LEFT:
+                                       # decrease the selected col by 1
                                        selcol -= 1
                                        if selcol < 0:
                                                selcol = totalcols - 1
                                        selcol -= 1
                                        if selcol < 0:
                                                selcol = totalcols - 1
+
+                                       # decrease the cursor col by 1
+                                       cursor_col -= 1
+                                       # if cursor col < 0
+                                       if cursor_col < 0:
+                                               curpage_cols -= 1
+                                               if curpage_cols < 0:
+                                                       curpage_cols = totalpages_cols - 1
+                                                       if tileset.get_width () % 480 > 0:
+                                                               cursor_col = (tileset.get_width () % 480) / 48 - 1
+                                                       else:
+                                                               cursor_col = 9
+                                               else:
+                                                       cursor_col = 9
                                elif event.key == pygame.K_RIGHT:
                                        selcol += 1
                                        if selcol >= totalcols:
                                                selcol = 0
 
                                elif event.key == pygame.K_RIGHT:
                                        selcol += 1
                                        if selcol >= totalcols:
                                                selcol = 0
 
+                                       # increase the cursor col by 1
+                                       cursor_col += 1
+                                       # if cursor col > 9
+                                       if ((tileset.get_width () % 480 > 0 and curpage_cols >= totalpages_cols - 1 and cursor_col >= (tileset.get_width () % 480) / 48)
+                                               or cursor_col >= 10):
+                                               curpage_cols += 1
+                                               if curpage_cols >= totalpages_cols:
+                                                       curpage_cols = 0
+                                                       cursor_col = 0
+                                               else:
+                                                       cursor_col = 0
+
 
 # the actual level editor
 def level_editor (fname):
 
 # the actual level editor
 def level_editor (fname):
@@ -98,7 +207,7 @@ def level_editor (fname):
 
        while 1:
                screen.fill (pygame.Color (0, 0, 0))
 
        while 1:
                screen.fill (pygame.Color (0, 0, 0))
-               display_menu (screen)
+               display_menu (screen, tileset, tilerow, tilecol)
                draw_level (screen, leveldata, tileset)
                draw_cursor (screen, currow, curcol)
                pygame.display.update ()
                draw_level (screen, leveldata, tileset)
                draw_cursor (screen, currow, curcol)
                pygame.display.update ()
diff --git a/levels/level1.dat b/levels/level1.dat
new file mode 100644 (file)
index 0000000..a8101c8
--- /dev/null
@@ -0,0 +1,412 @@
+(lp1
+(lp2
+(lp3
+I0
+aI0
+aI0
+aa(lp4
+I0
+aI0
+aI0
+aa(lp5
+I0
+aI5
+aI01
+aa(lp6
+I0
+aI6
+aI01
+aa(lp7
+I0
+aI0
+aI0
+aa(lp8
+I0
+aI0
+aI0
+aa(lp9
+I0
+aI0
+aI0
+aa(lp10
+I1
+aI0
+aI0
+aa(lp11
+I0
+aI0
+aI0
+aa(lp12
+I0
+aI0
+aI0
+aaa(lp13
+(lp14
+I0
+aI0
+aI0
+aa(lp15
+I0
+aI0
+aI0
+aa(lp16
+I1
+aI5
+aI01
+aa(lp17
+I1
+aI6
+aI01
+aa(lp18
+I0
+aI0
+aI0
+aa(lp19
+I3
+aI8
+aI01
+aa(lp20
+I0
+aI7
+aI01
+aa(lp21
+I0
+aI7
+aI01
+aa(lp22
+I0
+aI7
+aI01
+aa(lp23
+I0
+aI7
+aI01
+aaa(lp24
+(lp25
+I1
+aI0
+aI0
+aa(lp26
+I0
+aI0
+aI0
+aa(lp27
+I0
+aI0
+aI0
+aa(lp28
+I0
+aI0
+aI0
+aa(lp29
+I0
+aI0
+aI0
+aa(lp30
+I0
+aI8
+aI01
+aa(lp31
+I3
+aI10
+aI0
+aa(lp32
+I3
+aI10
+aI0
+aa(lp33
+I3
+aI10
+aI0
+aa(lp34
+I3
+aI10
+aI0
+aaa(lp35
+(lp36
+I2
+aI0
+aI01
+aa(lp37
+I2
+aI0
+aI01
+aa(lp38
+I2
+aI0
+aI01
+aa(lp39
+I2
+aI0
+aI01
+aa(lp40
+I0
+aI0
+aI0
+aa(lp41
+I1
+aI9
+aI01
+aa(lp42
+I3
+aI10
+aI0
+aa(lp43
+I3
+aI10
+aI0
+aa(lp44
+I3
+aI10
+aI0
+aa(lp45
+I3
+aI10
+aI0
+aaa(lp46
+(lp47
+I4
+aI5
+aI0
+aa(lp48
+I4
+aI5
+aI0
+aa(lp49
+I4
+aI5
+aI0
+aa(lp50
+I4
+aI5
+aI0
+aa(lp51
+I4
+aI5
+aI0
+aa(lp52
+I3
+aI10
+aI0
+aa(lp53
+I3
+aI10
+aI0
+aa(lp54
+I3
+aI10
+aI0
+aa(lp55
+I3
+aI10
+aI0
+aa(lp56
+I3
+aI10
+aI0
+aaa(lp57
+(lp58
+I5
+aI4
+aI0
+aa(lp59
+I5
+aI5
+aI0
+aa(lp60
+I5
+aI5
+aI0
+aa(lp61
+I5
+aI5
+aI0
+aa(lp62
+I5
+aI5
+aI0
+aa(lp63
+I3
+aI10
+aI0
+aa(lp64
+I3
+aI10
+aI0
+aa(lp65
+I3
+aI10
+aI0
+aa(lp66
+I3
+aI10
+aI0
+aa(lp67
+I3
+aI10
+aI0
+aaa(lp68
+(lp69
+I2
+aI0
+aI01
+aa(lp70
+I2
+aI0
+aI01
+aa(lp71
+I2
+aI0
+aI01
+aa(lp72
+I2
+aI0
+aI01
+aa(lp73
+I0
+aI0
+aI0
+aa(lp74
+I0
+aI9
+aI01
+aa(lp75
+I3
+aI10
+aI0
+aa(lp76
+I3
+aI10
+aI0
+aa(lp77
+I3
+aI10
+aI0
+aa(lp78
+I3
+aI10
+aI0
+aaa(lp79
+(lp80
+I0
+aI0
+aI0
+aa(lp81
+I0
+aI0
+aI0
+aa(lp82
+I0
+aI0
+aI0
+aa(lp83
+I0
+aI0
+aI0
+aa(lp84
+I1
+aI0
+aI0
+aa(lp85
+I0
+aI8
+aI01
+aa(lp86
+I3
+aI10
+aI0
+aa(lp87
+I3
+aI10
+aI0
+aa(lp88
+I3
+aI10
+aI0
+aa(lp89
+I3
+aI10
+aI0
+aaa(lp90
+(lp91
+I0
+aI0
+aI0
+aa(lp92
+I0
+aI0
+aI0
+aa(lp93
+I0
+aI5
+aI01
+aa(lp94
+I0
+aI6
+aI01
+aa(lp95
+I0
+aI0
+aI0
+aa(lp96
+I0
+aI10
+aI01
+aa(lp97
+I0
+aI7
+aI01
+aa(lp98
+I0
+aI7
+aI01
+aa(lp99
+I0
+aI7
+aI01
+aa(lp100
+I0
+aI7
+aI01
+aaa(lp101
+(lp102
+I0
+aI0
+aI0
+aa(lp103
+I0
+aI0
+aI0
+aa(lp104
+I1
+aI5
+aI01
+aa(lp105
+I1
+aI6
+aI01
+aa(lp106
+I0
+aI0
+aI0
+aa(lp107
+I0
+aI0
+aI0
+aa(lp108
+I0
+aI0
+aI0
+aa(lp109
+I1
+aI0
+aI0
+aa(lp110
+I0
+aI0
+aI0
+aa(lp111
+I3
+aI4
+aI0
+aaa.
\ No newline at end of file
diff --git a/levels/level1e.dat b/levels/level1e.dat
new file mode 100644 (file)
index 0000000..022af7f
--- /dev/null
@@ -0,0 +1,412 @@
+(lp1
+(lp2
+(lp3
+I0
+aI0
+aI0
+aa(lp4
+I0
+aI0
+aI0
+aa(lp5
+I0
+aI0
+aI0
+aa(lp6
+I1
+aI0
+aI0
+aa(lp7
+I0
+aI0
+aI0
+aa(lp8
+I0
+aI0
+aI0
+aa(lp9
+I0
+aI0
+aI0
+aa(lp10
+I0
+aI0
+aI0
+aa(lp11
+I1
+aI0
+aI0
+aa(lp12
+I0
+aI0
+aI0
+aaa(lp13
+(lp14
+I0
+aI7
+aI01
+aa(lp15
+I0
+aI7
+aI01
+aa(lp16
+I1
+aI10
+aI01
+aa(lp17
+I0
+aI7
+aI01
+aa(lp18
+I0
+aI7
+aI01
+aa(lp19
+I0
+aI7
+aI01
+aa(lp20
+I0
+aI7
+aI01
+aa(lp21
+I3
+aI9
+aI01
+aa(lp22
+I0
+aI0
+aI0
+aa(lp23
+I0
+aI0
+aI0
+aaa(lp24
+(lp25
+I3
+aI10
+aI0
+aa(lp26
+I3
+aI10
+aI0
+aa(lp27
+I3
+aI10
+aI0
+aa(lp28
+I3
+aI10
+aI0
+aa(lp29
+I3
+aI10
+aI0
+aa(lp30
+I3
+aI10
+aI0
+aa(lp31
+I3
+aI10
+aI0
+aa(lp32
+I0
+aI8
+aI01
+aa(lp33
+I2
+aI0
+aI01
+aa(lp34
+I3
+aI5
+aI0
+aaa(lp35
+(lp36
+I0
+aI9
+aI01
+aa(lp37
+I3
+aI10
+aI0
+aa(lp38
+I3
+aI10
+aI0
+aa(lp39
+I3
+aI10
+aI0
+aa(lp40
+I3
+aI10
+aI0
+aa(lp41
+I3
+aI10
+aI0
+aa(lp42
+I3
+aI10
+aI0
+aa(lp43
+I0
+aI8
+aI01
+aa(lp44
+I2
+aI0
+aI01
+aa(lp45
+I3
+aI6
+aI0
+aaa(lp46
+(lp47
+I0
+aI8
+aI01
+aa(lp48
+I3
+aI10
+aI0
+aa(lp49
+I3
+aI10
+aI0
+aa(lp50
+I3
+aI10
+aI0
+aa(lp51
+I3
+aI10
+aI0
+aa(lp52
+I3
+aI10
+aI0
+aa(lp53
+I3
+aI10
+aI0
+aa(lp54
+I0
+aI8
+aI01
+aa(lp55
+I1
+aI0
+aI0
+aa(lp56
+I3
+aI6
+aI0
+aaa(lp57
+(lp58
+I0
+aI8
+aI01
+aa(lp59
+I3
+aI10
+aI0
+aa(lp60
+I6
+aI2
+aI01
+aa(lp61
+I6
+aI3
+aI01
+aa(lp62
+I3
+aI10
+aI0
+aa(lp63
+I3
+aI10
+aI0
+aa(lp64
+I3
+aI10
+aI0
+aa(lp65
+I1
+aI11
+aI01
+aa(lp66
+I0
+aI0
+aI0
+aa(lp67
+I3
+aI5
+aI0
+aaa(lp68
+(lp69
+I0
+aI8
+aI01
+aa(lp70
+I3
+aI10
+aI0
+aa(lp71
+I7
+aI2
+aI0
+aa(lp72
+I7
+aI3
+aI0
+aa(lp73
+I3
+aI10
+aI0
+aa(lp74
+I3
+aI10
+aI0
+aa(lp75
+I3
+aI10
+aI0
+aa(lp76
+I0
+aI8
+aI01
+aa(lp77
+I2
+aI0
+aI01
+aa(lp78
+I3
+aI6
+aI0
+aaa(lp79
+(lp80
+I0
+aI8
+aI01
+aa(lp81
+I3
+aI10
+aI0
+aa(lp82
+I3
+aI10
+aI0
+aa(lp83
+I3
+aI10
+aI0
+aa(lp84
+I3
+aI10
+aI0
+aa(lp85
+I3
+aI10
+aI0
+aa(lp86
+I3
+aI10
+aI0
+aa(lp87
+I0
+aI8
+aI01
+aa(lp88
+I2
+aI0
+aI01
+aa(lp89
+I3
+aI5
+aI0
+aaa(lp90
+(lp91
+I3
+aI7
+aI01
+aa(lp92
+I0
+aI7
+aI01
+aa(lp93
+I0
+aI7
+aI01
+aa(lp94
+I0
+aI7
+aI01
+aa(lp95
+I0
+aI7
+aI01
+aa(lp96
+I0
+aI7
+aI01
+aa(lp97
+I0
+aI7
+aI01
+aa(lp98
+I0
+aI11
+aI01
+aa(lp99
+I0
+aI0
+aI0
+aa(lp100
+I0
+aI0
+aI0
+aaa(lp101
+(lp102
+I0
+aI0
+aI0
+aa(lp103
+I0
+aI0
+aI0
+aa(lp104
+I0
+aI0
+aI0
+aa(lp105
+I3
+aI4
+aI0
+aa(lp106
+I0
+aI0
+aI0
+aa(lp107
+I0
+aI0
+aI0
+aa(lp108
+I0
+aI0
+aI0
+aa(lp109
+I0
+aI0
+aI0
+aa(lp110
+I0
+aI0
+aI0
+aa(lp111
+I0
+aI0
+aI0
+aaa.
\ No newline at end of file
diff --git a/levels/level1w.dat b/levels/level1w.dat
new file mode 100644 (file)
index 0000000..38187ec
--- /dev/null
@@ -0,0 +1,412 @@
+(lp1
+(lp2
+(lp3
+I2
+aI0
+aI01
+aa(lp4
+I4
+aI6
+aI0
+aa(lp5
+I5
+aI7
+aI0
+aa(lp6
+I1
+aI1
+aI0
+aa(lp7
+I1
+aI2
+aI0
+aa(lp8
+I1
+aI3
+aI0
+aa(lp9
+I1
+aI3
+aI0
+aa(lp10
+I1
+aI4
+aI0
+aa(lp11
+I2
+aI10
+aI01
+aa(lp12
+I0
+aI0
+aI0
+aaa(lp13
+(lp14
+I2
+aI0
+aI01
+aa(lp15
+I5
+aI6
+aI0
+aa(lp16
+I5
+aI7
+aI0
+aa(lp17
+I1
+aI1
+aI0
+aa(lp18
+I1
+aI3
+aI0
+aa(lp19
+I1
+aI3
+aI0
+aa(lp20
+I1
+aI3
+aI0
+aa(lp21
+I1
+aI4
+aI0
+aa(lp22
+I2
+aI10
+aI01
+aa(lp23
+I0
+aI0
+aI0
+aaa(lp24
+(lp25
+I2
+aI0
+aI01
+aa(lp26
+I5
+aI6
+aI0
+aa(lp27
+I5
+aI7
+aI0
+aa(lp28
+I1
+aI1
+aI0
+aa(lp29
+I1
+aI3
+aI0
+aa(lp30
+I1
+aI3
+aI0
+aa(lp31
+I1
+aI2
+aI0
+aa(lp32
+I1
+aI4
+aI0
+aa(lp33
+I2
+aI10
+aI01
+aa(lp34
+I0
+aI0
+aI0
+aaa(lp35
+(lp36
+I2
+aI0
+aI01
+aa(lp37
+I5
+aI6
+aI0
+aa(lp38
+I5
+aI7
+aI0
+aa(lp39
+I2
+aI1
+aI0
+aa(lp40
+I2
+aI2
+aI0
+aa(lp41
+I2
+aI3
+aI0
+aa(lp42
+I2
+aI2
+aI0
+aa(lp43
+I2
+aI4
+aI0
+aa(lp44
+I2
+aI10
+aI01
+aa(lp45
+I2
+aI0
+aI01
+aaa(lp46
+(lp47
+I2
+aI0
+aI01
+aa(lp48
+I4
+aI6
+aI0
+aa(lp49
+I4
+aI8
+aI0
+aa(lp50
+I4
+aI5
+aI0
+aa(lp51
+I4
+aI5
+aI0
+aa(lp52
+I4
+aI5
+aI0
+aa(lp53
+I4
+aI5
+aI0
+aa(lp54
+I4
+aI5
+aI0
+aa(lp55
+I4
+aI5
+aI0
+aa(lp56
+I4
+aI4
+aI0
+aaa(lp57
+(lp58
+I2
+aI0
+aI01
+aa(lp59
+I5
+aI6
+aI0
+aa(lp60
+I4
+aI8
+aI0
+aa(lp61
+I5
+aI5
+aI0
+aa(lp62
+I5
+aI5
+aI0
+aa(lp63
+I5
+aI5
+aI0
+aa(lp64
+I5
+aI5
+aI0
+aa(lp65
+I5
+aI5
+aI0
+aa(lp66
+I5
+aI5
+aI0
+aa(lp67
+I5
+aI5
+aI0
+aaa(lp68
+(lp69
+I2
+aI0
+aI01
+aa(lp70
+I5
+aI6
+aI0
+aa(lp71
+I4
+aI7
+aI0
+aa(lp72
+I0
+aI0
+aI0
+aa(lp73
+I3
+aI4
+aI0
+aa(lp74
+I0
+aI0
+aI0
+aa(lp75
+I0
+aI0
+aI0
+aa(lp76
+I2
+aI0
+aI01
+aa(lp77
+I2
+aI10
+aI01
+aa(lp78
+I2
+aI0
+aI01
+aaa(lp79
+(lp80
+I2
+aI0
+aI01
+aa(lp81
+I5
+aI6
+aI0
+aa(lp82
+I5
+aI7
+aI0
+aa(lp83
+I2
+aI0
+aI01
+aa(lp84
+I0
+aI0
+aI0
+aa(lp85
+I2
+aI0
+aI01
+aa(lp86
+I0
+aI0
+aI0
+aa(lp87
+I0
+aI0
+aI0
+aa(lp88
+I2
+aI10
+aI01
+aa(lp89
+I0
+aI0
+aI0
+aaa(lp90
+(lp91
+I2
+aI0
+aI01
+aa(lp92
+I5
+aI6
+aI0
+aa(lp93
+I5
+aI7
+aI0
+aa(lp94
+I0
+aI0
+aI0
+aa(lp95
+I3
+aI4
+aI0
+aa(lp96
+I0
+aI0
+aI0
+aa(lp97
+I0
+aI0
+aI0
+aa(lp98
+I2
+aI0
+aI01
+aa(lp99
+I2
+aI10
+aI01
+aa(lp100
+I0
+aI0
+aI0
+aaa(lp101
+(lp102
+I2
+aI0
+aI01
+aa(lp103
+I4
+aI6
+aI0
+aa(lp104
+I5
+aI7
+aI0
+aa(lp105
+I0
+aI0
+aI0
+aa(lp106
+I2
+aI0
+aI01
+aa(lp107
+I0
+aI0
+aI0
+aa(lp108
+I0
+aI0
+aI0
+aa(lp109
+I0
+aI0
+aI0
+aa(lp110
+I2
+aI10
+aI01
+aa(lp111
+I0
+aI0
+aI0
+aaa.
\ No newline at end of file
index bde655d..75702b8 100644 (file)
@@ -2,6 +2,7 @@ import pygame
 import sys
 import random
 import os.path
 import sys
 import random
 import os.path
+import cPickle
 
 import level
 import butaba
 
 import level
 import butaba
@@ -65,18 +66,23 @@ class MainGame:
        # set up the levels and their interactions
        def setup_levels (self):
 
        # set up the levels and their interactions
        def setup_levels (self):
 
-               self.level1 = level.Level (level.LEVEL_1)
-               self.level1e = level.Level (level.LEVEL_1E,
-                                                                       objects = [ gameobjects.Key (4, 3, "a chest key", self.img_key2, level.KEY_CHEST1),
-                                                                                               gameobjects.Key (4, 3, "a room key", self.img_key, level.KEY_ROOM1),
-                                                                                               gameobjects.HealthPotion (4, 2, self.img_redpotion),
+               self.level1 = level.Level (cPickle.load (file ("levels/level1.dat")))
+               self.level1w = level.Level (cPickle.load (file ("levels/level1w.dat")))
+               self.level1e = level.Level (cPickle.load (file ("levels/level1e.dat")),
+                                                                       objects = [ gameobjects.Key (5, 3, "a chest key", self.img_key2, level.KEY_CHEST1),
+                                                                                               gameobjects.Key (5, 3, "a room key", self.img_key, level.KEY_ROOM1),
+                                                                                               gameobjects.HealthPotion (5, 2, self.img_redpotion),
                                                                                                gameobjects.Chest (2, 5, "chest", self.img_chest, level.KEY_CHEST1, True),
                                                                                                gameobjects.Chest (2, 5, "chest", self.img_chest, level.KEY_CHEST1, True),
-                                                                                               gameobjects.GoldCoins (5, 2, self.img_goldcoins, 50)
+                                                                                               gameobjects.GoldCoins (6, 2, self.img_goldcoins, 50)
                                                                                        ]
                                                                                        )
                self.level1.levelright = self.level1e
                                                                                        ]
                                                                                        )
                self.level1.levelright = self.level1e
+               self.level1.levelleft = self.level1w
+
                self.level1e.levelleft = self.level1
 
                self.level1e.levelleft = self.level1
 
+               self.level1w.levelright = self.level1
+
        def main_loop (self):
                # main game loop
                while 1:
        def main_loop (self):
                # main game loop
                while 1: