Problemas usando el PythonG para hacer un jueguecillo

Diego Moya dmoya en 4c.ucc.ie
Mie Ago 27 19:36:52 CEST 2003


On Tuesday 26 August 2003 17:08, bernard romera wrote:
> Se me ocurrió hacer una sencilla version del juego tron -ese q controlas
> una raya y tienes que intentar no chocar con las otras ni con la tuya
> misma- con el PythonG.

8-) ¿Tienes el código en alguna parte? Suele ser buena idea publicarlo tan 
pronto tengas algo escrito, aunque esté incompleto.


> Depués quité esto y probé a crear una matriz que representase todos los
> puntos de la pantalla. Todos tenían un valor inicial de 0. Al pasar la raya
> sobre un punto cambiaba el valor de 0 a 1. Si el valor es 1 la raya habría
> colisionado. Con esto supuse que el juego se ralentizaría mucho menos pero
> no es así.

Esa sería mi primera sugerencia, pero yo lo habría hecho directamente usando 
la propia información de la pantalla como matriz. La librería gráfica debería 
poder hacer esta lectura rápidamente. No se si en tu librería hay alguna 
función para leer el color de un punto, sin embargo.


> Para detectar en cada punto si se ha colisionado con una raya creé dos
> listas :recorridox y recorridoy, en las que se iba almacenando cada punto
> (x e y) en que la raya cambiaba de sentido. Así se comprobaba si cada nuevo
> punto estaba entre dos de esos puntos, pero entonces al hacerse la lista
> cada vez más grande, el juego se iba ralentizando.

Una técnica que suelen usar los juegos 3D para ser rápidos es el 
particionamiento del espacio en sectores. Cada sector almacena sólo la 
información de los objetos que contiene, y las comprobaciones sobre un objeto 
se hacen sólo respecto al sector en que se encuentra actualmente. 

Si no te funciona lo de leer directamente la matriz gráfica que dije antes, 
intenta adaptar esta técnica a 2D usando sectores rectangulares y almacenando 
los cambios de dirección que se produzcan en su interior.


> ¿Alguna otra idea?, ¿tal vez hay una mejor manera de hacer esto que con la
> librería de PythonG?
>

Generalmente no es cuestión de la herramienta que utilices, sino de que el 
algoritmo sea el más adecuado! ;-)

-- 
 Diego




Más información sobre la lista de distribución Python-es