Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/glucosa.py
diff options
context:
space:
mode:
Diffstat (limited to 'glucosa.py')
-rw-r--r--glucosa.py66
1 files changed, 32 insertions, 34 deletions
diff --git a/glucosa.py b/glucosa.py
index 978206b..303479b 100644
--- a/glucosa.py
+++ b/glucosa.py
@@ -363,7 +363,7 @@ class Sprite(gobject.GObject):
x = property(get_x, set_x, doc="Define la posicion horizonal")
y = property(get_y, set_y, doc="Define la posicion vertical")
-
+
def get_left(self):
return self.x - (self.image.width * self.scale / 2)
@@ -393,8 +393,8 @@ class Sprite(gobject.GObject):
top = property(get_top, set_top, doc="Define la posición superior del Sprite")
bottom = property(get_bottom, set_bottom, doc="Define la posición inferior del Sprite")
-
-
+
+
class Text:
"""Muestra un texto en la pantalla.
@@ -479,17 +479,17 @@ class Events(gobject.GObject):
"""
- # No funciona con gobject:
+ # No funciona con gobject:
# Solo puede existir una instancia de este objeto en el programa.
#__metaclass__ = Singleton
__gsignals__ = {'mouse-moved': (gobject.SIGNAL_RUN_FIRST, None, [object]),
- 'mouse-button-pressed': (gobject.SIGNAL_RUN_FIRST, None, [object]),
- 'mouse-button-released': (gobject.SIGNAL_RUN_FIRST, None, [object]),
- 'mouse-scroll-up': (gobject.SIGNAL_RUN_FIRST, None, [object]),
- 'mouse-scroll-down': (gobject.SIGNAL_RUN_FIRST, None, [object]),
- 'key-pressed': (gobject.SIGNAL_RUN_FIRST, None, []),
- 'key-released': (gobject.SIGNAL_RUN_FIRST, None, [])}
+ 'mouse-button-pressed': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ 'mouse-button-released': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ 'mouse-scroll-up': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ 'mouse-scroll-down': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ 'key-pressed': (gobject.SIGNAL_RUN_FIRST, None, []),
+ 'key-released': (gobject.SIGNAL_RUN_FIRST, None, [])}
def __init__(self, widget):
gobject.GObject.__init__(self)
@@ -497,17 +497,17 @@ class Events(gobject.GObject):
self._widget = widget
# Conectamos los eventos de GTK.
- self._widget.area.connect('motion-notify-event',
+ self._widget.connect('motion-notify-event',
self._mouse_move)
- self._widget.area.connect('button-press-event',
+ self._widget.connect('button-press-event',
self._mouse_button_press)
- self._widget.area.connect('button-release-event',
+ self._widget.connect('button-release-event',
self._mouse_button_released)
- self._widget.area.connect('key-press-event',
+ self._widget.connect('key-press-event',
self._key_pressed)
- self._widget.area.connect('key-release-event',
+ self._widget.connect('key-release-event',
self._key_released)
- self._widget.area.connect('scroll-event',
+ self._widget.connect('scroll-event',
self._mouse_scroll)
self._keys_pressed = []
@@ -736,8 +736,7 @@ class Pencil:
context.stroke()
-
-class GameArea(gtk.Fixed):
+class GameArea(gtk.DrawingArea):
"""Es el area donde el juego se dibujará
Permite ser embebida en cualquier contenedor de gtk, ya que es un
@@ -755,38 +754,32 @@ class GameArea(gtk.Fixed):
}
def __init__(self):
- gtk.Fixed.__init__(self)
+ gtk.DrawingArea.__init__(self)
self.sprites = []
self._timeout = None
- self.background = gtk.Image()
- self.add(self.background)
+ self._backgroud = None
- self.area = gtk.DrawingArea()
- self.add(self.area)
-
- self.area.connect("expose-event", self._on_draw)
+ self.connect("expose-event", self._on_draw)
- self.area.set_events(gtk.gdk.BUTTON_PRESS_MASK
+ self.set_events( gtk.gdk.BUTTON_PRESS_MASK
| gtk.gdk.BUTTON_RELEASE_MASK
| gtk.gdk.KEY_RELEASE_MASK
| gtk.gdk.KEY_PRESS_MASK
| gtk.gdk.POINTER_MOTION_MASK)
- self.area.set_flags(gtk.CAN_FOCUS)
-
- self.show_all()
+ self.set_flags (gtk.CAN_FOCUS)
def add_sprite(self, sprite):
"""Agrega un sprite a el area de juego"""
self.sprites.append(sprite)
sprite.connect('update', self._update)
-
- def set_background(self, path, width, height):
+
+ def set_background(self, background):
"""Define el fondo del area de juego"""
- pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(path, width, height)
- self.background.set_from_pixbuf(pixbuf)
+ self._background = background
+ self.queue_draw()
def set_update_loop(self, fps=60):
"""Define un bucle de actualizacion si fps = -1 el bucle se detendra
@@ -805,7 +798,7 @@ class GameArea(gtk.Fixed):
for sprite in self.sprites:
sprite.update()
- gobject.idle_add(self.area.queue_draw)
+ gobject.idle_add(self.queue_draw)
return True
def _on_draw(self, widget, event):
@@ -813,6 +806,11 @@ class GameArea(gtk.Fixed):
window_size = self.get_window().get_size()
fill(context, (50,50,50), window_size)
+ # Dibuja el fondo
+ if self._backgroud:
+ self._backgroud.blit(context, 0, 0, scale=1, rotation=0, anchor_x=0,
+ anchor_y=0, flip=False)
+
# Se encarga de dibujar los sprites
for sprite in self.sprites:
sprite.draw(context)