¿Duda con Sprits y grupos de Sprits?

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

¿Duda con Sprits y grupos de Sprits?

Notapor XD YO » Sab Sep 26, 2009 2:56 pm

Estoy basandome en el codigo del ejemplo de arrastrar y soltar escrito en python. Lo que intento hacer es que al chocar dos sprites espesificos (la parte de añadirlo a un grupo), aparesca uno nuevo, pero independiente de los otros dos (que los otros dos sprites no desaparescan), pero no estoy muy seguro de como hacerlo.

de antemano gracias
"Fácilmente aceptamos la realidad, acaso porque intuimos que nada es real"
-El inmortal, Jorge Luis Borges.
XD YO
 
Mensajes: 18
Registrado: Vie Ago 28, 2009 2:19 am
Ubicación: Chilangolandia (Mexico D.F.)

Re plantando el problema

Notapor XD YO » Jue Oct 08, 2009 2:14 am

Bueno, esto es lo que quiero hacer...

En una ventana tenemos un conjunto de preguntas que cambian su numero al presionar un boton (como un contador); el codigo que llevo lo e escrito en Python con el modulo Tkinter, y es este:

Código: Seleccionar todo
#ventana con num pregunta
from Tkinter import*
#importamos los modulos de Python nesesarios
import tkMessageBox
#Creamos la clase del contador y que importara las ventanas
#escritas con pygame
class pregun:

    def __init__(self, pregunta):

        self.pregunta = pregunta

        print "Estas en la pregunta", pregunta

    def adelan(self):

        if self.pregunta > 0:

            self.pregunta -= 1

            lala = "Quedan", self.pregunta, "preguntas"

            lbr = Label(root, text=lala)

            lbr.grid(row=2, column=2)

        else:

            print "no quedan preguntas"

    def atras (self):

        if self.pregunta <= 4:

            self.pregunta += 1
            lala = "Quedan", self.pregunta, "preguntas"

            print lala
            lbr = Label(root, text=lala)

            lbr.grid(row=2, column=2)

        else:

            print "no quedan preguntas"

###definimos el valor, en este caso, del numero de preguntas.
pre = pregun(5)
#definimos la funcion que enviara un mensaje
#para precuntar si cerrara la ventana en caso de que la persona
#haya presionado el boton por error
def callback():
    if tkMessageBox.askokcancel("Salir", "Esta seguro de Salir?,\
                                                    presione OK"):
        root.destroy()
#Aqui invocamos la ventana y colocamos su titulo
root = Tk()

root.title("Pruevavil")#aqui el titulo
#protocolo de el mensage de advertencia
root.protocol("WM_DELETE_WINDOW", callback)

#El mensage principal

lala = "Biembenido \n Pulsa siguiente para comenzar"

lbr = Label(root, text=lala)
lbr.grid(row=2, column=2)

#definimos los botones Anterior y Siguiente

atras = Button(root, text="anterior", command=pre.atras, width=20)

atras.grid(row=3, column=0)

siguiente = Button(root, text="siguiente", command=pre.adelan, width=20)

siguiente.grid(row=3, column=3)

#creamos el bucle principal de la ventana

root.mainloop()


Mi problema es con la parte de importar el modulo escrito con pygame, el cual es solo una "Maximisacion" de la del ejemplo arrastrar soltar reducida a un solo archivo:

Código: Seleccionar todo
#VENTANA EN PYGAME
!/usr/bin/env python

try:
   import pygame
   import os
   import sys
   from pygame.locals import *
except ImportError, err:
   print "No se puede cargar el modulo %s" %(err)
   sys.exit (2)
#Esta es la parte del que antes era el archivo utils
def load_image (image):
   "Carga una imagen e intenta optimizarla"
   #Se especifica la direcion de la carpeta con las imagenes (../data)
   path = os.path.join ("../data", image)
   try:
      image = pygame.image.load(path)
      
      if image.get_alpha is None:
         image = image.convert()
      else:
         image = image.convert_alpha()
   except pygame.error, message:
      print 'Cannot load image:', path
      raise SystemExit, message
      
   return image, image.get_rect()
