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-13 14:50:47 (GMT)
committer Gabriel Eirea <geirea@gmail.com>2011-01-13 14:50:47 (GMT)
commit59fdf0ab04401e43090b64a4086544a5d5ffce17 (patch)
treed62386bf50cc37e081cd6b839bc58cf5330f6bf2
parent39a83c2b1510ba18dcc5cab96a31fe62c7e72d85 (diff)
Added talking logic
-rw-r--r--AnimatedSprite.py8
-rw-r--r--AnimatedSprite.pycbin2519 -> 3013 bytes
-rw-r--r--DerechosSprites.py140
3 files changed, 120 insertions, 28 deletions
diff --git a/AnimatedSprite.py b/AnimatedSprite.py
index 0eaab83..48a5236 100644
--- a/AnimatedSprite.py
+++ b/AnimatedSprite.py
@@ -49,7 +49,6 @@ class AnimatedSprite(pygame.sprite.Sprite):
def render(self, screen):
screen.blit(self.image, (self.x, self.y))
-# pygame.draw.rect(screen,(0,0,0),(self.x+15, self.y+38, 38, 38),1)
def do_move(self, grid):
pass
@@ -60,6 +59,13 @@ class AnimatedSprite(pygame.sprite.Sprite):
def update_move(self,move):
self.move = move
+ def upper_left_tile(self):
+ return ( (self.x+34)/50, (self.y+16)/50 )
+
+ def draw_rect(self, screen):
+ pygame.draw.rect(screen,(0,0,0),(self.x+15, self.y+38, 38, 38),1)
+
+
if __name__ == "__main__":
diff --git a/AnimatedSprite.pyc b/AnimatedSprite.pyc
index 75fc1cf..df3ae63 100644
--- a/AnimatedSprite.pyc
+++ b/AnimatedSprite.pyc
Binary files differ
diff --git a/DerechosSprites.py b/DerechosSprites.py
index 48f26f8..92e0341 100644
--- a/DerechosSprites.py
+++ b/DerechosSprites.py
@@ -1,13 +1,15 @@
import pygame
import os
import random
+import math
from AnimatedSprite import AnimatedSprite
STOP = 0
LEFT = 1
RIGHT = 2
UP = 3
-DOWN =4
+DOWN = 4
+TALKING = 5
class MainSprite(AnimatedSprite):
"""
@@ -73,6 +75,8 @@ class MainSprite(AnimatedSprite):
self.y += 6 - (self.y+84)%50 -1
else:
self.y = 900-78
+ elif self.move == TALKING:
+ pass
class BoySprite(AnimatedSprite):
@@ -175,6 +179,8 @@ class BoySprite(AnimatedSprite):
if rn > 98:
self.move = random.randint(1,4)
self.startup_frame()
+ elif self.move == TALKING:
+ pass
def startup_frame(self):
if self.move == UP:
@@ -186,6 +192,19 @@ class BoySprite(AnimatedSprite):
elif self.move == RIGHT:
self._frame = 24
+ def draw_talking_range(self, screen):
+ pygame.draw.arc(screen, (200, 0, 0), (self.x+9, self.y, 48, 48),
+ -math.pi/4, math.pi/4, 2)
+ pygame.draw.arc(screen, (200, 0, 0), (self.x+9, self.y, 48, 48),
+ math.pi/4*3, math.pi/4*5, 2)
+
+ def draw_talking(self, screen):
+ pygame.draw.arc(screen, (0, 0, 200), (self.x+9, self.y, 48, 48),
+ -math.pi/4, math.pi/4, 2)
+ pygame.draw.arc(screen, (0, 0, 200), (self.x+9, self.y, 48, 48),
+ math.pi/4*3, math.pi/4*5, 2)
+
+
def draw_grid(grid,screen):
for yi in range(18):
@@ -218,7 +237,7 @@ if __name__ == "__main__":
bg_image = pygame.image.load(os.path.join('images',
'derechos-plaza-fondo.jpg')).convert_alpha()
- sps = [0, 1, 0, 2, 0, 1, 0, 3, # up
+ fms = [0, 1, 0, 2, 0, 1, 0, 3, # up
4, 5, 4, 6, 4, 5, 4, 7, # down
8, 9, 8, 10, 8, 9, 8, 11, # left
15, 13, 15, 14, 15, 13, 15, 12] # right
@@ -235,8 +254,8 @@ if __name__ == "__main__":
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0]
- sp = MainSprite(images, sps, nf, dxs, dys, 50, 400, 10)
- sp2 = BoySprite(images, sps, nf, dxs, dys, 50, 400, 10)
+ sp = MainSprite(images, fms, nf, dxs, dys, 30, 370, 10)
+ sp2 = BoySprite(images, fms, nf, dxs, dys, 150, 470, 10)
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],
@@ -257,8 +276,9 @@ if __name__ == "__main__":
[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]]
-
playing = True
+ talking_range = False
+ talking = False
while playing:
for event in pygame.event.get():
@@ -267,37 +287,85 @@ if __name__ == "__main__":
elif event.type == pygame.MOUSEBUTTONDOWN:
pass
elif event.type == pygame.KEYDOWN:
- if event.key == pygame.K_UP:
+ if event.key == pygame.K_UP and not talking:
sp.update_move(UP)
sp.update_frame(0)
- if event.key == pygame.K_DOWN:
+ elif event.key == pygame.K_DOWN and not talking:
sp.update_move(DOWN)
sp.update_frame(8)
- if event.key == pygame.K_LEFT:
+ elif event.key == pygame.K_LEFT and not talking:
sp.update_move(LEFT)
sp.update_frame(16)
- if event.key == pygame.K_RIGHT:
+ elif event.key == pygame.K_RIGHT and not talking:
sp.update_move(RIGHT)
sp.update_frame(24)
+ elif event.key == pygame.K_SPACE and talking_range:
+ if not talking:
+ talking = True
+ sp.update_move(TALKING)
+ sp2.update_move(TALKING)
+ print("Talking...")
+ else:
+ talking = False
+ sp.update_move(STOP)
+ sp2.update_move(STOP)
+ print("Not talking...")
elif event.type == pygame.KEYUP:
- if event.key == pygame.K_UP:
- sp.update_move(0)
- sp.update_frame(0)
- if event.key == pygame.K_DOWN:
- sp.update_move(0)
- sp.update_frame(8)
- if event.key == pygame.K_LEFT:
- sp.update_move(0)
- sp.update_frame(16)
- if event.key == pygame.K_RIGHT:
- sp.update_move(0)
- sp.update_frame(24)
+ keys_pressed = pygame.key.get_pressed()
+ if event.key == pygame.K_UP and not talking:
+ if keys_pressed[pygame.K_LEFT]:
+ sp.update_move(LEFT)
+ sp.update_frame(16)
+ elif keys_pressed[pygame.K_RIGHT]:
+ sp.update_move(RIGHT)
+ sp.update_frame(24)
+ elif keys_pressed[pygame.K_DOWN]:
+ sp.update_move(DOWN)
+ sp.update_frame(8)
+ else:
+ sp.update_move(0)
+ sp.update_frame(0)
+ elif event.key == pygame.K_DOWN and not talking:
+ if keys_pressed[pygame.K_LEFT]:
+ sp.update_move(LEFT)
+ sp.update_frame(16)
+ elif keys_pressed[pygame.K_RIGHT]:
+ sp.update_move(RIGHT)
+ sp.update_frame(24)
+ elif keys_pressed[pygame.K_UP]:
+ sp.update_move(UP)
+ sp.update_frame(0)
+ else:
+ sp.update_move(0)
+ sp.update_frame(8)
+ elif event.key == pygame.K_LEFT and not talking:
+ if keys_pressed[pygame.K_UP]:
+ sp.update_move(UP)
+ sp.update_frame(0)
+ elif keys_pressed[pygame.K_DOWN]:
+ sp.update_move(DOWN)
+ sp.update_frame(8)
+ elif keys_pressed[pygame.K_RIGHT]:
+ sp.update_move(RIGHT)
+ sp.update_frame(24)
+ else:
+ sp.update_move(0)
+ sp.update_frame(16)
+ elif event.key == pygame.K_RIGHT and not talking:
+ if keys_pressed[pygame.K_UP]:
+ sp.update_move(UP)
+ sp.update_frame(0)
+ elif keys_pressed[pygame.K_DOWN]:
+ sp.update_move(DOWN)
+ sp.update_frame(8)
+ elif keys_pressed[pygame.K_LEFT]:
+ sp.update_move(LEFT)
+ sp.update_frame(16)
+ else:
+ sp.update_move(0)
+ sp.update_frame(24)
-# sp.domove(grid)
-# sp2.ai(grid)
-
screen.blit(bg_image, (0, 0))
-
# draw_grid(grid,screen)
time_passed = clock.tick(20)
@@ -305,8 +373,26 @@ if __name__ == "__main__":
sp.update(time_passed, grid)
sp2.update(time_passed, grid)
- sp.render(screen)
- sp2.render(screen)
+ (ulx, uly) = sp.upper_left_tile()
+ (ulx2, uly2) = sp2.upper_left_tile()
+
+ if ulx-ulx2 >= -1 and ulx-ulx2 <=1 \
+ and uly-uly2 >= -1 and uly-uly2<=1:
+ talking_range = True
+ else:
+ talking_range = False
+
+ if sp.y < sp2.y:
+ sp.render(screen)
+ sp2.render(screen)
+ else:
+ sp2.render(screen)
+ sp.render(screen)
+
+ if talking_range and not talking:
+ sp2.draw_talking_range(screen)
+ elif talking:
+ sp2.draw_talking(screen)
pygame.display.flip()