From 1ce5e7e399e576b66b76cf0761f4aa35e0b2eb0b Mon Sep 17 00:00:00 2001 From: Gabriel Eirea Date: Fri, 14 Jan 2011 01:02:51 +0000 Subject: Added border to grid and simplified code --- diff --git a/DerechosSprites.py b/DerechosSprites.py index 4cbbf9b..4c3e877 100644 --- a/DerechosSprites.py +++ b/DerechosSprites.py @@ -38,48 +38,36 @@ class MainSprite(AnimatedSprite): (xcoll, ycoll, wcoll, hcoll) = self.collision_rect() if self.move == RIGHT: xright = xcoll + wcoll + self._dxs[self._frame] - if xright < 1200: - if grid[(ycoll+hcoll)/50][xright/50] == 0 \ - and grid[ycoll/50][xright/50] == 0: - self.x += self._dxs[self._frame] - self._frame = self._next_frames[self._frame] - else: - self.x += self._dxs[self._frame] - xright%50 - 1 + if grid[(ycoll+hcoll)/50+1][xright/50+1] == 0 \ + and grid[ycoll/50+1][xright/50+1] == 0: + self.x += self._dxs[self._frame] + self._frame = self._next_frames[self._frame] else: - self.x = 1200 - self.width + (xcoll-self.x) + self.x += self._dxs[self._frame] - xright%50 - 1 elif self.move == LEFT: xleft = xcoll + self._dxs[self._frame] - if xleft > 0: - if grid[(ycoll+hcoll)/50][xleft/50] == 0 and \ - grid[ycoll/50][xleft/50] == 0: - self.x += self._dxs[self._frame] - self._frame = self._next_frames[self._frame] - else: - self.x += self._dxs[self._frame] + 50 - xleft%50 + 1 + if grid[(ycoll+hcoll)/50+1][xleft/50+1] == 0 and \ + grid[ycoll/50+1][xleft/50+1] == 0: + self.x += self._dxs[self._frame] + self._frame = self._next_frames[self._frame] else: - self.x = -(xcoll-self.x) + self.x += self._dxs[self._frame] + 50 - xleft%50 + 1 elif self.move == UP: ytop = ycoll + self._dys[self._frame] - if ytop > 0: - if grid[ytop/50][(xcoll+wcoll)/50] == 0 and \ - grid[ytop/50][xcoll/50] == 0: - self.y += self._dys[self._frame] - self._frame = self._next_frames[self._frame] - else: - self.y += self._dys[self._frame] + 50 - ytop%50 + 1 + if grid[ytop/50+1][(xcoll+wcoll)/50+1] == 0 and \ + grid[ytop/50+1][xcoll/50+1] == 0: + self.y += self._dys[self._frame] + self._frame = self._next_frames[self._frame] else: - self.y = -(ycoll-self.y) + self.y += self._dys[self._frame] + 50 - ytop%50 + 1 elif self.move == DOWN: ybot = ycoll + hcoll + self._dys[self._frame] - if ybot < 900: - if grid[ybot/50][xcoll/50] == 0 and \ - grid[ybot/50][(xcoll+wcoll)/50] == 0: - self.y += self._dys[self._frame] - self._frame = self._next_frames[self._frame] - else: - self.y += self._dys[self._frame] - ybot%50 - 1 + if grid[ybot/50+1][xcoll/50+1] == 0 and \ + grid[ybot/50+1][(xcoll+wcoll)/50+1] == 0: + self.y += self._dys[self._frame] + self._frame = self._next_frames[self._frame] else: - self.y = 900 - (ycoll-self.y) + self.y += self._dys[self._frame] - ybot%50 - 1 elif self.move == TALKING: pass @@ -106,7 +94,7 @@ class BoySprite(AnimatedSprite): AnimatedSprite.__init__(self, images, frames, next_frames, dxs, dys, xini, yini, fps) - self.move = random.randint(0,4) + self.move = STOP def do_move(self,grid): @@ -117,17 +105,12 @@ class BoySprite(AnimatedSprite): if rn > 97: self.startup_frame() self.move = STOP - elif xright < 1200: - if grid[(ycoll+hcoll)/50][xright/50] == 0 \ - and grid[ycoll/50][xright/50] == 0: - self.x += self._dxs[self._frame] - self._frame = self._next_frames[self._frame] - else: - self.x += self._dxs[self._frame] - xright%50 - 1 - self.move = random.randint(1,4) - self.startup_frame() + elif grid[(ycoll+hcoll)/50+1][xright/50+1] == 0 \ + and grid[ycoll/50+1][xright/50+1] == 0: + self.x += self._dxs[self._frame] + self._frame = self._next_frames[self._frame] else: - self.x = 1200 - self.width + (xcoll-self.x) + self.x += self._dxs[self._frame] - xright%50 - 1 self.move = random.randint(1,4) self.startup_frame() elif self.move == LEFT: @@ -136,17 +119,12 @@ class BoySprite(AnimatedSprite): if rn > 97: self.startup_frame() self.move = STOP - elif xleft > 0: - if grid[(ycoll+hcoll)/50][xleft/50] == 0 and \ - grid[ycoll/50][xleft/50] == 0: - self.x += self._dxs[self._frame] - self._frame = self._next_frames[self._frame] - else: - self.x += self._dxs[self._frame] + 50 - xleft%50 + 1 - self.move = random.randint(1,4) - self.startup_frame() + elif grid[(ycoll+hcoll)/50+1][xleft/50+1] == 0 and \ + grid[ycoll/50+1][xleft/50+1] == 0: + self.x += self._dxs[self._frame] + self._frame = self._next_frames[self._frame] else: - self.x = -(xcoll-self.x) + self.x += self._dxs[self._frame] + 50 - xleft%50 + 1 self.move = random.randint(1,4) self.startup_frame() elif self.move == UP: @@ -155,17 +133,12 @@ class BoySprite(AnimatedSprite): if rn > 97: self.startup_frame() self.move = STOP - elif ytop > 0: - if grid[ytop/50][(xcoll+wcoll)/50] == 0 and \ - grid[ytop/50][xcoll/50] == 0: - self.y += self._dys[self._frame] - self._frame = self._next_frames[self._frame] - else: - self.y += self._dys[self._frame] + 50 - ytop%50 + 1 - self.move = random.randint(1,4) - self.startup_frame() + elif grid[ytop/50+1][(xcoll+wcoll)/50+1] == 0 and \ + grid[ytop/50+1][xcoll/50+1] == 0: + self.y += self._dys[self._frame] + self._frame = self._next_frames[self._frame] else: - self.y = -(ycoll-self.y) + self.y += self._dys[self._frame] + 50 - ytop%50 + 1 self.move = random.randint(1,4) self.startup_frame() elif self.move == DOWN: @@ -174,17 +147,12 @@ class BoySprite(AnimatedSprite): if rn > 97: self.startup_frame() self.move = STOP - elif ybot < 900: - if grid[ybot/50][xcoll/50] == 0 and \ - grid[ybot/50][(xcoll+wcoll)/50] == 0: - self.y += self._dys[self._frame] - self._frame = self._next_frames[self._frame] - else: - self.y += self._dys[self._frame] - ybot%50 - 1 - self.move = random.randint(1,4) - self.startup_frame() + elif grid[ybot/50+1][xcoll/50+1] == 0 and \ + grid[ybot/50+1][(xcoll+wcoll)/50+1] == 0: + self.y += self._dys[self._frame] + self._frame = self._next_frames[self._frame] else: - self.y = 900 - (ycoll-self.y) + self.y += self._dys[self._frame] - ybot%50 - 1 self.move = random.randint(1,4) self.startup_frame() elif self.move == STOP: @@ -278,29 +246,35 @@ if __name__ == "__main__": bg_image = pygame.image.load(os.path.join('images', 'derechos-plaza-fondo.jpg')).convert_alpha() - grid = [[0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1], - [0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0], - [0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0], - [0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1], - [0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1], - [0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,0,0,1,1], - [1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1], - [0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1], - [0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0], - [0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0], - [0,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0], - [0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0], - [0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0], - [0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1], - [1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1], - [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], - [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,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]] - - font24 = pygame.font.Font(None, 24) + # grid must have extra border for detecting moving out of screen + # in this case 1200/50=24, 900/50=18 then size is 26 by 20 + grid = [[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,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1], + [1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1], + [1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1], + [1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1], + [1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1], + [1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1], + [1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1], + [1,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1], + [1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1], + [1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1], + [1,0,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,1], + [1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1], + [1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1], + [1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1], + [1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1], + [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1], + [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1], + [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) txts = ["Hola, yo soy Pancho", - "No creo que consigas\nnada siguiendome"] + "No creo que consigas\nnada siguiendome", + "Pero si te sirve de consuelo,\nsomos apenas unos sprites\natrapados en una grilla"] dia = DialogSprite(txts, font24, 100, 100) playing = True @@ -428,7 +402,6 @@ if __name__ == "__main__": sb.update(time_passed,grid) sb.render(screen) - # sp.draw_rect(screen) pygame.display.flip() diff --git a/DialogSprite.py b/DialogSprite.py index fc19f95..e74b3fa 100644 --- a/DialogSprite.py +++ b/DialogSprite.py @@ -57,11 +57,21 @@ class DialogSprite(pygame.sprite.Sprite): screen.blit(self.image, (self.x, self.y)) def rect(self): + return (self.x, self.y, self.width, self.height) def restart(self, rect): + self.x = rect[0] + int(rect[2]/2) - int(self.width/2) + if self.x < 0: + self.x = 0 + elif self.x + self.width > 1200: + self.x = 1200 - self.width self.y = rect[1] - self.height - 10 + if self.y < 0: + self.y = 0 + elif self.y + self.height > 900: + self.y = 900 - self.height self.current_text = 0 self.update() diff --git a/images/spacebar.svg b/images/spacebar.svg index e8c9e8c..a62b84e 100644 --- a/images/spacebar.svg +++ b/images/spacebar.svg @@ -14,7 +14,10 @@ id="svg2" version="1.1" inkscape:version="0.47 r22583" - sodipodi:docname="Nuevo documento 1"> + sodipodi:docname="spacebar.svg" + inkscape:export-filename="/home/gabriel/ceibaljam/derechos/images/spacebar.png" + inkscape:export-xdpi="8.852459" + inkscape:export-ydpi="8.852459">