#La clase de las figuras que se pueden arrastrar
class Figura (pygame.sprite.Sprite):
   "Representa un objeto que se puede `arrastar` mediante el mouse "

   def __init__ (self, image, x, y):
      pygame.sprite.Sprite.__init__(self)
      self.image, self.rect = load_image (image)
      self.seleccionado = 0
      self.rect.x = x
      self.rect.y = y

   def update (self):
      x_abs, y_abs = pygame.mouse.get_pos ()
      b1, b2, b4 = pygame.mouse.get_pressed ()
      
      if self.seleccionado:
         x, y = pygame.mouse.get_rel ()
         self.rect.move_ip (x, y)
      else:
         if self.rect.collidepoint (x_abs, y_abs) and b1:
            pygame.mouse.get_rel ()
            self.seleccionado = 1
            
      if not b1:
         self.seleccionado = 0
#Una clase que modifique, en que las imagenes cargadas NO se pueden mover
class resp (pygame.sprite.Sprite):
   "Representa un objeto que NO se puede `arrastar` mediante el mouse "

   def __init__ (self, image, x, y):
      pygame.sprite.Sprite.__init__(self)
      self.image, self.rect = load_image (image)
      self.seleccionado = 0
      self.rect.x = x
      self.rect.y = y

   def update (self):
      x_abs, y_abs = pygame.mouse.get_pos ()
      b1, b2, b4 = pygame.mouse.get_pressed ()
      
      if self.seleccionado:
         x, y = pygame.mouse.get_rel ()
         self.rect.move_ip (x, y)
      else:
         if self.rect.collidepoint (x_abs, y_abs) and b1:
            pygame.mouse.get_rel ()
#Esta es la parte modificada (el valor de seleccionado es igual a cero
            self.seleccionado = 0
            
      if not b1:
         self.seleccionado = 0

#Donde se define la ventana
def main ():
   pygame.init()
   screen = pygame.display.set_mode ((640, 480), 16)
   pygame.display.set_caption ('Ex-grafic')

   fondo = pygame.Surface (screen.get_size ())
   fondo = fondo.convert ()
   fondo.fill ((200, 200, 200))
   
   screen.blit (fondo, fondo.get_rect ())
   pygame.display.flip ()
   # Genera una lista de sprites y los gestiona con Dirty Rectangles
   lista_figuras = pygame.sprite.RenderUpdates ()
#figuras con la clase que se pueden mover
   lista_figuras.add (Figura ('face.png', 20, 20))
   lista_figuras.add (Figura ('mail.png', 20, 100))
   lista_figuras.add (Figura ('office.png', 20, 200)
   lista_figuras.add (Figura ('trash.png', 20, 300))
   lista_figuras.add (Figura ('cd.png', 20, 400))
#figura que no se puede mover
   lista_figuras.add (resp ('resp.png', 500, 200))
   
   clock = pygame.time.Clock ()
   
   while 1:
      clock.tick (100)
      
      for event in pygame.event.get ():
         
         if event.type == QUIT:
            return
         
      lista_figuras.update ()

      # Actualizacion grafica
      lista_figuras.clear (screen, fondo)
      pygame.display.update (lista_figuras.draw (screen))

if __name__ == '__main__': main()


Mi duda es la importacion, y como llevar un registro de las coliciones de las figuras que puedo arrastar y la que no, por que la verdad no tengo idea de como hacerlo :oops: X¬d
"Fácilmente aceptamos la realidad, acaso porque intuimos que nada es real"
-El inmortal, Jorge Luis Borges.
XD YO
 
Mensajes: 18
Registrado: Vie Ago 28, 2009 2:19 am
Ubicación: Chilangolandia (Mexico D.F.)


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron