Dos pequeñas dudas.

Consulte acerca de programas, técnicas, algoritmos etc.

Dos pequeñas dudas.

Notapor MrBB4 » Lun Oct 03, 2011 8:58 pm

Hola LosersJuegos =D

Hoy vengo con Dos pequeñas dudas.

La primera es en relación a pygame. Desde que comencé a utilizar pygame, en los diversos libros y tutoriales me he encontrado en que al momento de mostrar la imagen en pantalla hay dos funciones que todos utilizan: pygame.display.flip() y pygame.display.update(). Por definición hacen cosas distintas pero al parecer hay algo que no estoy entendiendo porque para mi el resultado es siempre el mismo, no veo diferencia alguna. ¿Que ventajas tiene usar una o la otra? ¿Que desventajas?

Pasando a mi segunda duda. ¿Que una clase herede de la clase object() es solo una formalidad o sirve para algo más?
Y ya que estamos con lo de object(), leyendo un post de un blog que @kiketon señaló hace un par de días (Link). me encontré con que el autor del post primero creó una clase que heredaba de object() y que tenía todas la funciones bacías. :?: Esta hacía de guión para subclases de la misma, pero en todas las subclases redefinió todas sus funcionen, la única similitud entre las subclases eran los nombres de las funciones y que todas heredarían de object(). ¿Algún comentario para que pueda entender la utilidad de esto? me imagino que lo hará por una cuestión de orden, pero me parece demasiado.

Les agradezco de antemano y les deseo la mejor de las suertes ;)
Avatar de Usuario
MrBB4
 
Mensajes: 49
Registrado: Mar Dic 14, 2010 11:39 pm
Ubicación: Purto Madryn, Chubut, Argentina.

Re: Dos pequeñas dudas.

Notapor MrBB4 » Mar Oct 04, 2011 1:14 am

Otra preguntita :mrgreen:
¿Como hago para importar un modulo que está en un paquete superior? Ley que dos puntos ".." equivaldría al paquete anterior, pero no logro hacerlo.

Gracias otra ves, y espero no ser de mucha molestia.
Avatar de Usuario
MrBB4
 
Mensajes: 49
Registrado: Mar Dic 14, 2010 11:39 pm
Ubicación: Purto Madryn, Chubut, Argentina.

Re: Dos pequeñas dudas.

Notapor Barajas » Mar Oct 04, 2011 1:53 am

