Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJorge Ramírez <jorgeramirez1990@gmail.com>2013-01-19 01:28:54 (GMT)
committer Jorge Ramírez <jorgeramirez1990@gmail.com>2013-01-19 01:28:54 (GMT)
commita3fb8bc72c4198f88f1b0ce242b8e005a2df19ae (patch)
tree24c24724cd2eff920d262d8a5a9e92b829d1d2b5
parentade6a1f41e835a4d1b5580edc148b989d1bbd334 (diff)
Mostrar dardo y reiniciar juego
Una vez que se tienen X e Y se despliega el dardo y cuando el jugador vuelve a pulsar una tecla, se reinicia el juego. TODO: * calcular puntaje y mostrar. * buscar un dardo un poco mas grande =D.
-rwxr-xr-xboard.py34
-rw-r--r--images/dart.pngbin0 -> 3793 bytes
2 files changed, 28 insertions, 6 deletions
diff --git a/board.py b/board.py
index 1e9b76f..0889d48 100755
--- a/board.py
+++ b/board.py
@@ -2,20 +2,24 @@
import gtk
import gobject
+
DELAY = 5
DELTA = 1
WIDTH = 512
HEIGHT = 512
+
class Darts():
def __init__(self):
window = gtk.Window()
+ window.set_title('Lanzar')
drawing_area = gtk.DrawingArea()
drawing_area.set_size_request(WIDTH, HEIGHT)
self.pixbuf = gtk.gdk.pixbuf_new_from_file('images/dartboard.png')
+ self.dart_pixbuf = gtk.gdk.pixbuf_new_from_file('images/dart.png')
window.connect('destroy', self.destroy)
drawing_area.connect('configure_event', self.__configure_cb)
@@ -49,7 +53,6 @@ class Darts():
gobject.timeout_add(DELAY, self.__move_vertical_line, drawing_area)
-
def destroy(self, window, data=None):
gtk.main_quit()
@@ -84,7 +87,7 @@ class Darts():
# Dibujar la diana sobre el fondo negro
self.pixmap.draw_pixbuf(None, self.pixbuf, 0, 0, 0, 0, -1, -1,
gtk.gdk.RGB_DITHER_NONE, 0, 0)
-
+
def draw_line(self, drawing_area, orientation, line_index):
#Utilizado para dibujar objetos en el pixmap
cr = self.pixmap.cairo_create()
@@ -101,8 +104,7 @@ class Darts():
rectangle = cr.rectangle(rectangle)
drawing_area.queue_draw()
cr.fill()
-
-
+
def __move_vertical_line(self, drawing_area):
#Dibujar el fondo sobre el cual movemos las lineas, si aun no hemos
#presionado un boton para dejar la linea vertical en una coordenada dada
@@ -159,10 +161,30 @@ class Darts():
gobject.timeout_add(DELAY, self.__move_horizontal_line, drawing_area)
elif self._selected_y == -1:
self._selected_y = self._y
+ gobject.timeout_add(DELAY, self.__draw_dart, drawing_area)
else:
# TO-DO: Calcular el puntaje de acuerdo a _selected_x y _selected_y
- pass
- # TO-DO: Mostrar el puntaje, y al presionar algo iniciar de nuevo
+ # TO-DO: Mostrar el puntaje
+ self.restart_game(drawing_area)
+
+ def __draw_dart(self, drawing_area):
+ """
+ Dibuja el dardo una vez que se obtuvieron X e Y
+ """
+ x = self._selected_x - 24 # para centrar la imagen
+ y = self._selected_y - 24
+
+ self.draw_background(drawing_area)
+ self.draw_line(drawing_area, "HORIZONTAL", self._y)
+ self.draw_line(drawing_area, "VERTICAL", self._x)
+ self.pixmap.draw_pixbuf(None, self.dart_pixbuf, 0, 0, x, y, -1, -1,
+ gtk.gdk.RGB_DITHER_NONE, 0, 0)
+
+ def restart_game(self, drawing_area):
+ self._x = self._y = 0
+ self._selected_x = self._selected_y = -1
+ gobject.timeout_add(DELAY, self.__move_vertical_line, drawing_area)
+
if __name__ == "__main__":
my_darts = Darts()
diff --git a/images/dart.png b/images/dart.png
new file mode 100644
index 0000000..600c05d
--- /dev/null
+++ b/images/dart.png
Binary files differ