
Y si lo que quieres es tener una nueva Surface con el sprite, podría crear una Surface bacía y luego dibujarle el Sprite con la técnica descrita anteriormente.Surface.blit(source, dest, area=None, special_flags = 0): return Rect
Se puede pasar un rectángulo opcional como argumento area. Este representa una porción mas pequeña de la superficie source a imprimir.
Juanxo escribió:A lo mejor no es necesario calcular el rect ( bueno si, pero es un calculo sencillo). Guardas en un diccionario o lo que sea una tupla (x,y), que represente la imagen inicial de la animación, y una variable con el número de frame de la animacion que quieres y el calculo es una simple multiplicacion.
kilohurts escribió:me di cuenta que puedo reducir significativamente las lineas de codigo
Ja-ja ¿No está nada dicho? Bueno, allá tú, eres libre de decidir ignorar mis consejos. Para que no tengan confusión los novatos que lean esto, voy a detallar un poco más las razones de por qué es más ineficiente respecto al método tradicional. Como bien había intuido kilohurts, no hace falta utilizar un profiler, solamente pensar un poco en como trabaja la biblioteca internamente. Tenemos tendencia a imaginar que una Surface es un cuadrícula de h filas por w columnas, pero, en memoria, se almacena con una gran y única "fila" de h*w(*dpp depth per píxel, profundidad de píxel). Por esta esta razón, al hacer recortes en una imagen (modificar la anchura), se complica bastante la cosa. Esto hace que la función chop sea bastante ineficiente: su algoritmo consiste en copiar píxel por píxel a una Surface nueva. El algoritmo descrito en este hilo, tal y como está construido, suele hacer 2 chops (1 solo chop lo contaré como una excepción ya que solo se da en 4 casos del total). El primero de ellos es el más critico, ya que depende del tamaño del sprite sheet. Por lo tanto, en casos excepcionales, tarda casi lo mismo que con el método tradicional y, en los casos normales, puede llegar (ya que también depende de la posición del frame) a tardar muchísimo más. Para que se entienda el "muchísimo más": en el código actual, se crea una surface temporal de 1200*180*32 que es igual a 6912000 bits mientras que en realidad solo se necesitan copiar 80*90*32 = 230400 bits (los ceros a la derecha sí importan...)kilohurts escribió:enderamiz, espero que hayas usado un profiler de la implementacion de la técnica que (espero) que expliqué, si no es así nada está dicho...
kilohurts escribió:Ahora lo mas dificil no es programar sino conseguir los efectos de sonido y las voces de los personajes. Si conocen alguna página avísenme por favor.
kilohurts escribió:lacabra25 escribió:...
Si tienes codigo que me pueda servir o mejor aun ideas no dudes en avisarme.
lacabra25 escribió:No entiendo la cita de los puntos suspensivos, en el ultimo post no puse ningunos puntos suspensivos, sino dos direcciones donde conseguir musica y sonidos para tu juego.
lacabra25 escribió:Música se que la puedes conseguir en Jamendo http://www.jamendo.com/es/ y para efectos de sonido puedes visitar http://www.freesound.org/, en cuanto a las voces de los personajes no conozco paginas con voces, podrias mirar algun sintetizador de voz (como los usados en algunos videos de humor de youtube, aunque hay alguno demasiados malos que parece que mas que hablar estuviese diciendo silabas otros son más fluidos) o grabar tu voz o la de alguien y con un editor de sonido, por ejemplo audacity, modificar la grabacion hasta que tenga el tono deseado, eco y lo que se te ocurra con las herramientas que proporciona el editor de sonido.
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado