Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriel Eirea <geirea@gmail.com>2011-01-14 20:02:55 (GMT)
committer Gabriel Eirea <geirea@gmail.com>2011-01-14 20:02:55 (GMT)
commit3ad671eeaa1633499d09cb456c1a08b7c794f43e (patch)
tree6ed6fc5c44beb4b3a04199bf9241501fbdd0481c
parent1ce5e7e399e576b66b76cf0761f4aa35e0b2eb0b (diff)
Added initial MapEditorHEADmaster
-rw-r--r--DerechosSprites.py6
-rw-r--r--MapEditor.py139
2 files changed, 142 insertions, 3 deletions
diff --git a/DerechosSprites.py b/DerechosSprites.py
index 4c3e877..58ff133 100644
--- a/DerechosSprites.py
+++ b/DerechosSprites.py
@@ -180,7 +180,7 @@ class BoySprite(AnimatedSprite):
def draw_grid(grid,screen):
for yi in range(18):
for xi in range(24):
- if grid[yi][xi] == 1:
+ if grid[yi+1][xi+1] == 1:
pygame.draw.rect(screen,(100,100,100),(xi*50,yi*50,50,50),2)
@@ -269,8 +269,8 @@ if __name__ == "__main__":
[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
- #font24 = pygame.font.Font(None, 24)
- font24 = pygame.font.Font("/home/gabriel/PC Senior Regular.ttf", 12)
+ font24 = pygame.font.Font(None, 24)
+# font24 = pygame.font.Font("/home/gabriel/PC Senior Regular.ttf", 12)
txts = ["Hola, yo soy Pancho",
"No creo que consigas\nnada siguiendome",
diff --git a/MapEditor.py b/MapEditor.py
new file mode 100644
index 0000000..27570fb
--- /dev/null
+++ b/MapEditor.py
@@ -0,0 +1,139 @@
+import pygame
+import os
+import sys
+import random
+import math
+
+
+def draw_grid(grid,screen):
+ for yi in range(18):
+ for xi in range(24):
+ if grid[yi+1][xi+1] == 1:
+ pygame.draw.rect(screen,(100,100,100),(xi*50,yi*50,50,50),2)
+
+def render_tiles(tiles, tile_size, screen, scale):
+ i = 0
+ for tile in tiles:
+ screen.blit(pygame.transform.scale(tile,
+ (int(tile_size[0]*scale),
+ int(tile_size[1]*scale))),
+ (i*int(tile_size[0]*scale), 0))
+ i += 1
+
+def render_map(grid, tiles, tile_size, screen, scale):
+ for i in range(len(grid)):
+ for j in range(len(grid[i])):
+ screen.blit(pygame.transform.scale(tiles[grid[i][j]],
+ (int(tile_size[0]*scale),
+ int(tile_size[1]*scale))),
+ (j*int(tile_size[0]*scale),
+ (i+2)*int(tile_size[1]*scale)))
+
+def render_selected_tile(sel_tile, tile_size, screen, scale):
+ pygame.draw.rect(screen,(200,0,0),
+ (sel_tile*int(tile_size[0]*scale),0,
+ int(tile_size[0]*scale),int(tile_size[0]*scale)),1)
+
+def render_click(coord, sel_tile, grid, tile_size, screen, scale):
+
+ screen.blit(pygame.transform.scale(tiles[grid[i][j]],
+ (int(tile_size[0]*scale),
+ int(tile_size[1]*scale))),
+ (j*int(tile_size[0]*scale),
+ (i+2)*int(tile_size[1]*scale)))
+
+def save_grid(grid):
+ print(grid)
+
+if __name__ == "__main__":
+
+ # initializations
+ pygame.init()
+ screen = pygame.display.set_mode((1024,768))
+ clock = pygame.time.Clock()
+ # tile parameters
+ tileset_file = os.path.join('images', 'derechos-tileset-fondos.png')
+ tile_default = 0 # tile # that will be used as default
+ tile_border = 30 # tile # for the border (outside the screen)
+ tile_size = (50, 50) # (x, y) in pixels
+ tileset_size = (8, 4) # (x, y) in tiles
+ screen_size = (1200, 900) # (x, y) in pixels
+ # scale
+ scale = 0.5
+ # selected tile
+ sel_tile = 0
+ # check for consistency
+ if screen_size[0] % tile_size[0] != 0 \
+ or screen_size[0] % tile_size[0] != 0:
+ print("Dimensions of the screen are not multiples of the tile size.")
+ sys.exit()
+ map_size = (screen_size[0]/tile_size[0], screen_size[1]/tile_size[1])
+ # load tileset
+ tiles = []
+ tileset_image = pygame.image.load(tileset_file).convert_alpha()
+ w, h = tileset_image.get_size()
+ if tile_size[0]*tileset_size[0] != w \
+ or tile_size[1]*tileset_size[1] != h:
+ print("Dimensions of the tileset_file don't agree with size.")
+ sys.exit()
+ for i in xrange(tileset_size[1]):
+ for j in xrange(tileset_size[0]):
+ tiles.append(tileset_image.subsurface((j*tile_size[0],
+ i*tile_size[1],
+ tile_size[0],
+ tile_size[1])))
+ # create initial grid
+ grid = [ [tile_default]*(map_size[0]+2) for i in xrange(map_size[1]+2)]
+ grid[0] = [tile_border]*(map_size[0]+2)
+ grid[map_size[1]+1] = [tile_border]*(map_size[0]+2)
+ for i in xrange(map_size[1]):
+ grid[i+1][0] = tile_border
+ grid[i+1][map_size[0]+1] = tile_border
+ # render initial screen
+ render_tiles(tiles, tile_size, screen, scale)
+ render_map(grid, tiles, tile_size, screen, scale)
+ render_selected_tile(sel_tile, tile_size, screen, scale)
+ pygame.display.flip()
+
+ font24 = pygame.font.Font(None, 24)
+
+ playing = True
+
+ while playing:
+ for event in pygame.event.get():
+ if event.type == pygame.QUIT:
+ playing = False
+ elif event.type == pygame.MOUSEBUTTONDOWN:
+ coord = pygame.mouse.get_pos()
+ if coord[1] < tile_size[1]*scale \
+ and coord[0] < len(tiles)*tile_size[0]*scale:
+ sel_tile = int(coord[0]/(tile_size[0]*scale))
+ elif coord[0] < (map_size[0]+2)*tile_size[0]*scale \
+ and coord[1] < ((map_size[1]+4)*tile_size[1])*scale \
+ and coord[1] > 2*tile_size[1]*scale:
+ grid[int(coord[1]-2*tile_size[1]*scale)/int(tile_size[1]*scale)]\
+ [coord[0]/int(tile_size[0]*scale)] = sel_tile
+ elif event.type == pygame.KEYDOWN:
+ if event.key == pygame.K_UP:
+ pass
+ elif event.key == pygame.K_DOWN:
+ pass
+ elif event.key == pygame.K_LEFT:
+ if sel_tile > 0:
+ sel_tile -= 1
+ elif event.key == pygame.K_RIGHT:
+ if sel_tile < len(tiles)-1:
+ sel_tile += 1
+ elif event.key == pygame.K_s:
+ save_grid(grid)
+ elif event.key == pygame.K_ESCAPE \
+ or event.key == pygame.K_q:
+ playing = False
+
+ time_passed = clock.tick(20)
+
+ render_tiles(tiles, tile_size, screen, scale)
+ render_map(grid, tiles, tile_size, screen, scale)
+ render_selected_tile(sel_tile, tile_size, screen, scale)
+ pygame.display.flip()
+