Juego en Python

24 views
Skip to first unread message

Diego Andrés Sanabria Martin

unread,
May 17, 2006, 5:32:15 PM5/17/06
to sl-...@googlegroups.com
Saludos a todos!!!

Por cuestiones academicas estoy intentando programar un juego en
python y tengo lios con el movimiento del mico... El juego se basa en
uno de los ejemplos que bienen con pygame, y funciona, solo que
necesito que se mueva rápido y no tengo ni idea de como hacer eso...
--
http://www.el-directorio.org
El sitio de linux y el Software Libre en Colombia

"Si no sabes ser fuerte pero tampoco sabes ser débil,
entonces serás derrotado"
Szun Tzu

"Hay pecados cuya fascinación está más en el recuerdo que en la
comisión de ellos." Oscar Wilde

chimp.tar.bz2

Manuel Alejandro Cerón Estrada

unread,
May 17, 2006, 10:53:56 PM5/17/06
to sl-...@googlegroups.com
Hola Diego,

A vuelo de pájaro te puedo decir que para aumentar la velocidad del
mico debes aumentar los valores de Chimp.movex y Chimp.movey (líneas
85 y 86 respectivamente).

Por ahí en algún lugar de mi disco duro tengo un par de clases de
pygame que muestran cómo mover sprites a una velocidad dada, por
ejemplo a 20 píxeles por segundo, utilizando FPS (cuadros por segundo)
ilimitados, o mejor dicho, lo máximo que de la máquina. El problema
que he visto con este enfoque es que, no sé por qué, no se ve muy bien
en monitores del tipo LCD, además de que el consumo de CPU es siempre
100%. Sin embargo, la ventaja es que los movimientos rápidos son mucho
más fluidos si se tiene un PC más potente. El otro enfoque, el de
limitar los FPS, el cual estas usando (clock.tick()), no tiene esos
problemas pero si el inconveniente de que los movimientos rápidos se
ven más bruscos.

Un saludo,

Manuel.

P.D si necesitas las clases las puedo buscar y pasártelas.


2006/5/17, Diego Andrés Sanabria Martin <dieg...@gmail.com>:


--
· Manuel Alejandro Cerón Estrada
· cero...@gmail.com
· http://ceronman.blogspot.com

Diego Andrés Sanabria Martin

unread,
May 18, 2006, 12:40:00 PM5/18/06
to sl-...@googlegroups.com
Hola Manuel,

El problema con aumentar Chimp.movex y Chimp.movey se ve como con
"saltos" y clock.tick() no está sirviendo pues no importa el valor que
ponga se demora igual...

Manuel Alejandro Cerón Estrada

unread,
May 18, 2006, 2:02:58 PM5/18/06
to sl-...@googlegroups.com
Hola Diego,

clock.tick(x) sirve para limitar el juego a x FPS. Si quitas el
clock.tick(), el juego funcionará a la máxima velocidad que puede tu
CPU. Así que, tal cómo estan las cosas ahora, la única forma de
aumentar la velocidad es aumentar los movex y tener el efecto de
saltos.

Una alternativa que tienes para aumentar la velocidad es aprovechar
las ventajas de las tarjetas aceleradoras 3D para dibujar más rápido.
No estoy seguro, pero creo que pygame tiene unas opciones para crear
superficies aceleradas por hardware. Sin embargo la mejro opción en mi
opinión es usar superficies de pygame como superficies de OpenGL, creo
que hay una librería que hace eso, mira en la sección de librerías de
pygame.org. Mejor aún sería que usaras OpenGL directamente.

Hay otra opción, si no quieres usar aceleración por hardware, es
simplemente optimizar tu código. Viendo rápidamente te puedo decir que
puedes uptimizar el modo de actualización de la pantalla. La tecnica
de doble buffer (Double Buffering) que estas usando en este momento es
un poco lenta y tal vez por eso no estas obteniendo la mejor
velocidad. Una mejor opción es actualizar sólo las regiones de la
pantalla que cambian en cada iteración. Pygame facilita esto a través
de pygame.display.update(rects), en dónde rects es una lista de
rectangulos para actualizar. La clase Sprite también te permite
obtener los rectangulos que necesitas fácilmente. Esta técnica es
conocidad como "Dirty Rectangles", por si quieres averiguar más en
Internet.

Un saludo,

Manuel.

2006/5/18, Diego Andrés Sanabria Martin <dieg...@gmail.com>:


>
> Hola Manuel,
>
> El problema con aumentar Chimp.movex y Chimp.movey se ve como con
> "saltos" y clock.tick() no está sirviendo pues no importa el valor que
> ponga se demora igual...

Reply all
Reply to author
Forward
0 new messages