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 01:02:51 (GMT)
committer Gabriel Eirea <geirea@gmail.com>2011-01-14 01:02:51 (GMT)
commit1ce5e7e399e576b66b76cf0761f4aa35e0b2eb0b (patch)
tree432ffcc7cf1bf9a3f113dd7738acec2ca33a873a
parent14e3c6da673467618060b8813bad7b97e492f978 (diff)
Added border to grid and simplified code
-rw-r--r--DerechosSprites.py163
-rw-r--r--DialogSprite.py10
-rw-r--r--images/spacebar.svg5
3 files changed, 82 insertions, 96 deletions
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">
<defs
id="defs4">
<inkscape:perspective