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