Tu estás aquí: ¡Bienvenido! » Traducciones » pygame » sprite
Usuario
Buscar páginas
Esta Pagina
General

sprite

Módulo de pygame con clases básicas de objetos para juegos.

Este módulo contiene varias clases simples para ser utilizadas dentro de los juegos. Hay una clase principal Sprite y varias clases Group que contienen sprites. El uso de estas clases es completamente opcional cuando se usa pygame. Las clases son bastante livianas y solo proveen un punto de partida para el código que es común en la mayoría de los juegos.

Se espera que la clase Sprite se utilice como clase base para los diferentes tipos de objetos en el juego. También hay una clase Group básica que simplemente almacena sprites. Un juego podría crear nuevos tipos de clases Group que operen sobre instancias de objetos Sprite personalizadas.

La clase Sprite básica puede dibujar los sprites que contiene sobre una superficie. El método Group.draw() requiere que cada que cada Sprite tenga los atributos image y rect. El método Group.clear() requiere estos mismos atributos para poder borrar todos los sprites con fondo de pantalla. También hay grupos mas avanzados, por ejemplo pygame.sprite.RenderUpdates() y pygame.sprite.OrderedUpdates().

Por último, este módulo contiene varias funciones de colisión. Estas ayudan a encontrar sprites que tienen rectángulos de colisión en contacto.

Los grupos están diseñados para ser muy eficientes al insertar y eliminar sprites de ellos. También permiten pruebas sencillas para ver si un sprite está dentro del grupo. Un determinado Sprite puede estar en cualquier número de grupos. Un juego podría usar algunos grupos para controlar la impresión de objetos, y un conjunto separado de grupos para controlar la interacción o el movimiento del personaje. Considere mantener los sprites dentro de grupos organizados en lugar de agregar atributos de tipo a los objetos sprite. Esto le ayudará a encontrarlos mas fácilmente en el juego.

Los sprites y los grupos manejan sus relaciones con los métodos add() y remove()'. Estos métodos pueden aceptar una o varias instancias de objetos. Los inicializadores para estas clases también aceptan uno o varios objetos para insertar. Es seguro agregar y eliminar el mismo Sprite de un grupo.

Mientras es posible diseñar clases de sprite y grupos que no deriven desde las clases Sprite y AbstractGroup de mas arriba, es extremadamente que herede de ellas cuando agregue una clase de grupo o sprite.

Los sprites no son seguros para operar desde diferentes hilos, por lo tanto debe bloquearlos usted mismo si está usando hilos.

spritecollide

Encuentra sprites en el grupo que están en contacto con otro sprite.

pygame.sprite.spritecollide(sprite, group, dokill, collided = None): return Sprite_list

Retorna una lista que contiene todos los sprites en un grupo que están colisionando con otro sprite. La intersección se determina comparando el atributo Sprite.rect de cada sprite.

El argumento dokill es un valor booleando. Si vale True todos los sprites que colisionan se eliminarán del grupo.

El argumento collided es una función que se utiliza para calcular si dos sprites están en contacto, esta función debería tomar dos sprites como agumentos y retornar un valor True o False indicado si están colisionando. Si no se especifica el valor para el argumento, todos los sprites deberán tener un valor rect, que es el rectángulo del área de sprite, que se usará para calcular l colisión.

Funciones de colisión:

  • collide_rect
  • collide_rect_ratio
  • collide_circle
  • collide_circle_ratio
  • collide_mask

collide_rect

Detección de colisión entre dos sprites, usando rectángulos.

pygame.sprite.collide_rect(left, right): return bool

Consulta la colisión entre dos sprites. Usa la función colliderect del módulo rect para calcular la colisión. Está diseñada para ser enviada como una función de colisión a las funciones generales de colisión. Los sprites deben tener atributos rect.

Esta función es nueva en pygame 1.8.0

collide_rect_ratio

Detección de colisión entre dos sprites, usando rectángulos reducidos.

pygame.sprite.collide_rect_ratio(ratio): return collided_callable

