diff options
author | Pablo Moleri <pmoleri@gmail.com> | 2010-09-27 23:22:54 (GMT) |
---|---|---|
committer | Pablo Moleri <pmoleri@gmail.com> | 2010-09-27 23:22:54 (GMT) |
commit | 166dd9f52f389741d0a2d6adf448700ec8da927b (patch) | |
tree | 01d7775ae1258a594a33e0e453d2b58842b29dd4 | |
parent | cc1bca2ffdade7e16def981dbb08983ff1571870 (diff) |
First sketch of customization added
-rwxr-xr-x | Saludame.activity/animation.py | 4 | ||||
-rw-r--r-- | Saludame.activity/challenges/trophy.png | bin | 0 -> 4342 bytes | |||
-rw-r--r-- | Saludame.activity/customization/boy.png | bin | 0 -> 10406 bytes | |||
-rw-r--r-- | Saludame.activity/customization/boy_small.png | bin | 0 -> 1871 bytes | |||
-rw-r--r-- | Saludame.activity/customization/colorwheel.png | bin | 0 -> 24471 bytes | |||
-rw-r--r-- | Saludame.activity/customization/girl.png | bin | 0 -> 11110 bytes | |||
-rw-r--r-- | Saludame.activity/customization/girl_small.png | bin | 0 -> 1893 bytes | |||
-rw-r--r-- | Saludame.activity/customization/palette.png | bin | 0 -> 3226 bytes | |||
-rw-r--r-- | Saludame.activity/customization/www.clker.com | 0 | ||||
-rwxr-xr-x | Saludame.activity/game.py | 6 | ||||
-rwxr-xr-x | Saludame.activity/utilities.py | 46 | ||||
-rwxr-xr-x | Saludame.activity/window.py | 37 |
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 Binary files differnew file mode 100644 index 0000000..c421890 --- /dev/null +++ b/Saludame.activity/challenges/trophy.png diff --git a/Saludame.activity/customization/boy.png b/Saludame.activity/customization/boy.png Binary files differnew file mode 100644 index 0000000..594c303 --- /dev/null +++ b/Saludame.activity/customization/boy.png diff --git a/Saludame.activity/customization/boy_small.png b/Saludame.activity/customization/boy_small.png Binary files differnew file mode 100644 index 0000000..1d60e66 --- /dev/null +++ b/Saludame.activity/customization/boy_small.png diff --git a/Saludame.activity/customization/colorwheel.png b/Saludame.activity/customization/colorwheel.png Binary files differnew file mode 100644 index 0000000..5b0cf87 --- /dev/null +++ b/Saludame.activity/customization/colorwheel.png diff --git a/Saludame.activity/customization/girl.png b/Saludame.activity/customization/girl.png Binary files differnew file mode 100644 index 0000000..4a8283f --- /dev/null +++ b/Saludame.activity/customization/girl.png diff --git a/Saludame.activity/customization/girl_small.png b/Saludame.activity/customization/girl_small.png Binary files differnew file mode 100644 index 0000000..cbb71a7 --- /dev/null +++ b/Saludame.activity/customization/girl_small.png diff --git a/Saludame.activity/customization/palette.png b/Saludame.activity/customization/palette.png Binary files differnew file mode 100644 index 0000000..1613bb2 --- /dev/null +++ b/Saludame.activity/customization/palette.png 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 |