Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Moleri <pmoleri@gmail.com>2010-09-27 23:22:54 (GMT)
committer Pablo Moleri <pmoleri@gmail.com>2010-09-27 23:22:54 (GMT)
commit166dd9f52f389741d0a2d6adf448700ec8da927b (patch)
tree01d7775ae1258a594a33e0e453d2b58842b29dd4
parentcc1bca2ffdade7e16def981dbb08983ff1571870 (diff)
First sketch of customization added
-rwxr-xr-xSaludame.activity/animation.py4
-rw-r--r--Saludame.activity/challenges/trophy.pngbin0 -> 4342 bytes
-rw-r--r--Saludame.activity/customization/boy.pngbin0 -> 10406 bytes
-rw-r--r--Saludame.activity/customization/boy_small.pngbin0 -> 1871 bytes
-rw-r--r--Saludame.activity/customization/colorwheel.pngbin0 -> 24471 bytes
-rw-r--r--Saludame.activity/customization/girl.pngbin0 -> 11110 bytes
-rw-r--r--Saludame.activity/customization/girl_small.pngbin0 -> 1893 bytes
-rw-r--r--Saludame.activity/customization/palette.pngbin0 -> 3226 bytes
-rw-r--r--Saludame.activity/customization/www.clker.com0
-rwxr-xr-xSaludame.activity/game.py6
-rwxr-xr-xSaludame.activity/utilities.py46
-rwxr-xr-xSaludame.activity/window.py37
12 files changed, 87 insertions, 6 deletions
diff --git a/Saludame.activity/animation.py b/Saludame.activity/animation.py
index 98ec8f6..8126f82 100755
--- a/Saludame.activity/animation.py
+++ b/Saludame.activity/animation.py
@@ -2,6 +2,7 @@
import pygame
import os
+import utilities
KID_PATH = os.path.normpath("assets/kid")
KID_PREFIX, KID_SUFIX = "kid", ".png"
@@ -53,8 +54,7 @@ class Kid:
for old_color_text in old:
old_color = pygame.Color(old_color_text)
new_color = pygame.Color(new[index])
- mapped_int = self.sprite.map_rgb(old_color)
- self.sprite.set_palette_at(mapped_int, new_color[0:3])
+ utilities.change_color(self.sprite, old_color, new_color)
index += 1
diff --git a/Saludame.activity/challenges/trophy.png b/Saludame.activity/challenges/trophy.png
new file mode 100644
index 0000000..c421890
--- /dev/null
+++ b/Saludame.activity/challenges/trophy.png
Binary files differ
diff --git a/Saludame.activity/customization/boy.png b/Saludame.activity/customization/boy.png
new file mode 100644
index 0000000..594c303
--- /dev/null
+++ b/Saludame.activity/customization/boy.png
Binary files differ
diff --git a/Saludame.activity/customization/boy_small.png b/Saludame.activity/customization/boy_small.png
new file mode 100644
index 0000000..1d60e66
--- /dev/null
+++ b/Saludame.activity/customization/boy_small.png
Binary files differ
diff --git a/Saludame.activity/customization/colorwheel.png b/Saludame.activity/customization/colorwheel.png
new file mode 100644
index 0000000..5b0cf87
--- /dev/null
+++ b/Saludame.activity/customization/colorwheel.png
Binary files differ
diff --git a/Saludame.activity/customization/girl.png b/Saludame.activity/customization/girl.png
new file mode 100644
index 0000000..4a8283f
--- /dev/null
+++ b/Saludame.activity/customization/girl.png
Binary files differ
diff --git a/Saludame.activity/customization/girl_small.png b/Saludame.activity/customization/girl_small.png
new file mode 100644
index 0000000..cbb71a7
--- /dev/null
+++ b/Saludame.activity/customization/girl_small.png
Binary files differ
diff --git a/Saludame.activity/customization/palette.png b/Saludame.activity/customization/palette.png
new file mode 100644
index 0000000..1613bb2
--- /dev/null
+++ b/Saludame.activity/customization/palette.png
Binary files differ
diff --git a/Saludame.activity/customization/www.clker.com b/Saludame.activity/customization/www.clker.com
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Saludame.activity/customization/www.clker.com
diff --git a/Saludame.activity/game.py b/Saludame.activity/game.py
index ac78622..8680f4e 100755
--- a/Saludame.activity/game.py
+++ b/Saludame.activity/game.py
@@ -7,6 +7,7 @@ from gettext import gettext as _
from windowsController import *
import window
import challenges
+import customization
log = logging.getLogger('saludame')
log.setLevel(logging.DEBUG)
@@ -53,6 +54,11 @@ class Main():
# Challenges Window
challenges_window = challenges.MultipleChoice(pygame.Rect((200, 150), (800, 400)), 1)
self.windows_controller.add_new_window(challenges_window, "challenges")
+
+ # Customization Window
+ customization_window = customization.CustomizationWindow(pygame.Rect((200, 100), (800, 500)), 1)
+ self.windows_controller.add_new_window(customization_window, "customization")
+
# Main Window
main_window = (window.MainWindow(clock))
self.windows_controller.add_new_window(main_window, "main")
diff --git a/Saludame.activity/utilities.py b/Saludame.activity/utilities.py
index 29d0a27..73da45a 100755
--- a/Saludame.activity/utilities.py
+++ b/Saludame.activity/utilities.py
@@ -49,7 +49,44 @@ class Button:
def on_mouse_out(self):
None
+
+class ImageButton:
+
+ # Clase abstracta que representa un boton con una imagen de fondo
+
+ def __init__(self, rect, x, y, image):
+
+ if not isinstance(image, pygame.Surface):
+ image = pygame.image.load(image).convert_alpha()
+
+ self.image = image
+
+ # Agregamos los botones con coordenadas "relativas" a la ventana que los cotiene
+ self.rect = pygame.Rect(rect.left + x, rect.top + y, image.get_width(), image.get_height())
+
+ self.background_color = (0, 0, 0)
+ self.over = False
+
+ def contains_point(self, x, y):
+ return self.rect.collidepoint(x, y)
+
+ def draw(self, surface):
+ surface.blit(self.image, self.rect.topleft)
+ return [self.rect]
+
+ def set_background_color(self, color):
+ self.background_color = color
+ # Eventos sobre el boton... seran sobreescritos por los hijos
+ def on_mouse_click(self):
+ None
+
+ def on_mouse_over(self):
+ None
+
+ def on_mouse_out(self):
+ None
+
class CloseButton(Button):
def __init__(self, rect, x, y, w, h, text):
Button.__init__(self, rect, x, y, w, h, text)
@@ -58,3 +95,12 @@ class CloseButton(Button):
def on_mouse_clik(self, windows_controller):
windows_controller.close_active_window()
+
+def change_color(surface, old_color, new_color):
+ # No funciona en pygame 1.8.0
+ #image_pixel_array = pygame.PixelArray(self.sprite)
+ #image_pixel_array.replace(old_color, new_color)
+
+ mapped_int = surface.map_rgb(old_color)
+ surface.set_palette_at(mapped_int, new_color[0:3])
+ \ No newline at end of file
diff --git a/Saludame.activity/window.py b/Saludame.activity/window.py
index aad9aaa..fbe7a8f 100755
--- a/Saludame.activity/window.py
+++ b/Saludame.activity/window.py
@@ -4,6 +4,7 @@ import pygame
import os
import menucreator
import animation
+import utilities
BLACK = pygame.Color("black")
BACKGROUND_PATH = os.path.normpath("assets/background/background.png")
@@ -135,22 +136,50 @@ class KidWindow(Window):
class MainWindow():
+ class ChallengesButton(utilities.ImageButton):
+
+ def __init__(self, rect, x, y):
+ utilities.ImageButton.__init__(self, rect, x, y, "challenges/trophy.png")
+ self.frame_rate = 1
+
+ def on_mouse_click(self, windows_controller):
+ windows_controller.set_active_window("challenges")
+
+ class CustomizationButton(utilities.ImageButton):
+
+ def __init__(self, rect, x, y):
+ utilities.ImageButton.__init__(self, rect, x, y, "customization/palette.png")
+ self.frame_rate = 1
+
+ def on_mouse_click(self, windows_controller):
+ windows_controller.set_active_window("customization")
+
def __init__(self, clock):
- self.name = "main"
+ self.name = "main"
self.clock = clock
+ self.rect = pygame.Rect(0, 0, 1200, 780)
self.windows = [] # Lista de ventanas que 'componen' la ventana principal
self.windows.append(BlinkWindow(pygame.Rect((700, 0), (500, 140)), 5, pygame.Color("red")))
self.windows.append(BlinkWindow(pygame.Rect((700, 150), (500, 140)), 5, pygame.Color("blue")))
self.windows.append(StatusWindow(pygame.Rect((700, 300), (500, 140)), 2, pygame.Color("gray")))
self.windows.append(KidWindow(pygame.Rect((0, 0), (600, 500)), 1))
- self.windows.append(animation.Apple(pygame.Rect((150, 500), (150, 172)), 10))
+ self.windows.append(animation.Apple(pygame.Rect((150, 600), (150, 172)), 10))
self.windows.append(menucreator.load_menu())
self.windows.append(animation.FPS(pygame.Rect((650, 80), (50, 20)), 15, self.clock))
+ self.buttons = []
+ self.buttons.append(MainWindow.CustomizationButton(self.rect, 10, 650))
+ self.buttons.append(MainWindow.ChallengesButton(self.rect, 70, 650))
+
+ self.windows.extend(self.buttons) # Buttons are drawn too
+
def handle_mouse_down(self, (x, y), windows_controller):
# Temporal para probar el manejo de ventanas entre 'challenges' y 'main'
- windows_controller.set_active_window("challenges")
-
+ #windows_controller.set_active_window("challenges")
+ for button in self.buttons:
+ if button.contains_point(x, y):
+ button.on_mouse_click(windows_controller)
+
def handle_mouse_over(self, (x, y)):
None