Verifica colisiones entre dos sprites usando usa versión reducida de los rectángulos de sprite.

Se generan con un radio, y la instancia retornada está diseñada para ser enviada como una función de colisión a las funciones generales de colisión.

El argumento ratio es un número real, 1.0 indica que será del mismo tamaño, 2.0 es el doble de grande y 0.5 es de la mitad de tamaño.

Esta función es nueva en pygame 1.8.1

collide_circle

Detección de colisión entre dos sprites, usando círculos.

pygame.sprite.collide_circle(left, right): return bool

Verifica la colisión entre dos sprites, verificando si dos círculos centrados en los sprites están en contacto. Si el sprite tiene un atributo radius este se usará para crear en círculo, en caso de que no exista se creará un círculo lo suficientemente grande para contener todo el rectángulo del sprite indicado por el atributo rect. Esta función está diseñada para ser enviada como función de colisión a las funciones generales de colisión. Los sprites deben tener los atributos rect y radius (este último es opcional).

Esta función es nueva en pygame 1.8.1

collide_circle_ratio

Detección de colisión entre dos sprites, usando una versión reducida del círculo.

pygame.sprite.collide_circle_ratio(ratio): return collided_callable

Verifica colisiones entre dos sprites usando usa versión reducida de los círculos de sprite.

Se generan con un radio, y la instancia retornada está diseñada para ser enviada como una función de colisión a las funciones generales de colisión.

El argumento ratio es un número real, 1.0 indica que será del mismo tamaño, 2.0 es el doble de grande y 0.5 es de la mitad de tamaño.

El objeto creado verifica la existencia de colisión entre dos sprites, comprobando si los dos círculos con centro en los sprites están en contacto luego de haberlos alterado de tamaño. Lo los sprites tienen un atributo radius este se usará para crear el círculo, en otro caso se creará un círculo lo suficientemente grande grande para contener por completo el rectángulo de sprite según su atributo rect. Está diseñada para ser enviada como función de colisión a las funciones generales de colisión. Los sprites deben tener los atributos rect y radius (este último es opcional).

Esta función es nueva en pygame 1.8.1

collide_mask

Detección de colisión entre dos sprites usando máscaras.

pygame.sprite.collide_mask(SpriteLeft, SpriteRight): return bool

Verifica la colisión entre dos sprites, probando si sus máscaras de bits se superponen. Si el sprite tiene un atributo mask, este atributo se usará como máscara, en otro caso se creará la máscara a partir de la imagen del sprite. Esta función está diseñada para ser enviada como función de colisión a las funciones generales de colisión. Los sprites deben tener un atributo rect y un atributo opcional de nombre mask.

Esta función es nueva en pygame 1.8.0

groupcollide

Encuentra todos los sprites que colisionan entre dos grupos.

pygame.sprite.groupcollide(group1, group2, dokill1, dokill2): return Sprite_dict

Esta función encontrará intersecciones entre todos los sprites de dos grupos. Las intersecciones se determinan comparando los atributos Sprite.rect de cada Sprite.

Cada sprite dentro del grupo group1 se agrega al diccionario de retorno como clave. El valor de cada elemento será una lista de los sprites del grupo group2 que colisionan con el primero.

Si algunos de los argumentos dokill vale True, se eliminaran los sprites en colisión de sus respectivos grupos.

spritecollideany

Consulta simple para ver si un sprite colisiona con algún otro en el grupo.

pygame.sprite.spritecollideany(sprite, group): return bool

Consulta si el sprite dado colisiona con algún sprite en el grupo. La intersección se determina comparando el atributo Sprite.rect de cada sprite.

Esta prueba de colisión puede ser mas rápida que pygame.sprite.spritecollideany() dado que tiene menos trabajo para hacer. Retornará al encontrar la primer colisión.

 
traducciones/pygame/sprite.txt · Última modificación: 01/02/2009 a las 03:28 por hugoruscitti
Este sitio funciona sobre el motor wiki de DokuWiki.
© 2003-2008 Hugo Ruscitti