viernes, 19 de noviembre de 2010

Paso atras, paso adelante...

Bueno, ahora si que vuelvo:

He rehecho el menu. De nuevo. Ocurrio que me daba problemas el anterior al concatenar varios submenus con los eventos del raton, que no los habia tenido en cuenta de un principio.

Ahora ha quedado bastante mejor todo, mucho mas pq he eliminado ciertos detalles de fealdad que me torturaban el subconsciente. Ya todos los miembros de menus son de tipo item y tienen sus propios metodos onKeyDown, onMouseIn, out, over.... Y los que hagan falta, vamos.
Ya controla eventos de mouse :)

Ha quedado, de nuevo, bastante bonito y funciona mucho mas claro. Esto solo es la base de lo que sera el menu (evidentemente habra que ponerlo bonito) pero al menos estructuralmente 'ya esta' (por que entrecomillo esto? por la separacion entre el 'quit' y el 'options', busque que ocurriera eso pq me parecia molon, de hecho se separan solo cuando se muestra el submenu y lo hacen a una velocidad variable que depende de el valor de un parametro y si quiero que no se separen, como los menus de toda la vida, tendria que cambiar los eventos del raton, por ahora se queda asi, igual si algun dia me aburro...).

Ahora debo rehacer el item que genera la conexion como antes (esto es, hacer un item 'textArea' con autoscroll para logear la conexion, que se conecte y que ceda el control al juego)

martes, 16 de noviembre de 2010

Sigo, aunque no escriba

Bueno, he hecho alguna cosa digna de mencion:

Estoy haciendo un interfaz para empezar el juego bastante mas digno que el que habia (lo he rehecho entero). Los problemas que me ha dado son que al poder mostrar menus y submenus aparte de que el evento 'pulsar Enter' sea comun para todos los elementos de cada menu han hecho que haya que tener un control de que control esta activo en la estructura... Ha quedado bastante limpio. Ademas puedo destacar el item seleccionado con una imagen o incluso una animacion facilmente ademas de cambiar su tamaño o mostrarlo u ocultarlo...

En la imagen adjunta muestro un menu en el que solamente pinto elementos y un recuadro gris detras. He hecho pruebas de cambiar el tamaño del rectangulo, cambiarlo por una imagen, que se desplace suavemente entre las posibles selecciones, que se desplace discretamente (a saltos: uno en cada linea), que un item despliege un submenu aumentando lentamente su tamaño hasta mostrarlo... y la verdad es que ha quedado bastante coherente todo y cambiar el comportamiento es bastante facil.

Ademas he cambiado la logica de crear la conexion y obtener la ID de cliente a este menu (lo hace un elemento que tiene una especie de 'caja de texto' que he hecho yo, tambien), en principio no parece buena idea pero trato de evitar en python el multithreading... En el cliente no ocurrira. Pero bueno, el menu bastante bien, me esta gustando.


El objetivo actual es 'acabar la partida decentemente' esto es: que cando muera un jugador el resto sigan jugando y el vuelva al menu principal. Pero creo que me va a costar algo ya que no se que hacer: tiene que meter high score si ha puntuado lo suficientemente bien (y eso se lo tiene que decir el servidor), tiene que tener la posibilidad de continuar, tiene que ver la partida despues de muerto mientras decide si continuar... Y lo peor de todo, si decido que haya una persistencia de jugadores (sus puntos desbloqueen/mejoren cosas) como lo mezclo con todo lo anterior? como sumo su 'dinero' o lo que se utilice para comprar cosas? Como no tengo muy claro que quiero hacer con todo esto mantendre el tema por unos dias en barbecho mientras hago que el menu reciba eventos del raton y un GUI para el juego (barra de vida, puntuacion y tal, en plan medio basico)

Ademas hay otro punto negativo: en el curro empiezan a poner el aire acondicionado y salgo todas las tardes con la cabeza como un bombo...

martes, 2 de noviembre de 2010

Hoy....

Bueno....

El fin de semana probe con amaia a ver como funcionaba en local con 2 portatiles: aceptable, pero tenia mucho log (2 lineas por ciclo minimo en el servidor) y no iba del todo fluido (estoy cuasiconvencido de que era eso, no me di cuenta pq lo ejecute todo el rato en remoto y se me olvido quitarlo).

He dado algun retoque a lo de 'buscar enemigos a la vista'  para apuntar los cañones de la corellian corvette, pero me queda algun detallito, de mañana no pasa.

En fin, hoy tambien he hecho alguna otra cosa: he cambiado el contenedor de objetos vivos, ahora en vez de contener datos de las naves y balas enemigas (dos arrays) y las naves amigas y sus balas (cada nave con su array de balas, lo hice para saber a quien sumarle los puntos cuando una bala amiga mataba a una nave enemiga, pero llegue a la conclusion de que era mejor que cada bala supiera quien la ha disparado, de modo que ahora los contenedores de amigos y enemigos contienen los mismos datos: un array de naves y otro de balas). Ha bajado el numero de bucles...

Ha estado bien pq aunque no parecia un cambio baladi no me ha costado nada... la verdad es que creo que me esta quedando un codigo cada vez mas bonito.

Ademas ya he decidido por donde sacar las naves muertas del mapa: cuando una nave de un jugador muera escribira en su container su id_client y su puntuacion y el mapa se lo dara al motor. Ahora a ver que hace el motor con esos datos... :P

El viernes....

Hoy he cambiando algunas cosas de ayer pero no he podido probar NADA...

Lo de los containers... aun no lo he cambiado al container pero si lo he organizado mejor, me ha quedado en una funcion que practicamente pudiera ser estatica... El problema que veia a que la nave objetivo mas cercana la buscara el contenedor de objetos 'vivos' (enemigos y amigos) es que cada nave tendria que tener una referencia al contenedor amigo o enemigo en el que esta y al contenedor de objetos vivos...  Actualmente me basta con darle una referencia al contenedor de enemigos suyos y no me gusta nada la idea de darle esa referencia... como para aumentarlas....

Pero bueno, al menos ha quedado bastante mejor si esos 'magic numbers' ...

Lo de las torretas tambien esta sin probar y tambien ha sido muy limpio, me ha bastado con cambiar una linea en el metodo que obtiene los objetivos para toda nave o misil que necesite un objetivo....

Lo de la muerte del jugador no lo he tocado aunque lo he pensado bastante... todavia me ofrece muchas dudas....Tengo el problema de que las IDs de los clientes estan logadas a su posicion en el array de naves amigas y ese array cambia cuando muere una nave... creo que voy a hashear los ID's de las naves y punto, si en el futuero se me ocurre una formula mejor la metere....