From 9457edf26f8499b7fbeb9921fdd91a762bdfb8c4 Mon Sep 17 00:00:00 2001 From: Harishankar Date: Sat, 1 Oct 2011 15:22:59 +0530 Subject: [PATCH] Level editor completed somewhat Level editor is finished, but lacking the ability to scroll in the tileset. So if the tileset is greater than the screen size, the code does not work. --- leveleditor.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) mode change 100644 => 100755 leveleditor.py diff --git a/leveleditor.py b/leveleditor.py old mode 100644 new mode 100755 index 784199b..5b98c09 --- a/leveleditor.py +++ b/leveleditor.py @@ -1,8 +1,8 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python # level designer gui - this is used to design level graphics # very rough and ready - main purpose is to allow quick game -# design. inputting levels by hand array is very tough +# design. inputting levels by hand array is very tedious import pygame import os.path @@ -42,6 +42,47 @@ def make_wall (leveldata, row, col): # get the actual data in that place leveldata[row][col][2] = not leveldata[row][col][2] +# place a tile at current spot +def put_tile (leveldata, row, col, tilerow, tilecol): + leveldata[row][col][0] = tilerow + leveldata[row][col][1] = tilecol + +# picking a tile from the tileset +def pick_tile (screen, tileset): + selrow, selcol = 0, 0 + + totalrows = tileset.get_height () / 48 + totalcols = tileset.get_width () / 48 + + while 1: + screen.fill (pygame.Color (0, 0, 0)) + screen.blit (tileset, (0, 0)) + draw_cursor (screen, selrow, selcol) + pygame.display.update () + for event in pygame.event.get (): + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + return None + elif event.key == pygame.K_SPACE or event.key == pygame.K_RETURN: + return selrow, selcol + elif event.key == pygame.K_UP: + selrow -= 1 + if selrow < 0: + selrow = totalrows - 1 + elif event.key == pygame.K_DOWN: + selrow += 1 + if selrow >= totalrows: + selrow = 0 + elif event.key == pygame.K_LEFT: + selcol -= 1 + if selcol < 0: + selcol = totalcols - 1 + elif event.key == pygame.K_RIGHT: + selcol += 1 + if selcol >= totalcols: + selcol = 0 + + # the actual level editor def level_editor (fname): # load level data @@ -53,6 +94,7 @@ def level_editor (fname): screen = pygame.display.set_mode ((720, 512)) pygame.display.set_caption ("Level editor") currow, curcol = 0, 0 + tilerow, tilecol = 0, 0 while 1: screen.fill (pygame.Color (0, 0, 0)) @@ -65,6 +107,9 @@ def level_editor (fname): if event.key == ord ("q"): pygame.quit () return + elif event.key == ord ("s"): + cPickle.dump (leveldata, file (fname, "w")) + print ("Level saved") elif event.key == pygame.K_DOWN: currow += 1 if currow > 9: @@ -81,6 +126,13 @@ def level_editor (fname): curcol += 1 if curcol > 9: curcol = 0 + elif event.key == pygame.K_SPACE or event.key == pygame.K_RETURN: + put_tile (leveldata, currow, curcol, tilerow, tilecol) + elif event.key == ord ("p"): + tile = pick_tile (screen, tileset) + if tile is not None: + tilerow = tile[0] + tilecol = tile[1] elif event.key == ord ("w"): make_wall (leveldata, currow, curcol) @@ -107,7 +159,8 @@ def new_level (): level_editor (fname) def load_level (): - pass + fname = raw_input ("Level file to load: ") + level_editor (fname) def main (): while 1: @@ -130,4 +183,4 @@ def main (): if __name__=="__main__": - main () \ No newline at end of file + main () -- 2.20.1