[PYG] DUDAS draw(),Updates(), clear() y BORRAR sprite

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

[PYG] DUDAS draw(),Updates(), clear() y BORRAR sprite

Notapor quiro9 » Vie Dic 09, 2011 5:52 am

Hola gente... me registre hace poco
Soy estudiante de analisis y programacion, sconosco el lenguaje python y creo entender los conceptos de la orientacion a objeto hace unos años atras... al menos eso creo ja.

La verdad que hace poco comenze con pygame (sera 2 dias)... y me parece facil y ampliamente potente... en fin, solo queria consultar unas dudas:

Cuando "dibujo" una imagen, llamado sprite, suelo hacerlo, cargando la imagen, convirtiendola, dando la pocicion rectangular, dibujando, actualizando:, ALGO ASI:

imagen = pygame.image.load(imagen)
imagen = imagen.convert()
rect = imagen.get_rect()
pantalla.blit(imagen,rect)
#luego cuando se "actualize" lo dibuja
pygame.display.flip()

CON ESTO TODO BIEN (si bien lo hago con funciones y no como el ejemplo ese), SIEMPRE ME ANDA Y ENTIENDO (al menos eso creo) Y TODO PERFECTO, pero... vi que hay otros metodos draw(), etc... pero aqui mi duda, draw no sirve para "dibujar" imagenes no?, almenos no puedo o no entiendo como... PERO SI PUEDO COLORES...

#----------------------------
LA OTRA DUDA es que quiero borrar la imagen:
unas de las formas que hacia era con un condicional evito que pase por "pantalla.blit(imagen,rect)", lo cual igualmente es como tener la imagen cargada, PERO SIN DIBUJAR (si desaparece de pantalla pero igual esta su pocicion y todo ahi), Y NO ES LO QUE QUIERO... quiero que se borre el rect y todo el sprite desentemente, Y NO EXISTA... como puedo hacer estO?... vi que esta clear()... pero tampoco entiendo como anda...


#---------------------------
ULTIMA DUDA, para que sirve Ordered y Render - Updates()?.... facilitan algo?

EN FIN ESPERO ALGUNA AYUDA... Ando haciendo un juego GPL3 luego dejare el codigo x ahora no tiene nada de otro mundo ja... Saludos
solo software y hardware libressss!
(VIDA LIBRE, PARA EL USUARIO Y PROGRAMADOR!!!)
Avatar de Usuario
quiro9
 
Mensajes: 18
Registrado: Dom Dic 04, 2011 6:30 pm

Re: [PYG] DUDAS draw(),Updates(), clear() y BORRAR sprite

Notapor MrBB4 » Vie Dic 09, 2011 4:26 pm

Buenas =D

Primero un pequeño comentario. Me fijé que en una parte escribiste:
imagen = pygame.image.load(imagen)
imagen = imagen.convert()

La verdad es que esto se puede abreviar a:
imagen = pygame.image.load(imagen).convert()

Pues resulta que el programa va a leer punto por punto lo que le pongas, así que cuando se cruse con una función la va a aplicar y luego va a seguir leyendo los puntos pero aplicandolos al resultado de la función anterior. Como en tu caso, primero ejecutará la función pygame.image.load() y al resultado de esta le aplicará el .convert(). Tambien puedes hacer lo mismo poniendo una función dentro de otras, lo que leera desde dentro hacia afuera de los parentesis. Talves esto ya lo sabias, pero lo pongo por si acaso te sirve ;)

En cuanto a tu primera consulta. La fución pygame.draw() no existe. pygame.draw es un submodulo para dibujar formas simples como:
pygame.draw.aaline(...) #Dibuja una linea.
pygame.draw.arc(...) #Un Arco
pygame.draw.circle(...) #Un círculo
#para ver el resto de las funciones revisa la documentación escribiendo help(pygame.draw) en el inteprete de python.

Y así con otras figuras. Tambien las podes rellenar o escoger el color de la silueta. Cuando te interesa saber algo sobre cualquier función o módulo en python solo basta con escribir help(modulo.submodulo.función) y el interprete de python te mostrará la documentación con todas las funciones del modulo (o solo una función si la especificaste) indicando que piden y lo que devuelven las funciones. En general los modulos siempre vienen muy bien documentados. Si tienes alguna duda de como usarlo solo escribe help() sin ninguna variable y te dara la información de como usarlo. Si te lo explicara sin que lo hayas visto antes te confundiría.

Tu segunda duda trata sobre una clasica confución para todo aquel que nunca ha trabajado con entorno gráfico. Resulta que la imagen no se puede borrar, eso no existe. Asi que lo que se suele hacer es escoger una imagen de fondo y el programa actualizar constantemente la pantalla imprimiendo primero la imagen de fondo y luego el resto por sobre de esta. Con esto se logra hacer que cuando una imagen es eliminada ya no aparesca en el monitor pues no se puede imprimir una imagen que no existe, y tambien hace que cuando la imagen cambia de posición no se cree un doble de esta, sino que se reemplaza la anterior por la nueva imagen en una nueva posición, creando la ilusión de movimiento. Por ciento, cuando hablo de imprimir la imagen me defiero a utilizar función surface.blit()