Sobre la primera duda, es muy simple.
Según la documentación oficial de pygame (http://www.pygame.org/docs/ref/display.html); las dos funciones hacen lo mismo, pero de formas diferentes.
pygame.display.flip() : This will update the contents of the entire display. If your display mode is using the flags pygame.HWSURFACE and pygame.DOUBLEBUF, this will wait for a vertical retrace and swap the surfaces. If you are using a different type of display mode, it will simply update the entire contents of the surface.

When using an pygame.OPENGL display mode this will perform a gl buffer swap.


Esto se traduce como:

pygame.display.flip() : Esto actualizara el contenido de toda la pantalla. Si utilizas las banderas pygameHWSURFACE y pygame.DOUBLEBUF, esto esperara por un retraso vertical y el intercambio de las superficies. Si utilizas un modo de visualización diferente (sin usar las banderas), eso simplemente actualizara el contenido por completo de la superficie.

Cuando se usa la bandera del modo de visualización, pygame.OPENGL , esto llevara un intercambio del buffer gl (la parte de OpenGL dedicada al movimiento de vértices)

Mientras que pygame.dysplay.update()...

update portions of the screen for software displays
pygame.display.update(rectangle=None): return None
pygame.display.update(rectangle_list): return None

This function is like an optimized version of pygame.display.flip - update the full display Surface to the screen for software displays. It allows only a portion of the screen to updated, instead of the entire area. If no argument is passed it updates the entire Surface area like pygame.display.flip - update the full display Surface to the screen.

You can pass the function a single rectangle, or a sequence of rectangles. It is more efficient to pass many rectangles at once than to call update multiple times with single or a partial list of rectangles. If passing a sequence of rectangles it is safe to include None values in the list, which will be skipped.

This call cannot be used on pygame.OPENGL displays and will generate an exception.


Traducido:

Actualiza porciones de la pantalla por visualización de software.

Esta función es parecida y optimizada de pygame.display.flip(). Actualiza por completo la pantalla para visualizaciones de software. Esto permite solo la actualización de una parte de la pantalla, en lugar de toda la zona. Si no revise argumentos, se actualiza toda la superficie como pygame.display.flip() (lo que sigue es un resumen de lo que hace flip ...)

Puedes pasar la función de un rectángulo, o una serie de rectángulos. Es más eficiente pasar rectángulos al mismo tiempo, que a llamar a la actualización varias veces que solo con una lista parcial de los rectángulos. Si se pasa una secuencia de rectángulos que es seguro incluye un valor None (nulo) en la lista, que eso sera evitado.

Esto no se usara con la bandera pygame.OPENGL, eso generara una excepción


No sé si esto responda la primera duda, o la revuelva mas...

Sobre la segunda, "object" es solo una palabra reservada para las clases nuevo estilo en Python, son clases que buscan evitan las relaciones en diamante (http://es.wikipedia.org/wiki/Problema_del_diamante) en la herencia múltiple....

Espero que esto sea lo que buscas :)
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Dos pequeñas dudas.

Notapor MrBB4 » Mar Oct 04, 2011 12:16 pm

Ganial! :D Ahora tengo todo claro. Muchas gracias Barajas.
Avatar de Usuario
MrBB4
 
Mensajes: 49
Registrado: Mar Dic 14, 2010 11:39 pm
Ubicación: Purto Madryn, Chubut, Argentina.

Re: Dos pequeñas dudas.

Notapor Juanxo » Mar Oct 11, 2011 1:08 am

Buenas MrBB4,

para completar lo que te comentó barajas del object, decir que el hecho de que creara una clase inicial con todos los métodos vacíos, no era por orden, si no para poder hacer uso del polimorfismo.

Si te fijas en el main y en el gameManager, verás que excepto en el menustate.MenuState(), en ningún otro lado distingue el tipo de gameState que se trata ( menuState, optionState), pero ese código se ejecutaría para cualquiera de los 2 estados. De esta manera, conseguimos que, mediante una interfaz común (gameState), definimos unos "requisitos mínimos" que todos los gameState deberán cumplir para poder funcionar en el gameManager. Si creamos una clase que herede de gameState y cambiamos esas funciones, ya tendremos un nuevo estado que podrá funcionar sin problemas con gameManager, y ni hemos tocado el gameManager.



Esto es una explicación bastante burda de lo que es el polimorfismo, pero en internet seguro que te lo explican mejor que yo
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: Dos pequeñas dudas.

Notapor MrBB4 » Mar Oct 11, 2011 1:35 am

Muchisimas gracias, se entendío perfectamente lo del polimorfismo. De hecho hasta ahora no me habia dado cuenta de que se pudiera utilizar de esa manera. Muy util. Denuevo gracias.

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

Re: Dos pequeñas dudas.

Notapor kiketom » Mar Oct 11, 2011 6:14 am

Juanxo escribió:Buenas MrBB4,

para completar lo que te comentó barajas del object, decir que el hecho de que creara una clase inicial con todos los métodos vacíos, no era por orden, si no para poder hacer uso del polimorfismo.

Si te fijas en el main y en el gameManager, verás que excepto en el menustate.MenuState(), en ningún otro lado distingue el tipo de gameState que se trata ( menuState, optionState), pero ese código se ejecutaría para cualquiera de los 2 estados. De esta manera, conseguimos que, mediante una interfaz común (gameState), definimos unos "requisitos mínimos" que todos los gameState deberán cumplir para poder funcionar en el gameManager. Si creamos una clase que herede de gameState y cambiamos esas funciones, ya tendremos un nuevo estado que podrá funcionar sin problemas con gameManager, y ni hemos tocado el gameManager.



Esto es una explicación bastante burda de lo que es el polimorfismo, pero en internet seguro que te lo explican mejor que yo


Exacto ;)
Yo no lo hubiera explicado mejor jejejejeejej :D
Avatar de Usuario
kiketom
 
Mensajes: 82
Registrado: Lun Ene 03, 2011 3:01 pm
Ubicación: Valencia, España


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 1 invitado

cron