Sobre tu ultima duda... la verdad es que no tengo idea :mrgreen: Así que ojalá que alguien más te pueda contestar, así yo tambien aprendo algo nuevo con este post =P


Es en este momento que recuerdo que dijiste que eres nuevo en el foro, así que te doy la bienvenida y, como se suele hacer, recomendarte varios textos a leer. Pero en este momento estoy algo peresoso :mrgreen: así que simplemente voy a citar un mensaje de hace unas semanas =P
Ya que estás recien empezando con python te recomiendo leer How To Think Like A Computer Scientist: Learning With Python. El problema de este es que la traducción al español solo está hasta la midad y ha estado así desde el 2006, pero te recomiendo que lo leas porque está muy bien explicado, y si no te complica el ingles mejor aún, porque así podes leer la versión entera. Tambien te aconsejo leer [url=launchpadlibrarian.net/18980633/Python%20para%20todos.pdf]Python Para Todos[/url], que sí está todo en español y tambien está muy bueno. Y por ultimo Invent Your Own Computer Games With Python, que está todo en ingles pero ayuda un montón. Que no te asusten tantos textos porque la verdad es que los tres hablan casi de lo mismo, pero cada uno tiene algo que el otro no asi que te ayudará mucho leerlos todos. Y además no es nada con todo lo que tendrás que leer a futuro si en verdad te interesa el mundo de la programación.

Y a esto le agrego que deberías revizar la sección de Ejemplos de Losersjuegos, la sección de Artículos de Losersjuegos y la documentación de pygame, traducida al español por los miembros de nuestro respetable foro: Losersjuegos.

Saludos y suerte en tu proyecto ;)
Avatar de Usuario
MrBB4
 
Mensajes: 49
Registrado: Mar Dic 14, 2010 11:39 pm
Ubicación: Purto Madryn, Chubut, Argentina.

Re: [PYG] DUDAS draw(),Updates(), clear() y BORRAR sprite

Notapor quiro9 » Vie Dic 09, 2011 5:40 pm

Primero un pequeño comentario. Me fijé que en una parte escribiste:
imagen = pygame.image.load(imagen)
imagen = imagen.convert()


La verdad es que esto se puede abreviar a:
imagen = pygame.image.load(imagen).convert()


=) si verdad ja, es que lo hice asi nomas... pero suelo hacerlo asi gracias

En cuanto a tu primera consulta. La fución pygame.draw() no existe. pygame.draw es un submodulo para dibujar formas simples como:
pygame.draw.aaline(...) #Dibuja una linea.
pygame.draw.arc(...) #Un Arco
pygame.draw.circle(...) #Un círculo
#para ver el resto de las funciones revisa la documentación escribiendo help(pygame.draw) en el inteprete de python.

Y así con otras figuras.


OK, me parecia... no estaba tan errado ja

Tu segunda duda trata sobre una clasica confución para todo aquel que nunca ha trabajado con entorno gráfico. Resulta que la imagen no se puede borrar, eso no existe.


Acostumbrado a C/C++ con GCC o G++ jaja, si es la primera vez q uso estos lenguajes...
Osea, redondeando la idea, "lo que hago sacandola con condicionales y banderas", esta relativamente en lo correcto...

lo que se suele hacer es escoger una imagen de fondo y el programa actualizar constantemente la pantalla imprimiendo primero la imagen de fondo y luego el resto por sobre de esta. Con esto se logra hacer que cuando una imagen es eliminada ya no aparesca en el monitor pues no se puede imprimir una imagen que no existe, y tambien hace que cuando la imagen cambia de posición no se cree un doble de esta, sino que se reemplaza la anterior por la nueva imagen en una nueva posición, creando la ilusión de movimiento. Por ciento, cuando hablo de imprimir la imagen me defiero a utilizar función surface.blit()


Si algo asi suelo hacer...

Sobre tu ultima duda... la verdad es que no tengo idea


Suele pasar... jaja, pero con el resto ya puedo seguir tranquilo...

Es en este momento que recuerdo que dijiste que eres nuevo en el foro, así que te doy la bienvenida y, como se suele hacer, recomendarte varios textos a leer.


Gracias... y los tomare en cuenta... =)

Saludos y suerte en tu proyecto ;)


Gracias denuevo y claro por tus respuestas...

/*-----------------------------------------*/
Si alguien puede aclarar lo ultimo de Ordered y Render - Updates(), muchisimas gracias de ante mano!!!
solo software y hardware libressss!
(VIDA LIBRE, PARA EL USUARIO Y PROGRAMADOR!!!)
Avatar de Usuario
quiro9
 
Mensajes: 18
Registrado: Dom Dic 04, 2011 6:30 pm


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