Proyecto a elegir y Organización

Aquí encontrará diversas conversaciones sobre el rumbo del proyecto y tareas que se planifican a corto plazo.

Cual Desarrollamos

La encuesta terminó el Mié Abr 02, 2008 9:17 pm

PONG
1
13%
TETRIS
5
63%
Naves (Scrolling vertical)
2
25%
 
Votos totales : 8

Notapor endaramiz » Jue May 08, 2008 6:26 pm

Hola lucesita, seré breve porque tengo poco tiempo. No sé cuantas cosas te has instalado ya, pero si no son muchas, podrías mirarte una distribución de Ubuntu (en este foro se ha hablado) que ya vienen con paquetes instalados orientándolo al desarrollo de videojuegos.

Saludos.

PD: también es CDLive (se puede utilizar sin instalarlo)
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor Dokan » Jue May 08, 2008 9:17 pm

Gracias Alex por las molestias. Al final era más sencillo que todo eso, acabo de llegar de trabajar y he visto que hugo también había contestado en el tema que publiqué sobre el error. Echalé un vistazo porque no tiene pérdida. Ahora mismo estoy instalando DDD para probarlo y contestarle.
En cuanto al modo de actualizar el repositorio no sabía que estuviera tan limitado, me parece perfecto seguir como estamos.
He conseguido ejecutarlo y me he quedado maravillado con los avances que habeis hecho.
Ya no se ve el bloque crecer hacia abajo, si no que se lo ve cayendo como tiene que ser.
Colisiona perfectamente cuando llega abajo, y cuando cae sobre otro bloque, sin embargo no colisiona por el lateral de los bloques. Para comprobar esto último haz una torre en medio de varios bloques y verás como puedes atravesarla de lado a lado sin problemas.
----
Lucas, no te arrepentirás de utilizar Ubuntu, al contrario, olvidarás Windows.
Si tienes alguna duda consulta el wiki de guía ubuntu o preguntame, te ayudaré en lo que pueda.

EDITO
Olvidaba comentar que para poder ejecutar LineCube lo único que he tenido que hacer es modificar las extensiones de las imágenes a minúsculas (de PNG a png) puesto que linux sí diferencia entre éstas y mayúsculas. Efectivamente, para darcs esta modificación es como si faltaran dos archivos y hubiera otros dos archivos nuevos, pero utilizando el comando «darcs whatsnew -l» veo que reconoce automáticamente las modificaciones, entonces ya no sé si hay que crear un parche o simplemente modificar las extensiones en el repositorio original. Casi que me espero para no meter la pata.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

¿subversion?

Notapor endaramiz » Vie May 09, 2008 2:30 pm

Hola he visto que habéis tenido varios problemas con Darcs. Además, pienso que es un poco incomodo el tener que crear un parche, luego aplicarlo, y luego subir (si no me equivoco, es el método que utilizáis).
Cuando se hizo la votación del programa de control de versiones se pensó que era una mala idea uno centralizado por que hace falta un servidor. Pero google code (hablaré de google code porque hice pruebas con él, pero creo que SourceForge funciona igual) ya tiene el servidor configurado y se agilizan mucho las tareas de actualizar utilizando Subversion (solamente hace falta un comando y se graban los cambios en el servidor). hugoruscitti y Geo ya lo dijeron pero creo que esta opción no se ha valorado lo suficiente. Como ya sabéis, yo no estoy colaborando en el código así que no os estoy pidiendo que os cambiéis, solo es mi opinión.

Os dejo esta página que explica lo básico de subversion bastante bien.

Y pido disculpas si ya se había hablado de subversion.
Última edición por endaramiz el Vie May 09, 2008 5:11 pm, editado 1 vez en total
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor Alex_13_estu » Vie May 09, 2008 2:53 pm

Rápidamente me paso (me quedan 5 minutos) para avisar de que es probable que no pueda pasarme durante el día de hoy y el dia de mañana por el foro, por lo que subo los cambios que le he hecho al código a SF, aunque algunos estén sin acabar para que podáis echarles un vistazo y seguir trabajando sobre ellos. Simplemente he arreglado un pequeño bug que tenía la función de bajada y he añadido una función que elimina gráficamente las filas completas. Aún queda que las elimine de la lógica del juego, pero ese era el siguiente paso que pensaba hacer un día de éstos. Si alguien lo hace por mí, pues perfecto. Ya leí todos vuestros mensajes y trataré de contestarlos más tarde. SImplemente decir que ya cambié las extensiones de los archivos que le daban problema a Dokan.

Un saludo.

P.D.:Si os fallara el repositorio, cambiadlo por uno viejo que tengáis en vuestro ordenador, porque no tengo tiempo a probarlo.

EDITO:

Lo siento, pero el servidor se ha caido o algo así mientras subía el archivo, porque soy incapaz de acabarlo de subir, así que tenemos un grave problema: el repositorio está a medio subir y el viejo está a medio eliminar en una carpeta llamada ELIMINAR. Si alguno de vosotros es capaz de conectarse más tarde, por favor, que elimine el repo y que vuelva a subirlo para que todo quede de nuevo estable. Son cosas de la prisa... A ver si lo solucionamos cuanto antes.

Un saludo.

EDITO 2:

Bueno, acabo de conseguir conectarme un rato a intenet y ya he arreglado lo del archivo, ya funciona todo de nuevo. Deberíais de poder hacer el "darcs pull" para tener las actualizaciones que os resumo aquí:

- Corrijo un bug que había cuando bajaban las figuras, porque se comprobaba la colisión después de haber bajado (lo que provocaba que algunas figuras entraran dentro de otras)
- Arreglo los archivos que tenían la extensión que le provocaba conflictos a Dokan.
- Comienzo a desarrollar un sistema de eliminación de filas completas (se comprueba si la fila se completa y se elimina la figura de la pantalla, aunque todavía queda en el mapa de colisiones, por eso, aunque no se vea nada, las figuras chocan al llegar a una fila que fue eliminada).

Básicamente, esos son los cambios. Lo próximo a desarrollar son dos cosas: acabar el sistema de eliminación de filas (de modo que desaparezcan de la pantalla las figuras, se desactven y limpien el mapa de colisiones) y los choques laterales (igual que se comprueba los choques verticales hacia abajo, debemos comprobar los choques laterales con los bordes y con las figuras). Además, si probáis varias veces el programa es posible que encontréis algún bug que habrá que corregir en breve.

Nada más. Echad un vistazo al programa para probarlo y me comentáis.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Dokan » Lun May 12, 2008 10:52 pm

Disculpame Alex por no echarte una mano con ese problema, pero he tenido poco tiempo este fin de semana.
Ahora estoy libre un par de días y quiero dedicarlo al juego. Hoy he estado revistando e intentando comprender lo que se ha hecho y de paso he corregido un bug, se atravesaban las figuras cuando se movia en el ejeX.
He tenido problemas para aplicarlo en el repositorio de sf.net, me da error, primero ...
«darcs failed: Error applying patch to recorded!
Running 'darcs repair' on the target repository may help.
user error (Error applying hunk to file ./cuadricula.cpp)»
... después he probado «darcs repair» y luego he aplicado el parche y me ha dado conflictos...
«There are conflicts in the following files:
./cuadricula.cpp ./figuras.cpp ./figuras.h ./principal.cpp

darcs failed: Refusing to apply patches leading to conflicts.
If you would rather apply the patch and mark the conflicts,
use the --mark-conflicts option to apply.»
... he vuelto a hacer un «darcs get...» y aplicar el parche y no ha habido problema, pero al bajarme el repositorio original no me deja parchear.
No se que falla al aplicar el parche, así que de momento lo dejo estar hasta tener alguna respuesta.
Iré cambiando cosas en mi repositorio, que por lo menos iré aprendiendo algo.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

Notapor Juan Carlos » Jue May 15, 2008 2:05 am

Hola, me he bajado de sourceforge el codigo usando darcs (¿es el ultimo codigo disponible?). Bien le he encontrado un pequeño error, o mejor dicho un posible error. Paso a explicar.

La clase Bloque posee un constructor que reserva memoria dinamica, una memoria para una superficie SDL. Ademas, esta clase posee una funcion "Finaliza" que se encarga de liberar dicha superficie.
Pero que sucede si uno olvida llamar a la funcion "Finaliza"? Bueno, como es de esperarse se produce una fuga de memoria.
He aqui la magia de los lenguajes orientados a objeto. Al igual que existe el concepto de "constructor" tambien existe el concepto de "destructor". Dicho destructor es llamado por el lenguaje cuando el objeto creado se sale de ambito. Por ejemplo:

Código: Seleccionar todo
int fun() {
...
Bloque a;  //Construye el objeto usando el "constructor"
...
} //Aqui, de forma automatica, se llama al destructor de "a" y luego finaliza la funcion "fun"


Como es de esperar, el lenguaje permite codificar el destructor y lo ideal es que éste contenga el codigo para liberar memoria dinamica.

Código: Seleccionar todo
class Bloque {
      private:
                 ....
       public:
                 ....
                ...
                 Bloque();  //constructor
                 ~Bloque(); //destructor, sip con un ~ delante y ademas debe tener el mismo nombre que la clase

                 ...
}

La implementacion de dicho constructor es analoga a la del constructor

Código: Seleccionar todo
...
Bloque::~Bloque(){ //no retorna ni recibe nada
...
... //libera memoria o cualquier otra tarea que se desee realizar justo antes de que el objeto muera
...
}
...

Como pueden ver, esto permite evitarse muchos problemas ya que uno puede olvidarse de llamar a "Finaliza" pero es imposible no llamar al destructor ya que el llamado lo hace el lenguaje.

Finalizando, como puedo subir codigo al repositorio usando darcs? La verdad es que soy muy nuevo en el uso de darcs o en cualquier otro programa de control de versiones.

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor Alex_13_estu » Jue May 15, 2008 2:30 pm

Bueno, antes que nada pedir perdón por haberme ausentado estos días: no he podido más que leer vuestros mensajes hoy y no he desarrollado nada nuevo, porque los estudios empiezan a quitarme bastante tiempo. Y de aquí a finales de junio eso va a ser prácticamente constante, así que trataré de sacar todo el tiempo posible para pasarme por aquí y desarrollar algo, aunque no aseguro nada. Los fines de semana sí que trataré de mantenerme muy activo para compensar el resto de la semana, a ver si lo consigo. Ahora, a responder:

En cuanto a lo que dijo Juan Carlos, decir que ya conocía los destructores y su uso, pero como casi nunca los había usado no se me ocurriera añadirlos al código. Ahora que lo has mencionado, lo haré cuanto antes. Pero, ¿qué pasa cuando un objeto es global? Se supone que los destructores actúan al finalizar el ámbito del objeto, pero su es global no tengo muy claro el comportamiento... Buscaré algo acerca de ésto, pero agradecería vuestra ayuda. En cuanto a lo de cómo usar Darcs, hay muchas guías por Internet, pero si quieres algo rápido, echa un vistazo a esta mini guía que posteé yo hace unos días. No está completa, pero para comenzar y tener una ligera idea te puede servir. Creo que no me queda nada por decir.

En cuanto al mensaje de Dokan... Por el mensaje de error que pones que te dá Darcs parece que no es capaz de aplicar parches a los archivos "cuadricula.cpp", "figuras.cpp", "figuras.h" y "principal.cpp". O sea, probablemente, todos los que modificaste. Ahora bien, el por qué... Eso ya es otro tema. A mí hasta ahora me había dado estos errores al intentar actualizar el "LÉEME" y el "losersdevelopers.txt", y como ya sabes, no fui capaz de solucionarlo. Así que siento que no podré ayudarte mucho. No sé, se me ocurre que hagas un nuevo "darcs get" y generes los parches de nuevo desde esa copia, para tratar de aplicarlos después... Ojalá sepamos la razón pronto y lo podamos solucionar, buscaré información en Internet de ese error. En cuanto a lo del "pseudoerror" de que atravesaba las figuras en el eje X... Bueno, no es por criticar, pero no era un error. ¡Simplemente todavía no habíamos implementado un método que comprobase las colisiones en ese eje! Así que es de agradecer el trabajo que has hecho al hacerlo ya tú, porque es una cosa menos que tenemos que hacer. A ver si pronto lo puedes subir a SF.

Por último, voy a hablar de próximas actualizaciones. En principio, tenía intención de acabar con el tema de eliminación de filas, consiguiendo que, además de desaparecer gráficamente, se eliminaran del mapa de colisiones. Pero me está costando más de lo que pensaba (aunque hasta ahora no he podido dedicarle más de 40 minutos seguidos), por lo que a lo mejor se retrasa un poco. Más que nada, el problema es que tengo que modificar funciones que yo ya consideraba finalizadas, por lo que me estoy liando un poco. A ver si dentro de poco consigo implementarlo, lo subo a SF y os aviso.

Nada más. Simplemente decir a todo el mundo: ¡ánimo, sé que podremos acabar este primer proyecto! Y la gratitud será muy grande (al menos en mi caso, porque nunca había hecho un juego completo y con gente como vosotros es más fácil y las ganas se mantiene de principio a fin), así que a trabajar duro.

Un saludo.

EDITO:

Bueno, muy rápidamente me paso por aquí para agradecer a Juan Carlos su rápida respuesta. Gracias a eso ya he hecho unas actualizaciones que resumo aquí:

* Cambié las funciones "Finaliza()" de las clases "Cuadricula" y "Block" por destructores, ya que estas funciones lo único que hacían era liberar memoria, por lo que considero que son mejores los constructores.
* Las figuras, una vez se hayan borrado todas sus filas y, por lo tanto, ya no tengan nada que las represente en pantalla, se desactivan, para dejar ese espacio del array de figuras para otras nuevas. Hasta ahora, al no hacerse ésto, llegaba un momento (a las 200 figuras) en que se dejaban de generar. Ahora ésto no debería suceder, ya que, o se llena la pantalla o se eliminan algunas figuras dejando hueco para otras.
* Compruebo las colisiones en el eje X, por lo que las figuras ya no se deberían atravesar. Sé que ésto ya lo había hecho Dokan, pero como no lo había subido, me parecía apropiado hacerlo para poder continuar. ¡Ojo! Ésto no quiere decir que no se analice el método de Dokan y, si es mejor, se usará el suyo. Digamos que mi método es "provisional".
* Y lo más increíble de todo... El archivo LineCube.layout me estaba dando unos problemas extraños para actualizar y todavía no sé muy bien como lo logré actualizar... ¡Y de paso logré actualizar el Léeme! Así que probad y me decís si lo leéis bien.

Pero no todo es tan bonito... No sé por qué, si yo tengo el repositorio original en mi ordenador en una carpeta, por ejemplo "LineCube" y le hago un "darcs get LineCube" no hay ningún problema. Pero si, por el contrario, hago el "darcs get" desde "http://linecube.sourceforge.net/LineCube", pues nos han fastidiado porque no va. No entiendo muy bien el por qué, ya que ambos repositorios son el mismo, sólo que uno está en SF y el otro en mi ordenador... Si os pasa a todos lo mismo tendré que volver a subir el viejo repo y ver por qué sucede ésto, porque me tiene muy intrigado. Espero respuestas para poder arreglarlo (o no).

Un saludo.
Última edición por Alex_13_estu el Jue May 15, 2008 8:31 pm, editado 1 vez en total
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Juan Carlos » Jue May 15, 2008 4:08 pm

En teoria, si el objeto es global este es destruido cuando el programa finaliza. El fin de semana ya me pondre a explorar el codigo de manera mas profunda y tratere de implementar alguna funcion.

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

No pudecon elrepositorio

Notapor drincast » Sab May 17, 2008 8:26 pm

Hola losersdevelopers, por aquí de nuevo, no he podido actualizar, ayer me baje el repositorio utilizando “darcs get http://linecube.sourceforge.net/LineCube, listo todo bien hasta el momento, me fui para mi casa y realice modificaciones.

Claro que al darle el comando “darcs whatsnew –l”, mostraba que todos los archivos deben ser añadidos como si fuera la primera vez, no se que paso, porque si muestra el nombre de los parches con darcs changes.

Bueno realice los cambios, adicione todo de nuevo y hoy utilice el comando darcs pull, el cual me indicaba que no había modificaciones en el repo original, entonces procedí a crear el parche, luego me baje el repode SF con WinSCP, guarde una copia y en la otra aplique el parche, pero se quedo aplicándolo indefinidamente, no seque paso, no seque hice mal, eso si deje el repo de SF tal cual como estaba.

Creo que de pronto el erro es el que mencione mas arriba, prueben, copien el repo con darcs get, y en esa copia ejecuten el comando darcs whatsnew –l y verán que parece que ningún archivo esta añadido al repositorio.

Bueno, pasando a otro tema, quiero felicitaros han trabajado duro, mire el códigos ejecute el proyecto, van bien, mis cambios no eran gran cosa adicione unos gráficos, e hice que la figura apareciera al inicio de un color de forma aleatoria.

No me queda más que decirles que sigan adelante, ánimos, estamos por buen camino así sea a cortos pasos, pero se aprende y se aprecia lo que se hace.
drincast
 
Mensajes: 34
Registrado: Mié Mar 12, 2008 4:23 pm
Ubicación: Colombia

Notapor Alex_13_estu » Dom May 18, 2008 12:00 pm

¡Hola drincast! Encantados de tenerte de nuevo por aquí. Y deseosos de ver esos cambios que has hecho... cuando solucionemos el problema del repo. En mi anterior mensaje ya dije que es probable que hubiese problemas en el repo. Seguramente, al hacer el "darcs get" te dé un problema al final, algo así como "Unnaplicable patch". Ese problema lo da el parche número 21 y, más concretamente, el archivo "LÉEME.txt". Al menos eso me pasa a mí... Ahora bien, este problema es realmente de "Expediente X", o al menos me lo parece a mí. Sabemos que el "darcs get" no funciona, pero, ¿po qué? Voy a poneros aquí unas instrucciones, seguidlas y decidme si al final os pasa lo mismo que a mí (es realmente extraño):

1.- Haz un "darcs get" al repo de SF, por ejemplo, de la siguiente manera:
Código: Seleccionar todo
darcs get http://linecube.sourceforge.net/LineCube Repo1

Seguramente dé el problema que dije antes al aplicar los parches. Pero lo que nos interesa es que tenemos la copia del repo en nuestro ordenador, con el nombre "Repo 1".
2.- Bájate el repo de SF a tu ordenador con el WinSCP.
3.- Haz un "darcs get" a ese repo original que bajaste con el WinSCP, por ejemplo, así:
Código: Seleccionar todo
darcs get LineCube Repo2

Ahora viene lo increíble... ¿A que de esta forma no te dio ningún problema al aplicar los parches? Y lo que es peor, si vas al "Repo 1" (que lo obtuvimos con un darcs get a SF) y haces "darcs whatsnew -l" te pondrá que ha yque añadir todos los archivos nuevamente al repo. Sin embargo, si haces ese mismo "darcs whatsnew -l" sobre el "Repo2" (que lo obtuvimos de una copia del repo original bajada con WinSCP) todo estará en orden y te pondrá "No changes".

¿No os parece extraño? El "darcs get" se lo hacemos en los dos casos al mismo repositorio original, sólo que en el primer caso ese repo está en internet (en SF.net) y en el segundo caso el repo original está en nuestro PC. ¿Entonces, por qué falla uno y el otro no? ¿Se debe a la forma en que Darcs trabaja con repositorios en internet o es culpa de SF o de WinSCP, que hace algo raro con los archivos? No sé, pero a mi esto me tiene bastante intrigado, así que creo que deberíamos tratar de solucionarlo. Si no lo conseguimos, reemplazamos de nuevo el repo de SF por otro viejo que funcionara y seguimos adelante, pero pienso que no estaría de más dedicar unos días a pensar en este fallo. Si a alguien se le ocurre algo, que lo postee cuanto antes para que posamos arreglar esto lo antes posible.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Juan Carlos » Lun May 19, 2008 1:57 am

Hola,

Me he bajado el repositorio usando el comando get desde sourceforge (igual como lo menciona Alex) y me ha aparecido el error que él menciona.

Aun asi el resto del codigo parece estar bien. Pero no puedo subir nada nuevo. Le paso a comentar.

Construi un nuevo archivo con mi editor de texto, luego lo agregué a darcs con el comando "add" y lo grabé con el comando "record". Luego lo quise subir al repositorio original con "push" pero me tira error.
Leyendo un poco, encontre que era necesario setear una variable llamada "Darcs_apply_http". Una vez que la definí, volví a llamar al comando "push" pero me tira un error muy raro.

Código: Seleccionar todo
darcs: /home/yo/linecube/repo1/darcs## openBinaryFile es not exist (no such file o directory)


Donde dice "##" darcs pone una serie de letras y numeros. Cada vez que llamo a "push" aparece el mismo mensaje de error solo que la serie de letras y numeros "##" cambia.

Hay algun paso que me olvide?. Esta es la primera vez que intento subir algo al repositorio asi que estoy bastante perdido.

Si alguien sabe que es lo que tengo que hacer; o bien a quien le tengo que enviar por mail el parche para que lo suba (usando send).

Saludos

Nota: el archivo ha subir es un makefile para usuarios linux ya que lei que alguien habia intentado instalar linecube en ubuntu pero tuvo problemas. Con el makefile deberia estar solucionado.
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor Alex_13_estu » Lun May 19, 2008 4:51 pm

¡Hola Juan Carlos! ¡Qué bien que te animes a ayudarnos ya con tus aportaciones y las intentes subir al repositorio (aunque no es tarea fácil)!
Por lo que parece, no hay ningún paso que se te olvide en lo que has comentado. Ahora bien, has utilizado un método para subir los cambios al repositorio original un poco extraño. Es mucho más efectivo y rápido que el que usamos nosotros, pero yo ya lo había probado y después de haberme pasado cerca de dos horas peleándome con él, me di por vencido y lo borré de mi mente. Se trata de el comando "darcs push". Si este comando funcionase, tendríamos un Darcs funcionando de perlas, ya que con sólo utilizar ese comando tendríamos actualizado el repo original, sin necesidad de WinSCP, copias del repo original en nuestro PC y otros pasos engorrosos. Pero, como ya dije, ese método pudo conmigo. Efectivamente, todo lo que llegué a descubrir es que había que configurar la variable "DARCS_APPLY_HTTP", pero de ahí no pasé. Así que te estaría muy agradecido si me dijeses cómo configuraste esa variable, ya que yo no conseguí ni que me tirara un mensaje de error.

Al margen del método "darcs push", que sigue siendo todo un misterio para mi, creo que hay otro posibles foco de tu problema, y es que el "darcs get" no funciona bien, y eso genera problemas después porque la copia del repositorio no resulta ser igual a la original. Este tema ya lo traté en mi anterior mensaje (y todavía estoy buscando solución/explicación), así que no veo necesidad de repetirme. No sé qué más pudo pasar, pero esos dos fallos digamos que son "claves". Y, concretamente, el mensaje de error que tú presentas supongo que viene dado por el método del "push", o eso me imagino. Porque si el mensaje te lo da el problema del "get"... pues eres un héroe, más que nada porque habrás descubierto cómo usar el "push" :D .

Como solución, tendrías que utilizar el método de descargarte todo el repo mediante un programa como WinSCP o equivalentes, que es más lioso y difícil, pero es lo que tenemos. Básicamente consiste en conectarte al directorio de nuestro proyecto en SF.net y descargarte la carpeta del repo original con un cliente FTP o SFTP (creo que valían más, pero no lo recuerdo) como, por ejemplo, WinSCP. Luego le aplicas el parche a esa copia que te bajaste y la vuelves a subir de la misma manera. Creo que ya había explicado ésto por aquí, pero no recuerdo donde... A ver si lo veo y te lo comento. Esto solucionará el problema del "darcs push", ya que los parches se aplican manualmente con "darcs apply" y se generan con "darcs send -o", pero si el problema viene dado por el "darcs get", seguirá dándolo, ya que te pasará exactamente lo mismo.

Espero haberme explicado bien.

Un saludo.

EDITO:

Ya encontré esas pseudoinstrucciones que había posteado. Para llegar a la carpeta htdocs tienes que conectarte a SF con un cliente como te dije antes e ir a nuestro directorio: "groups/l/li/linecube"

1.- Poned en la carpeta "htdocs" de SF.net un archivo que se llame ACTUALIZANDO o algo así para que nadie más se ponga a actualizar en ese momento.
2.- Copiad el directorio "LineCube" mediante, por ejemplo, el WinSCP en vuestro PC, por ejemplo, en "C:\LineCube".
3. Generad un archivo de parche con el comando "darcs send -o" en vuestra copia del repositorio, que, digamos, está en "C:\Copia\LineCube".
4.- Copiad ese archivo de parche y llevadlo de la carpeta "C:\Copia\LineCube" a "C:\LineCube" (o sea, el repo original).
5.- En "C:\LineCube", ejecutad "darcs apply NOMBRE_PARCHE" para actualizar el repo original que tenéis en vuestro ordenador.
6.- Por último, volved a "htdocs" y sobreescribid la carpeta "LineCube" que está allí or la que tenéis vosotros actualizada en "C:\LineCube".
7.- ¡Se me olvidaba! Borrad el archivo "ACTUALIZANDO" al finalizar.


Son malas, pero no tengo tiempo de hacer ahora unas mejores. Cualquier duda, preguntad y trataré de contestar.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor lucesita » Lun May 19, 2008 5:13 pm

haber como va la cosa... apenas si puedo bajarme el repo con darcs get :S el darcs pull dejo de funcionarme, el winscp tambien, probe desde linux conectarme a Sourceforge y al bajar el repo me da una tasa de 0,2K.

y para aplicar el parche :S no puedo bajarme el repo original jajaja.

y para crear el parhce... no se si se creo bien o mal, la cuestion es que en el parche 17 hay un error :P

Saludos Lucesita.

PD: Hacemos borron y cuenta nueva? es una pena perder los parches anteriores pero si nos va a liar el trabajo creo que deberiamos re-plantear.

PD2: cuando puedan conectense al canal de LosersJuegos
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Notapor Dokan » Lun May 19, 2008 10:24 pm

Hola a todos!
No hay que preocuparse por lo que hice de las colisiones en el eje 'x', fue todo un «copia y pega» del código que ya había para colisiones en el eje 'y' con apenas algunas modificaciones. Lo importante es que el código cumpla su función. Por mi parte, aprendí mucho haciendo esa modificación, lo que me ha animado a intentar otras cosas.
Creo que de momento debemos preocuparnos por el repositorio y por Darcs, que nos está dando muchos problemas, tal vez debamos probar Bazaar o Git, que tienen un uso parecido a ver si hay más suerte.
Hasta el próximo domingo no tengo mucho tiempo libre, hasta entonces estaré pendiente de lo que se cuece por aquí, pero no se si podré ayudar mucho.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

Notapor Alex_13_estu » Mar May 20, 2008 8:26 am

¡Hola! Voy a tratar de ir por partes para responder a todo y no quedar a medias en algunos temas. Decir que yo me paso habitualmente por el canal de Jabberes, pero no hay mucha gente... A ver si puedo pasarme a horas más decentes, porque ahora mismo con los exámenes mi horario no es muy normal.

Primero, la propuesta de borrón y cuenta nueva de Lucas. No me gusta la idea (creo que a nadie le gusta), pero estoy empezando a verla como la única solución, así que a lo mejor tenemos que acabar por hacerlo. De todas formas, me gustaría que leyerais mi anterior mensaje - perdón, el anterior no, el anterior del anterior, :D - y aportarais ideas, porque creo que debemos buscar una solución lógica. Yo siempre digo que los ordenadores no hacen nada por voluntad propia, aunque a veces lo parezca. Por lo tanto, lo que nos está sucediendo es muy muy extraño y deberíamos buscarle respuestas.

Segundo, el fallo en el parche 17. ¡¿Qué?! ¿En el 17? Y yo que pensaba que esos parches ya los habíamos superado... Bueno, da igual, el problema viene a ser el mismo, porque si te copias el repo original a tu ordenador con el WinSCP o un prograa así y le pruebas a hacer el "darcs get" a ese repo bajado no da problemas. O al menos a mi no me los da. ¿Entonces por qué narices da problemas el repo de internet si es exactamente igual? Preguntas sin respuesta...

En cuanto al cambio de Dokan para el movimiento en el eje X, me imaginaba que sería igual al cambio que hice yo (ya que también me basé en un "copia y pega" del método para el eje Y). Así que no creo que haya mucha diferencia entre ellos... Lo que me alegra es que te haya servido para aprender. Creo que no hace mucho hablaba contigo (no lo recuerdo muy bien) por el chat de Jabberes de que no sabías mucho de C++ (recuerdo haberte dado algunos links con tutoriales), y a día de hoy te veo realizando modificaciones en el código del juego. ¡Wow! ¡Eso es un tiempo récord! Por lo menos a mi me costó mucho tiempo aprender lo básico para poder modificar códigos de otros, y tú ya lo estás haciendo. Eso debería animarte y ayudarte aseguir mejorando. Se agradecería mucho que tú también aportases parches al juego con asiduidad, así iríamos más rápido.

A ver, que me queda por comentar... ¡Ah sí! Los problemas de Darcs. Bien, no creo que Darcs sea un mal SCM, simplemente no lo estamos usando en todo su potencial. Y no creo que seamos capaces de mejorar mucho con Bazaar, Git u otro SCM. Echad un vistazo a mi anterior mensaje y informaos un poco sobre el comando "darcs push". ¿Sabéis las facilidades que nos daría eso? El problema es que no tenemos ni idea de cómo usarlo. Y, como ya dije, habrá comandos equivalentes en los otros SCM pero seguiremos sin saber usarlos. Yo creo que para este proyecto no nos deberíamos plantear el cambio de SCM, porque ya estamos familiarizados con Darcs (y con sus muchos problemas). Y para futuros proyectos... Pues yo sólo me planteo un cambio, que. increíblemente, es Subversion. ¿Por qué Subversion? Porque tanto Google Code como SF soportan este SCM ya de por sí y el trabajo se nos facilitaría muchísimo. Además, creo que Hugo trabaja con él en Google Code, y estoy seguro de que no le importaría ayudarnos un poco si fuera necesario. Para mi es el único cambio planteable, aunque espero a que posteéis vuestras opiniones para formarme una idea clara sobre lo que haremos.

Para finalizar, sólo quería aportar algo de "mi cosecha". Voy a hablar brevemente sobre el estado del proyecto. ¿Os dais cuenta de que ya casi hemos acabado el proyecto para plantear una versión inicial? Tendrá bugs (es inevitable), no incorporará opciones complejas (guardar puntuaciones, niveles...), pero será una versión inicial. Sólo nos queda solucionar el tema de que las figuras se borren del mapa de colisiones (para que no choquen contra objetos "invisibles" cuando se elimina una fila como pasa ahora) y algunas cosillas más que no serán muy difíciles (puntuaciones y variedad de figuras). ¡y habíamos empezado alrededor del 20 de abril! Para mí está muy muy bien conseguir hacer un Tetris en el tiempo que lo estamos haciendo, teniendo en cuenta que es nuestro primer proyecto y que partimos totalmente desde cero (y eso sin nombrar los días que perdimos con Darcs y que muchos de nosotros sólo podemos dedicar unas horas semanales a la programación del juego). Así que sólo me queda pediros que no os desaniméis ahora y que acabemos esto bien, dándole un aspecto más o menos bueno. Me han dicho muchas veces que los programadores novatos empezamos un juego y, cuando creemos que ya hemos solucionado lo más difícil, lo dejamos y pasamos a otro, pensando que lo que quedaba por hacer del anterior era una tontería. Y eso lleva a que se deje de programar, porque nunca podrás tener un juego acabado. Así que, ¡vamos a acabar el LineCube y lo vamos a hacer como Dios manda!

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Dokan » Mar May 20, 2008 11:13 am

Estoy de acuerdo en todo.
Se me ocurre que el problema con Darcs estará casi seguro en que alguien no subió el repositorio original al servidor, sino la copia que tenía hecha con «darcs get ...», sin embargo tampoco estoy seguro 100%.
En cuanto tenga tiempo me pondré a averiguar si podemos usar «darcs push ...», pero creo que para eso Darcs debería estar instalado en el servidor, y no es el caso. Pero esto no será ahora, ni probablemente esta noche.
En cuanto a lo de borrón y cuenta nueva, tampoco es tan dramático. Si acaso deberíamos haber hecho copia de seguridad del primer repositorio subido, y de los parches, para aplicarlos de nuevo.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

una idea

Notapor drincast » Mar May 20, 2008 3:57 pm

Hola LoserDevelopers, siempre estoy por aquí mirando los que escriben en el post aunque no participe muya activamente en la codificación del juego, bueno no se. En este momento tengo alrededor de 15 minutos libres y se me vino una idea a la cabeza sobre el problema del repositorio.

Creo que lo importante es conservar los parches que se han ido aplicando, si el repositorio es el original (pues de pronto paso como dice Dokan en el mensaje de arriba), creo que se debería probar el comando darcs remove que remueve un archivo del repositorio.

Pues mi idea es que se remuevan todos los archivos y directorios del repositorio y luego se vuelvan a adicionar, de esta forma no se pierden los parches que se realizaron anteriormente y se crearía un parche nuevo especificando lo sucedido.

No se si me hice entender, pues voy a ver si puedo probarlo en la casa esta noche y les comento, si funciona les aviso para que lo realicen y suban el repositorio ya que yo no tengo conexión a Internet en mi casa.

Lo que si les puedo asegurar es que, probé una sola vez el comando darcs remove con un archivo jpg, este lo elimino del repositorio (claro hay que realizar el darcs record) pero no físicamente, y al hacer darcs whatsnew –l, muestra el archivo como una posible adición.

En cuanto a lo que dice Alex es cierto, pues no me parece bueno cambiar de SMC tan pronto sin haber dado una buena batalla, sería bueno probar a ver que propuesta de solución funciona, también quiero decirles que vamos bien (perdón ya que ni he ayudado mucho en cuanto a código), la primera versión como dice Alex no va hacer con todos los juguetes si no algo mas o menos funcional, también otra cosa, un grupo de desarrollo ya sea de software, paginas web de cualquier cosa se enfrentan a diferentes problemas, no solo a lo especifico como lo es programar, todo esto nos va ayudar a crecer como grupo y en los proyectos futuros ya tendremos el conocimiento necesario para afrontar nuevos retos.

Saludos y mucho ánimo[/b]
drincast
 
Mensajes: 34
Registrado: Mié Mar 12, 2008 4:23 pm
Ubicación: Colombia

Sobre la prueba

Notapor drincast » Mié May 21, 2008 2:17 pm

Hola de nuevo, bueno creo que cape un poco mis obligaciones pues me engome en esto mucho, aquí va mi explicación.

Me lleve una copia del repositorio original con WinSCP, y realice dos copias en mi disco duro con darcs get llamadas LineCubeA y LineCubeB (claro que el get los realice desde la copia en mi disco)
removí todos los archivos y directorios del repositorio con el comando darcs remove “nombrearchivo”.
Luego guarde los cambios con darcs record.
Luego ejecute darcs changes, y mostró todos los parches que habían sido aplicados anteriormente.

En la copia LineCubeA, ejecute darcs pull -s y aplique los cambios hechos en el repositorio original,
En esta copia se eliminaron todos los archivos, se ejecuto darcs changes, y mostró todos los parches que habían sido aplicados anteriormente

En el repositorio original adicione de nuevo todos los archivos y directorios, y procedi a grabar con darcs record
Se ejecuto darcs whatsnew -l y no mostró ningún cambio a aplicar
Se ejecuto darcs changes y desplegó toda la lista de parches aplicados

Ejecute el comando darcs pull -s en la copia LineCubeA y se aplico el parche a este
Los archivos se adicionaron tanto físicamente como lógica (en el repositorio)
Se ejecuto darcs changes y desplegó toda la lista de parches aplicados

Realice una copia del repo original con darcs get LineCube LineCubeC exitosamente
Se ejecuto darcs changes y darcs whatsnew -l exitosamente

En la copia LineCubeB, ejecute el comando darcs pull -s, se aplico el parche cuando se removió todos los archivos y luego el otro donde se adicionaban todos de nuevo
Se ejecuto darcs changes y darcs whatsnew -l exitosamente

Se realizo una pequeña modificación en la copia LineCubeB, se creo un parche y se envió al repo original.

En el repo original se aplico el parche exitosamente y los comandos darcs changes y
darcs whatsnew -l se ejecutaron exitosamente.

Solamente falta realizar la prueba desde SF con el repositorio original

Bueno y aproveche para realizar una pequeña modificación en el archivo principal.h

1) he adicionado las lozas de color rojo, verde y marrón para las figuras en la carpeta recursos/img, y otro screen para el inicio del juego (bueno creo que fue un atrevimiento de mi parte, aun que deje el que estaban utilizando).

2) en el archivo principal.cpp adicione una pocas (muy pocas) líneas de código.
Una fue adicionar en la parte de constantes y variables, una variable string como vector, que almacena el nombre de cada una de las lozas para formar la imagen.

Otra fue en la función InicializaSprites(), lo que hice aquí fue crear una variable tipo string el la cual se almacenara toda la ruta de la loza o imagen a cargar para formar las figuras.

Bueno eso fueron los cambios en cuanto a código, también modifique el archivo losersdebelopers.txt, pues colocando mi e-mail.

Espero que esto resuelva el problema que se ha presentado con el repositorio, de todas formas yo envió un correo a Alex y Dokan con el repositorio original que había antes de realizar estos cambios.
drincast
 
Mensajes: 34
Registrado: Mié Mar 12, 2008 4:23 pm
Ubicación: Colombia

Notapor Dokan » Mié May 21, 2008 4:15 pm

En la página oficial de Darcs se explica brevemente como usarlo bajo ssh, por lo que tal vez sí se pueda dar uso del comando «darcs push ...» en el proyecto.
Con vuestro permiso voy a crear en el espacio que tenemos en SF.net un nuevo proyecto para llevar a cabo unas pruebas.

EDITO
Pues hechas las pruebas pego los resultados:
Código: Seleccionar todo
dokanENmipc:~/proyectos/pruebas$ darcs push dokanENshellsourceforgenet:/home/groups/l/li/linecube/htdocs/pruebas
dokanENshellsourceforgenet's password:
Pushing to "dokanENshellsourceforgenet:/home/groups/l/li/linecube/htdocs/pruebas"...

Wed May 21 18:43:20 CEST 2008  maildedokan@dokan
  * cambios en leeme
Shall I push this patch? (1/1)  [ynWvpxqadjk], or ? for help: y
bash: darcs: command not found


De esto se deduce que es necesario que esté instalado Darcs en el servidor y que en el de SF.net no lo está.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

Notapor Alex_13_estu » Jue May 22, 2008 2:07 pm

¡Hola! Gracias a Dokan por solucionarnos el problema del "darcs push", ahora ya sabemos que no es culpa nuestra que no nos funcione :D . Así que comando olvidado (de momento). En cuanto al repositorio, decir que es el original el que está subido, si no daría un error como "is not a original repository", o algo así (no recuerdo como era exactamente). En cuanto al repo de drincast... Decir que me lo manó por mail y ya lo subí a SF, pero lo quité porque sigue sin funcionar, así que guarda los parches que creaste porque cuando solucionemos el problema habrá que volverlos a aplicar. El problema que da es el mismo, en el parche 19, pone "error aplying ./hunk to file LEEME.txt". Solución: voy a eliminar ese parche y a guardar el repositorio sin actualizar el léeme del directorio "_darcs" en cuanto tenga un poco de tiempo. Con un poco de suerte funcionará y podremos acabar la programación dentro de poco.

Y ahora voy a cosas meramente del juego. Primero, la imagen que puso drincast está guapísima, así que de paso que borro el parche la añadiré al repo y configuraré el juego para que la cargue. Además, vi el código que puso para cargar el bloque de un color distinto cada vez, pero al empezar el juego se carga un color y luego ya no cambia. ¿Preferís eso o que en la misma partida haya fichas de todos los colores? No es difícil de hacer, y si elegís esta última opción también la implementaré de paso que subo el nuevo parche. Qué más... ¡Ah sí! Ya hice un par de pruebas de como eliminar las fichas del mapa y es muy simple, así que a lo mejor también creo un parche para eso. Creo que no me dejo nada.

Pero eso lo haré cuando tenga un poco más de tiempo que ahora estoy apuradísimo. Por ciero, dijo i.konakona (que es un habitual del chat de Jabberes), que la imagen de fondo no le molaba, así que, sin mirar para nadie (bueno, en realidad miro para drincast, viendo sus últimas obras de arte) me gustaría que diseñásemos una nueva. Las únicas normas son que el área de juego mida 250X500 y que esta área comience en el punto (275, 20).

Nada más.

Un saludo.

EDITO:

Bueno, acabo de subir el repo haciendo lo que dije (borré el parche que daba problemas) y ya funciona a las mil maravillas. Sólo hay un problema: el archivo léeme aparece cuando le damos a "darcs whatsnew -l" como por actualizar. Cuando hagáis cambios y los vayáis a guardar, os pregunta qué modificaciones queréis guardar. Todo lo que tenga que ver con el léeme no lo guardéis, o dejará de funcionar. En cuanto a actualizaciones, simplemente ahora se usa la imagen de drincast al inicio del juego y las filas completas se borran del mapa totalmente, de forma que las figuras ya no se sostienen sobre otras figuras "invisibles". Lo que pasa es que si hay una figura por encima de la fila que se elimina, queda flotando de una manera un tanto sospechosa... Pero bueno, hacer que las figuras que estén por arriba de una fila eliminada bajen es uno de los próximos objetivos. Deciros también que espero que contestéis pronto a lo de si preferís que las figuras sean multicolor dentro de la misma partida o no, porque así ya podré implementarlo. Por último, un resumen de los objetivos más próximos:

- Las figuras que están por arriba de una fila eliminada deben bajar.
- Hay que sumar las puntuaciones.
- Hay que comprobar si se ha perdido la partida

Creo que esos deberían ser nuestros 3 objetivos más próximos, para tener un juego ya casi completamente acabado.

Un saludo.

EDITO 2:

Bueno, acabo de hacer más cambios al repo que se resumen básicamente en una frase:

- Las figuras ya giran al pulsar la tecla hacia arriba.

Realmente no es muy difícil de realizar, sobre todo una vez tienes el problema resuelto con lápiz y papel, pero era una mejora pendiente y ahí está. Añadí para que las figuras girasen un método dentro de la clase "Figures" llamado "Girar()". Lo que hace es lo siguiente (es una ilustración con el mapa de la figura del cuadrado):

1100 --------- 0011 --------- 0000
1100 ---->--- 0011 --->----- 0000
0000 --------- 0000 --------- 0011
0000 --------- 0000 --------- 0011

A lo mejor se ve más claro con otra figura (la "L"):

1000 --------- 0111 --------- 0000
1000 ---->--- 0100 --->----- 0011
1100 --------- 0000 --------- 0001
0000 --------- 0000 --------- 0001

Espero que lo hayáis entendido, porque es muy importante para que podáis entender el fallo que tiene. Si os fijáis, al girar el cuadrado de 2x2, no debería pasar nada, porque girar 90º un cuadrado es como no hacer nada. Pero, sin embargo, al hacer girar esta figura en el juego sí pasa algo: se desplaza en la pantalla (primero a la derecha, luego hacia abajo, luego hacia la izquierda y luego hacia arriba). ¿Por qué? Porque se le da la vuelta al mapa entero (que es de 4x4), no a la figura (que es de 2x2 y está en la esquiena superior izquierda). Para solucionar esto se me ocurren varias maneras, como por ejemplo cambiar los mapas de las figuras para que los unos estén todo lo centrados posibles, pero habría que estudiarlas. Ademas, deciros que al girar las figuras no implementé todavía nada que comprobase si se salen de la pantalla con ese giro, por lo que os podréis ir del área de juego sin problemas. No lo hagáis porque traerá problemas con el mapa y su memoria, pero veréis que es posible. Si queréis divertiros un poco más, abrid el archivo "principal.cpp" y cambiad el valor inicial de una variable que se llama "TIPOS_FIGURAS" y está iniciada a 1 por otro valor, como máximo el 7. Es para que os salgan figuras diferentes, con formas variadas (la "L", la "T"...).

Por último, deciros que al aplicar el parche, darcs dio un error (concretamente en el archivo "LineCube.layout"). Lo solucioné haciendo un cambio en el comando al aplicar el parche (mi parche se llamaba "Girar"). En lugar de hacer "darcs apply Girar" hice "darcs apply patch Girar --mark-conflicts" y funcionó a la perfección, sólo añadiendo ese "--mark-conflicts". Así que ya sabéis lo que hacer si os da errores en un archivo sin importancia (como el "LineCube.layout"). Pero todo esto me llevó a plantearme una cosa: ¿no sería mejor eliminar del repositorio todos aquellos archivos que no tengan importancia para el desarrollo del proyecto (o sea, el "LineCube.layout" y el "Makefile")? Vosotros diréis, pero a mi me parece que no perderíamos nada.

Por cierto, aún estoy esperando respuesta a lo de si queréis que en una partida haya fichas de varios colores. Y espero que alguien se anime a hacer ese fondo del juego que dije antes (ya que no tuvo mucha aceptación el que tenemos actualmente). Nada más.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Alex_13_estu » Dom May 25, 2008 3:28 pm

De nuevo más cambios, lo que pasa es que no sigo editando el mensaje anterior porque se estaba volviendo un completo lío. De todas formas, leed los edits del mensaje anterior porque si no no entenderéis nada de lo que pongo aquí, que va a ser muy poco.

Simplemente he modificado el método "Girar()" de la clase "Figures" para que compruebe si, al girar, la figura se va a salir del mapa o va a chocar con otra figura. Funciona perfectamente, aunque, como ya dije en mi anterior mensaje, los giros son antiestéticos. Para solucionarlo yo creo que bastaría con modificar los mapas de las figuras, pero antes de hacerlo debo releer el código y asegurarme al 100% de que no va a afectar para nada al juego. En principio esa sería la solución. También deciros que de nuevo el archivo "LineCube.layout" dio problemas al aplicar el parche, pero lo he solucionado como la última vez, con "darcs apply patch --mark-conflicts". Por lo tanto, si hacéis "darcs whatsnew -l" veréis ese archivo (además del LÉEME) como archivos pendientes de actualización.

Para probar estos cambios ya sabéis que sería bueno que cambiarais el valor de "TIPOS_FIGURAS" como expliqué en el anterior mensaje. Y ya para acabar, recordaros de nuevo que está pendiente de respuesta la pregunta del millón: ¿en una misma partida habrá figuras de diferentes colores o no?. Sería bueno tener respuestas cuanto antes. ¡Ah! Y también sería bueno que alguien se animase a hacer un nuevo fondo para el juego (explique por qué y qué normas hay que seguir en mi anterior mensaje, antes de los edits).

Creo que no me dejo nada.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Dokan » Dom May 25, 2008 9:52 pm

En mi opinión todas las figuras deberían ser multicolor, los cuadros de cada figura deberían poder ser de varios colores, aunque esto de momento no me parece lo más importante.
He estado echando un vistazo a los mapas de las figuras y me ha chocado que sean todos de 4x4 cuadros cuando hay figuras que no tienen tantos cuadros, por ejemplo el cuadrado que es de 2x2. Como bien apunta Alex ahí está el problema, pero centrar las figuras no creo que sea neceario, sino más bien creo que una solución más fácil (aunque yo no he podido conseguir que funcione) es crear una matriz ajustada a la figura. En vez de utilizar una constante «LADO_FIGURA = 4» se puede capturar ancho y alto de la figura_actual para manejarla. De ese modo al girarla no habrá que preocuparse por ese desplazamiento, creo. He probado a solucionarlo yo mismo, pero por ahora estoy un poco perdido. Tal vez mañana con más tiempo...
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

Notapor Alex_13_estu » Lun May 26, 2008 1:56 pm

¡Hola! No tengo nada nuevo que decir del juego, más que contestar a Dokan, así que creo que no os regalaré hoy uno de mis eternos testamenos :P .

Primero: el tema de las figuras multicolor. Desde mi punto de vista estaría bien que las figuras fueran de diferentes colores. Ahora, de ahí a que cada cuadro de la figura sea de un color.... No sé, creo que podría llegar a marear. De hecho, yo diría que acabaría por marearte mucho. Pero sería posible de hacer, así que si os gusta más, pues lo hacemos. Siempre podemos probar todas las posibilidades y quedarnos con la que más nos guste, pero como es un tema de "estética del juego" creo que no tiene mucha prisa.

Segundo: figuras de diferente tamaño. La solución que dio Dokan de hacer un array con los datos de cada figura es posible, cierto. Además no creo que haya que cambiar mucho código, por lo que es una opción a tener en cuenta, aunque no sea perfecta. En figuras que tengan dimensiones parecidas (como el cuadro, que tiene 2X2 o la "L" que tiene 3X2) sería bastante exacta y quedaría muy bien (al menos tanto como la opción de dibujar la figura en el centro del archivo de mapa). Ahora bien, con el "palo" de 4X1 seguiríamos teniendo problemas, porque al girarlo deja de ser de 4X1 y pasa a ser de 1X4, con lo que sigue habiendo mucha diferencia (más que si lo dibujamos en el centro del mapa de la figura). Digamos que, en cuanto a código, sería más "elegante", pero a lo mejor nos cuesta un poco hacerlo efectivo. No sé, habría que pensarlo.

Creo que nada más, así que ahí lo dejo. Simplemente repetir lo del fondo que ya comenté en mi anterior mensaje y pedir que contesteis a lo que estamos diciendo para poder tomar las decisiones necesarias.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Juan Carlos » Lun May 26, 2008 8:06 pm

Hola, supongo que cambiar el color de las figuras no seria complicado y le añaderia una mejor estetica. Aunque para mi gusto, cambiar el color de cada cuadrado seria demasiado "colorido".

Respecto a los archivos sin uso, desconozco el uso del archivo LineCube.layout asi que no puedo opinar sobre él. Respecto al archivo Makefile puede serle util para personas (usuarios de windows y del dev-c++) para compilar el juego sin la necesidad de pasarle el proyecto (.dev) completo. Para usuarios de linux, ya prepare el Makefile especifico y supongo que en esta semana se los pasare por mail, ya que aun no domino completamente el uso de darcs para enviar parches. (actualmente estoy viendo bazaar como sistema de control de versiones aunque tampoco lo domino completamente).

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor lucesita » Mar May 27, 2008 12:16 am

solo para avisar que pude subir el maldito parche, que hace... da fin a un juego jajaja na mas que eso.

con respecto a lo que dice juan de bazaar, fue el primer sistema que probe asi muy por encima, y me gusto.

para los usuarios de linux hay un paquete que se llama mmmm bue no me acuerdo... Pero es Bazaar en modo grafico... es muy simpaticon.

EDIT: con respecto a las matrices dinamicas por asi llamarlo, es una buena idea, lo pensare un poco.

lo de las figuras multicolor, no me va mucho, si me gusta que cada figura tenga su color, como el tetris estandar xD

Con respecto a lo de eliminar archivos innecesarios, lo veo bien, pero si yo uso el dev-c++ Me queda comodo ya que no tengo que hacer nada NO QUIERO QUE LO ELIMINEN... tranquilo, que no lo eliminamos, solo lo sacamos del repo, pero los podemos poner en una carpeta aparte, almenos eso vi en carios proyectos y parece dar buen resultado (me ah salido la doble personalidad xD)

y bueno... Drincast... Drincast... eres un crack, creo que todavia no te felicite por la web que hiciste... aprovecho para hacerlo ahora jajaja (un poco tarde) eres el puto amo tio!!!!


otra cos aque quedo en el tintero, creo que deberiamos cambiar eso de la tecla arriba para que gire, o sea, esta bien que se use esa tecla para girar, pero lo que no me gusta a mi es que no tiene velocidad de respuesta, en el bucle de juego hacemos una discriminacion de las teclas que llevan retardo y las que no, creo que esa tecla debe ir sin retraso... Lo pruebo y edito.

EDIT: acabo de probarlo.... jajaja gira a lo loco, quiza deba ir con un retrso, pero un retraso menor al de las otras teclas.
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Comentario

Notapor drincast » Jue May 29, 2008 3:22 pm

Buenas losersdevelopers, a pesar de que no participe mucho siempre estoy revisando este post, bueno lo del fondo quiero decirles que hice uno que me tomo como dos días terminarlo pero el resultado no me gusto, detonas formas voy a enviárselos al correo a ver que les parece.

Sobre lo del color de las figuras, quiero decirles que el cambio que comenta Alex que realice, pues lo hice fue para acostumbrarme un poco al código por eso no fue gran cosa, y creo que por el momento es tema no es importante, pues me parece que se deben concentrar mas en los tres objetivos que comento alex antes para la primera versión (Hay que sumar las puntuaciones. Hay que comprobar si se ha perdido la partida), lo que si lamento es no poder colaborarles mas en cuanto a la codificación del juego.

Lo de eliminar los archivos innecesarios, pues a mi me parece bien ya que queda más manejable y entendible el repositorio, lo de los archivos Makefile es cierto lo que dice Juan Carlos son muy importantes pero creo que no es necesario que estén en estos momentos en el repositorio, pues ya estamos los que estamos y creo que esos archivos si deben ir obligatoriamente cuando se termine la primera versión, de todos modos a mi no me molesta si se eliminan o no.

Y un comentario mas sobre la rotación de las figuras pues como se utilizan matrices había pensado en aplicar una transformada matricial para que rotara respecto a funciones de algebra lineal, pero lo que están haciendo esta muy bien, pues si alcanzo a realizar algunas pruebas con el método que les mencione pues les aviso.

Saludos y perdon por lo largo del mensaje .
8)
drincast
 
Mensajes: 34
Registrado: Mié Mar 12, 2008 4:23 pm
Ubicación: Colombia

Notapor Alex_13_estu » Vie May 30, 2008 9:06 pm

¡Hola! Bueno, acabo de subir cambios al repositorio, así que os los voy a resumir... Pero primero dejadme contestar a los últimos mensajes, porque si no luego me olvido. Comienzo por el de J. Carlos.

Decir que por ahora he decidido no eliminar los archivos innecesarios para el desarrollo del repo, tampoco nos afectan tanto, y con tal de hacer "darcs apply patch --mark-conflicts" nos saltamos los archivos conflictivos (al menos yo lo consigo así). En cuanto al Makefile de Linux, en cuanto lo tengas, enviámelo y si eso ya me encargo yo de agragarlo al repositorio.

Voy ahora a por Lucas (tranquilo, no seré muy duro, :P ). En primer lugar, decir que a lo mejor sí estaría bien implementar algo que le diese mayor velocidad a la tecla de giro, ¡pero no quitar el timer! ¡Eso es una locura! ¡Va a girar para todos lados sin control! Pero creo que eso ya lo experimentaste tú mismo, así que no me pararé mucho... Simplemente queda pendiente de análisis. Y luego viene el parche que aplicaste (el de finalizar el juego). Es un método bastante bueno para acabar el juego, pero pienso que no es totalmente correcto. Según el método que tú implementaste, cuando una figura llega arriba, el juego finaliza. Pero en realidad, el juego no debería finalizar al llegar a la fila superior, si no cuando alguna figura se saliese del mapa. Que es distinto. Te pongo un ejemplo: levanta una columna de figuras pegada a la parte izquierda de la pantalla. Verás que, cuando coloques la última figura, nada se habrá salido del área de juego, y sin embargo el juego se acabrá. Digamos que se debería acabar cuando una figura alcanzara la fila -1, y no la 0. Hay que pensar en ésto. De momento tenemos una posible solución, pero creo que podemos mejorarla. De nuevo, pendiente de análisis y mejora.

Y por último el mensaje de Drincast. Decir que acabo de abrir el correo y ya tengo subidos los cambios, por eso no añadí las nuevas imágenes, pero... ¡son geniales! Vamos, como todo lo que has hecho hasta ahora. A mí, al menos me gustan mucho. La única pega que les pondría es la distribución. Creo que debemos replantearnos la distribución de las cosas en la pantalla de juego, porque tenemos un área enorme en la parte izquierda de la pantalla a la que no le damos uso. Así que, si alguien se anima (por ejemplo Drincast, aunque sea sólo modificando un poco lo que ya ha hecho) a hacer algún otro fondo, decirle que tiene carta libre para hacer lo que quiera y distribuír como quiera todo. Sólo nos debe decir cuales son las coordenadas de inicio del área de juego, y ésta debe tener 250X500 píxeles de tamaño. Aparte de eso, que haga lo que quiera. En cuanto a lo de las figuras multicolor, decir que estoy con Lucas: a lo clásico (cada figura de un color). A ver si lo implementamos pronto, aunque no tenga mucha prisa. Y lo del giro mediante álgebra lineal... A mi me suena a chino, macho. Mi nivel de matemáticas es de enseñanza secundaria (todavía no tuve tiempo a pasar de ahí) y creo que no lo entendería, pero si lo desarrollas y funciona, pues me pararé a echarle un ojo y a tratar de entenderlo. Ahora bien, el trabajo de desarrollo creo que te va a tocar a ti, ya que no podré ayudar.

Bien, voy ahora con mis cambios. Mejor dicho, mi cambio (en singular). He desarrollado algo que es una tontería: las figuras que están por encima de una línea que se va a eliminar, bajan cuando esta se elimina. Lo peor de todo es que me llevó alrededor de hora y algo conseguirlo. Podéis reíros, os doy permiso. Pero después de haber pasado un rato riendo, os aconsejo que repaséis el código, y tratéis de mejorarlo, porque... ¡es chunguísimo! Me llevó mucho tiempo hacer lo que hice y, aún así, no funciona completamente. Digamos que es un método que funciona bastante bien con sólo un tipo de figuras (tiene un 70% de posibilidades de que funcione con sólo las figuras cuadradas), pero como le empieces a meter varios tipos se le complica el tema y empieza a fallar. Por lo tanto, lo que ahora me he propuesto es repasar esos errores, tratar de entenderlos e ir mejorando el método hasta conseguir el 100% de efectividad. Creo que me puedo considerar afortunado si lo logro este fin de semana. Así que será agradecida la ayuda, porque es de lo poco que nos queda por hacer antes de lograr esa primera versión. Aparte de hacer eso, que está implementado dentro de la misma función que elimina filas del mapa -void BorraFila(int)- (necesité para lograrlo un nuevo método de la clase Figures -void Figures::BorraMapa(Cuadricula *)- para borrar las celdas de la figura del mapa de colisiones), hice algunas otras cosillas: puse comentarios a algunos de los cambios de Lucas (espero que no le moleste), hice que al pulsar ESC se reiniciara el juego... Creo que eso es básicamente lo que he hecho. Y ya para acabar, diré que estos días me dedicaré a solucionar eso que dije (lo de que las figuras bajen después de eliminarse una fila) y resumo lo que nos queda por hacer en un futuro inmediato:

* Acabar de implementar la bajada de las figuras después de la eliminación de una fila.
* Implementar las puntuaciones
* Implementar un un algoritmo que muestre la siguiente figura en el área de pantalla correspondiente.
* Revisar el problema de la finalización del juego.
* Revisar el giro de las figuras (decidir si las centramos en el mapa o guardamos las dimensiones en una matriz).

Creo que si solucionamos eso, estaremos preparados para sacar la primera versión (habrá que hacer otros pequños cambios, como poner las figuras multicolor o cambiar el fondo, pero serán más sencillos de añadir).

Un saludo.

EDITO:

Bueno, ahora por la mañana he podido trabajar unos 15 minutos en el repositorio y he logrado mejorar el sistema para que las figuras bajen cuando se elimina una fila. Yo creo que tiene una fiabilidad del 100% (al menos hasta ahora no me ha fallado) si en el juego sólo están las figuras cuadradas de 2X2 y no le aplicas giros a ninguna. Ahora bien, si le metes más tipos de figuras, se le complica el chollo y sigue fallando. Es un paso más para la solución del problema, pero todavía no está completo del todo. Hay que seguir trabajando y probando con otros tipos de figuras, hasta dar con la solución total al problema.

Un saludo.

EDITO 2:

Bueno, nuevamente he logrado algunas cosillas en el método para bajar las figuras que están por arriba de una línea eliminada. Ya he subido los cambios al repo, y funciona perfectamente. Me ha mandado unos cambios J. Carlos (el Makefile de Linux y otras cosillas) que trataré de subir mañana, junto con la nueva imagen de Drincast. Pero vamos al tema del método para que las figuras bajen. Me siento orgulloso de decir que funciona al 99% con figuras sólo cuadradas (sé que es poco, pero después de lo que me ha costado...); puedes meterles giros y lo que quieras. No debería dar problemas. Pero, de nuevo, si hay figuras de varios tipos, sigue fallando a veces, por lo que hay que repasar esos fallos. Pero el método en sí está bien, por lo que creo que podríamos calificar esos fallos ya de bugs. La verdad es que el fallo que tenía era una tontería, pero es bastante largo de explicar y mucho más difícil de descubrir. Básicamente, se trataba de que el método de "Figures::BorraFila()" no sólo borraba una fila, si no que también hacía que las filas superiores de esa figura bajasen. Esto provocaba que, al eliminar la última fila del "palo", se pasase de un mapa como éste:

1000
1000
1000
1000

A uno como éste:

0000
1000
1000
1000

Cuando en realidad debería ser:

1000
1000
1000
0000

El fallo que provocaba ésto era que al eliminar los "restos" de la figura del mapa de colisiones, los dos mapas no coincidían y quedaban por ahí celdas perdidas. Lo solucioné cargándome las líneas que hacían descender el mapa de la figura en el método "Figures::BorraFila". Pero no os asustéis, como era un algoritmo que llevaba un rato desarrollarlo, lo he guardado en mi ordenador por si nos volviese a hacer falta. No me voy a explayar más en la explicación porque no me parece necesaria, ya que el resultado final fue más simple que el inicial y sería una tontería explicar éste cuando no lo vamos a usar. Así que aquí lo dejo. Espero subir esos parches cuanto antes.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Falcon » Dom Jun 01, 2008 1:15 am

Saludos......

La verdad es que no he leido todos los post que ya han publico camaradas. Pero en fin, me pondre al corriente se los aseguro...

Ahora dejenme explicarles el por que de mi tan repentina desaparicion y aparicion del foro ( y eso que no soy mago ), lo que paso es que mi maquina murio, y pues como no habia tenido dinero para una nueva, no me habia podido conectar, aparte de que pues el trabajo me ha traido loco, loco, pero en fin ya estoy de aqui de vuelta, y dispues a cooperar en todo lo que haga falta. Por mi parte primero me pondre al corriente con ustedes leyendo todos los post. Y pues si, ahi como decia lucesita, creo que les falto mi nombre de los integrantes, jjhehejeje... Saludos, y estamos en contacto.
Falcon ""Reloaded"" 2008 -- No digas todo lo que piensas, pero sí piensa todo lo que digas.
Falcon
 
Mensajes: 12
Registrado: Mar Nov 20, 2007 2:58 am
Ubicación: México

Notapor Falcon » Dom Jun 01, 2008 1:31 am

Pues bueno aqui de nuevo, ya me he unido a sourceforge, mi nick es Falcons. Por si alguien me podria agregar..

Por cierto, alguien podria enviarme todos los avanzes que han tenido del juego, y decirme que es lo que hace falta, o en que se esta trabajando actualmente' o que orden se esta llevando.. Es que la verdad entre tanta informacion me he perdido un poco, gracias..

PD: Lo del chat tambien me podria decir en donde es y a que hora? o si ya no se estan reuniendo por chat o algo asi?

Editando: Ya he visto la pagina y me parece muy buena opcion para ahi ir poniendo los avances que se han tenido, para asi sin necesidad de perderse en el foro, los podamos consultar y ver que hace falta, y que ya esta echo, (es solo una sugerencia) de echo si me lo permitieran yo me podria ha hacer ese trabajo como extra para recuperar el tiempo perdido, jeje



Saludos
LoserManiacos
Falcon ""Reloaded"" 2008 -- No digas todo lo que piensas, pero sí piensa todo lo que digas.
Falcon
 
Mensajes: 12
Registrado: Mar Nov 20, 2007 2:58 am
Ubicación: México

Notapor Alex_13_estu » Dom Jun 01, 2008 8:52 am

¡Hola! Acabo de subir las modificaciones que dije ayer, pero lo primero es lo primero: ¡bienvenido, Falcon! Es cierto que Lucas me había dicho que te anotara, pero como no aparecías al final no te había puesto en la lista... Te recomiendo que trates de leer est tema todo lo que puedas, pero, de todas formas, trataré ahora de resumirte un poco lo más importante para que te puedas integrar rápido al proyecto. Creo que "rescataré" la lista para esta ocasión, así podremos anotarte:

Participantes principales:

- Dokan -> Mail: kikecalpe@gmail.com
- lucesita -> Mail: lucastisera@gmail.com
- drincast -> Mail: drincast@hotmail.com
- dvd (en calidad de observador) -> Mail: dvd.prog@gmail.com
- Carlos Guevara Moscol -> Mail: a20050291@pucp.edu.pe
- Roberto (observador/desarrollador si es necesario) -> Mail: goetz_von@hotmail.com
- Falcon -> Mail: falcon.bot@gmail.com
- Alex_13_estu (o sea, yo) -> Mail: alex_vjuegos@hotmail.com

Si hace falta que nos echen una mano:

- Juan Carlos -> Mail: petete_zur88@yahoo.com.ar

Juan Carlos sigue en esta lista como posible ayudante, pero yo creo que debería ser parte del proyecto al 100%, ya que ha sido mil veces más activo que gente como Roberto... No sé, él decidirá. Bien, esa es la lista de los integrantes y, como verás, puse el mail que tienes en tu cuenta, pero necesito que me lo confirmes. Aparte de la lista, te recomendaría que le echases un vistazo a este post en el que puse un mini manual de Darcs. ¡Ah! Y el chat está en esta dirección. Solemos hablar si coincidimos allí, creo que hasta ahora no hemos planeado inguna reunión... Yo diría que con eso está bien para empezar. Si tienes alguna duda, pregúntamelo. ¡Ah! Ya te he agregado al proyecto de SF. Creo que nada más en estos temas.

Voy ahora a resumirte rápido el rumbo del proyecto. Los avances del juego no te los voy a resumir porque son muchísimos y ya no me acuerdo yo de ellos (para eso está Darcs, ¿no?), pero si quieres bajarte el repositorio está en http://linecube.sourceforge.net/LineCube . Si lo bajas con Darcs (comando darcs get) y haces darcs changes podrás ver un resumen bastante bueno. Queremos sacar una primera versión pronto, cuanto antes mejor, y creemos que ya no falta mucho para ello. Actualmente, yo diría que lo que queda por hacer es:

* Probar el juego con varias figuras y aplicando giros para ver donde falla el método que hace que bajen las figuras que están por arriba de una línea eliminada.
* Implementar las puntuaciones
* Implementar un algoritmo que muestre la figura que va a salir a continuación en el área de pantalla correspondiente.
* Revisar el problema de la finalización del juego (hecha un vistazo a los anteriores mensajes para ver a qué me refiero).
* Revisar el giro de las figuras (decidir si las centramos en el mapa o guardamos las dimensiones en una matriz, de nuevo, revisa los últimos mensajes para entenderlo).

En cuanto a lo de que hagas tú una zona en la página para los avances... A mí no me molestaría, es más, creo que sería muy útil. Pero no tienes que hacerlo por "compensar" el tiempo perdido, hazlo simplemente si tienes tiempo y te apetece. ¡Ah! Y si tienes dudas sobre el código de la página, lo mejor será que consultes a Drincast, que fue él quien la hizo.

Voy ahora a hablar de los cambios que he subido. Nuevamente me dio problemas el LineCube.layout al aplicar el parche, pero se solucionaron como siempre: haciendo darcs apply patch --mark-conflicts. Hoy no he subido modificaciones mías, si no que he cambiado lo que me mandaron J. Carlos y drincast. De éste último he subido a la carpeta "recursos/img" la imagen del fondo azul (sólo he subido la del fondo azul, tengo otra con fondo rojo que me mandó también él que trataré de subir pronto, pero no sé si hacer que se intercalen estas imágenes o que se pueda elegir fondo) y las imágenes de todos los bloques de colores. Aunque he subido la imagen del fondo, repito lo que dije en uno de mis últimos mensajes: si alguien quiere hacer otro fondo, puede redistribuír la pantalla como le dé la gana, sólo tiene que respetar el tamaño de 250X500 del área de juego. Y de J. Carlos, he subido el Makefile para Linux, que viene perfectamente explicado por él. Si le queréis hechar un ojo, no tendréis problemas en entenderlo. Yo no había visto una Makefile de Linux en mi vida y he comprendido el 99,9 %. Además, me había mandado unas modificaciones en principal.cpp que también subí. Lo que hacían, básicamente, era generar figuras de diferentes colores cada una. He de decirle que he modificado un poco sus cambios (la constante que habías creado con #define la creé con const int, para seguir el guión que teníamos hasta ahora y alguna otra cosilla) y que he añadido comentarios, para poder entender mejor el código, pero he respetado al 100% lo que había hecho, por lo que el cambio es suyo y no mío. En definitiva, que ahora mismo tenemos un juego que, gráficamente, está más o menos al 90% de lo que vamos a conseguir, por lo que habría que ir pensando en sacar algunos screenshos (siempre te motiva ver esas cosas). Bueno, se me acaba el tiempo, por lo que no puedo comentar mucho más. De nuevo, darle la bienvenida a Falcon y deciros que creo que no tardaremos mucho en tener nuestra primera versión. ¡Ánimo!

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Falcon » Dom Jun 01, 2008 9:29 pm

ASi es ese es mi mail, principal, aunque tambien tengo el mail para el messenger que es falcon_bot@hotmail.com, por cualquier cosa lo pongo. Por cierto he estado leyendo lo manuales y me he bajado los archivos del repositario, y pues empesare esta prox, semana a meterle duro al proyecto, ha por cierto acerca de lo pagina, lo haria por puro amor al proyecto, jejeje.. Asi que no me cuesta nada.

Por cierto muchas gracias alex, por tu pronta respuesta.
Falcon ""Reloaded"" 2008 -- No digas todo lo que piensas, pero sí piensa todo lo que digas.
Falcon
 
Mensajes: 12
Registrado: Mar Nov 20, 2007 2:58 am
Ubicación: México

Notapor Falcon » Dom Jun 01, 2008 10:01 pm

Hola hola, He estado moviendole un poco a lo que es darcs, y pues me parece muy bueno y facil, aunque la guia tiene muchos enlaces rotos, que mala suerte, pero en fin lo logre conseguir gracias al sabelotodo del google, y pues me baje la version darcsdir-w32-1.0.9, y pues si me funciona normal, pero me gustaria saber si existe una version mas reciente o es la misma que estan usando ustedes, sobre todo para evitar complicaciones posteriores.


Yo por el momento solo me he metido a concer lo que es darcs y ver como funciona. Ha por cierto la guia de alex como siempre esta de lujo. No se si la hayas echo tu o lo habras encontrado pero como sea, esta muy buena y practica, sigan asi. Estamos en contacto

Editando: He leido gran parte de los post y me han quedado muchas cosas muy claras de darcs y he echo ejemplos, pero aun tengo la gran duda,,,, que creo que alomejor va a sonar muy tonta, pero para ejcutar los avances o el makefile necesito hacerlo con c++ o como puedo ver el juego en si, y modificar y probar las cosas que vaya haciendo, por que como veo tiene lenguaje en c++, pero no se si en darcs se pueda ejecutar y si es asi me podrian decir el comando? o tengo que hacerlo desde c++ o como le hacen... Perdonen, es que ando aun muy atrasado.
Falcon ""Reloaded"" 2008 -- No digas todo lo que piensas, pero sí piensa todo lo que digas.
Falcon
 
Mensajes: 12
Registrado: Mar Nov 20, 2007 2:58 am
Ubicación: México

Notapor Alex_13_estu » Lun Jun 02, 2008 7:03 pm

¡Hola! Gracias por haber contestado tan rápido, Falcon, espero que la gente te agregue pronto al correo. Es un problema más que ya está solucionado. También mil grcias por los halagos que le has lanzado a mi guía, he de decirte que no está todo lo lograda que querría, pero la he hecho yo al 100% y creo que el resultado ha sido mínimamente aceptable (no lo digo yo, no penséis que soy un creído; lo digo más bien por lo que me habéis dicho vosotros hasta ahora, aprovecho para agradeceros las buenas críticas que recibí). Además, es de agradecer que hayas tratado de leer todo lo posible, así evitarás que tengamos que resumirte todo nosotros aquí y conseguirás también ponerte más al día, ya que si no seguro que se nos olvidaba comentarte algo. Y en cuanto a lo de la página... Yo ya dije que me parece muy bien que intentes hacer lo que propusiste, por mi parte tienes la aprobación y todo el apoyo que quieras, pero también te dije que, para dudas, se lo preguntases mejor a Drincast, ya que yo ando algo verde en el código de nuestra web :lol: ... Vamos ahora al tema de Darcs... So te digo la verdad, no tengo ni idea de que versión uso... Espera que lo miro... Sí, efectivamente, al igual que tú uso la 1.0.9, y no me da ningún problema, por lo que creo que has hecho una buena elección. Me alegro de que vayas comprendiendo su funcionamiento, a nosotros nos llevó un rato entenderlo (buena prueba de ello son los múltiples problemas que tuvimos al principio) y es muy importante para el correcto desarrollo del proyecto. En cuanto a lo de compilar el proyecto... Si usas Linux, J. Carlos añadió el otro día un muy buen Makefile para hacerlo, pero, si usas Windows, debes hacerlo directamente desde un compilador. Darcs sólo es un sistema de control de versiones, que controla los cambios hechos. La compilación y la posterior ejecución se debe hacer aparte. No sé si era esa tu pregunta, pero espero que sí. Si no es eso lo que querías saber, contéstame y trataré de ayudarte. Bien, creo que esos es todo con respecto a tus dos últimos mensajes.

De nuevo, el motivo principal de este mensaje son las actualizaciones. He subido ahora mismo un nuevo parche, y, ¿a que no adivináis qué hace? ¡Síiii, habéis acertado a la primera! Hace bajar a las figuras que están por arriba de una fila eliminada... O sea, más o menos como los tres o cuatro últimos parches que subí :lol: . Sçe que debería ir cambiando la temática, pero quiero dejar las cosas bien hechas. Y, aunque el método desarrollado está bastante bien, creo que aún subiré otro parche más con relación a este tema, antes de dejarlo por un tiempo. Luego os comento qué llevará, pero ahora voy a resumiros los cambios. Básicamente, las modificaciones se concentraron en los archivos "figuras.h" y "figuras.cpp". He tenido que recuperar el método que hacía bajar la figura después de eliminar una de sus filas y he hecho algunos otros cambios para conseguir un algoritmo que funciona más o menos al 80%. De paso, ya he puesto por defecto que salgan figuras de todos los tipos, para poder probar el algoritmo con todas las variantes. Aún así, sigue teniendo fallos a veces (por suerte, ya no pasa tanto como antes), lo que me lleva al motivo de mi próximo parche: voy a hacer que se escriba en un archivo información acerca del mapa del juego y otros datos importantes para que, si alguien prueba el juego y le falla, tenga en ese archivo unos cuantos datos para analizar la causa del problema y la posible solución. Ese será uno de los cambios en el próximo parche, pero, aparte, trataré de reorganizar totalmente los archivos "figuras.h" y "figuras.cpp". Al decir reorganizar, no me refiero a modificar el código, si no simplemente a ordenar un poco todo, porque estoy segurísimo de que debe tener ahora mismo unas cuantas variables inútiles y otras cosas sin importancia que me olvidé de borrar cuando hacía las pruebas. No voy a optimizar ni nada, si no que simplemente voy a reestructurar un poco todo. Porque si abrís ahora mismo esos archivos, aparte de un buen dolor de cabeza, os darán ganas de cerrarlos al momento, ya que no entenderéis nada.

Aprovechando el mensaje, diré que, cuando acabemos (que parece que ya no falta mucho), deberíamos dedicar un tiempo a revisar todos los ficheros para organizarlos y optimizar el código. Os recomiendo hechar un vistazo a este tutorial, ya que tiene información realmente útil al respecto. Bueno, nada más, dejo de nuevo la lista de cosas pendientes de hacer para motivarnos y darnos cuenta de que cada vez queda menos y me voy:

* Probar el juego con varias figuras y aplicando giros para ver donde falla el método que hace que bajen las figuras que están por arriba de una línea eliminada.
* Implementar las puntuaciones
* Implementar un algoritmo que muestre la figura que va a salir a continuación en el área de pantalla correspondiente.
* Revisar el problema de la finalización del juego (hecha un vistazo a los anteriores mensajes para ver a qué me refiero).
* Revisar el giro de las figuras (decidir si las centramos en el mapa o guardamos las dimensiones en una matriz, de nuevo, revisa los últimos mensajes para entenderlo).

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Falcon » Mar Jun 03, 2008 1:23 am

ok, muchas gracias alex..
ya voy entendiendo mas sobre este asunto..

Pues bueno pronto tendre algun aporte al proyecto, asi que esten listo xD

saludos
Falcon ""Reloaded"" 2008 -- No digas todo lo que piensas, pero sí piensa todo lo que digas.
Falcon
 
Mensajes: 12
Registrado: Mar Nov 20, 2007 2:58 am
Ubicación: México

Notapor Juan Carlos » Mar Jun 03, 2008 2:59 pm

Hola, me he leido el tutorial y ... Me parece que tiene buenas ideas, pero otras realmente no lo son. No soy ningun experto pero considero que hay ciertos "tips" que son dudosos.

Por ejemplo: en el tip "Piensa en RISC", realmente el codigo que el programador escribe NO esta dirigido a la maquina sino que esta dirigido a otro programador. Cuando uno escribe un codigo, debe pensar que otro programador lo va a utilizar y a leer y es por eso que es muy importante escribir codigo claro y nada de codigo spagetti. Una vez que el codigo fue creado y se le da la orden de compilar, el preprocesador tomara nuestro codigo y lo partirá en pedacitos (tokens) y nuestro compilador lo transformará en codigo objeto (binario). Realmente al compilador le importa muy poco como escribimos nuestro codigo. Incluso, para las versiones finales de un programa se puede compilar con distintas opciones (propias de cada compilador) para generar codigos mas rapidos o mas livianos.

En "Usa Shifts" es verdad que y/2 es mas lento que y>>2 Pero la gran mayoria de las veces uno no esta dividiendo por un numero que es potencia de 2, por lo tanto, el tip de usar shift suele ser poco util y tiende a hacer menos legible el codigo. Simplemente vean cuanto tardan en entender esto:

y>>5

y cuanto tardan en leer esto:

y/256

El tema de usar los punteros en vez de los indices del array ... Lamento desilucionarlos pero, los arrays SON punteros. Y en el caso de recorrer un array con el indice o con el puntero; realmente no hay diferencia. :(

Con el tema de los cast, en general es bueno usar cast. Si uno tiene un valor float y lo castea para guardarlo en una variable int, es posible que el procedimiento sea lento, pero al usar varibles int en un programa uno gana mas velocidad que usar floats (de hecho esto se explica en el tip "Piensa en 32-bits" lo que parece una contradiccion del autor).

Con respecto al proyecto, ahora le envio a alex un parche que determina el puntaje (pero no lo imprime en pantalla ya que es necesario definir alguna libreria como SDL_ttf para imprimir texto).

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor drincast » Mié Jun 04, 2008 3:43 pm

Saludos LoserDevelopers, primero que todo quiero darle de nuevo la bienvenida a Falcon y agradecer a Alex por su constante trabajo en el proyecto, a Juan Carlos, Dokan, Lucesita por sus sabios aportes en cuanto a conocimiento y código y quiero felicitarlos pues ayer estuve probando el juego con las ultimas actualizaciones y ya tiene una muy buna cara, esta bueno creo que lo probé durante unos 20 minutos, elegante elegante, pienso eso si como cosa mía que solo falta los ajustes en cuanto a lo de la puntuación y tenemos el primer beta, muy buen trabajo.

Pasando a temas sobre la pagina web, si piensan modificar o añadir algo pues todavía no lo hagan la que esta en estos momentos so es la versión final y era para ver su aceptación, quiero decirles que he realizado algunas modificaciones, pues para que quede todo un poco mas entendible para que puedan modificarlo cualquiera, entre los cambios esta en que le añadí lo básico de AJAX, para tener las secciones en diferentes paginas y no liarnos cuando nos toque realizar modificaciones.

Si han modificado algo pues no lo vayan a eliminar y cuando suba la nueva versión pues realizan los cambios, claro que hay que guiarse por algunos parámetros que mas adelante les comentare. Lo que si debo decirles es que e tenido problemas es añadiendo los demás links como los faqs y otros, creo que esto es crucial por que la parte del menú esta restringida a un espacio constante y si se le agrega muchos link se ven muy juntos, además por estética queda un poco feo ver tantos link en el menú de navegación.

No se creo que hay que opinar sobre que links dejar en el menú de navegación y cuales no.

De nuevo, ha realizo un muy buen trabajo.
Saludos
8)
drincast
 
Mensajes: 34
Registrado: Mié Mar 12, 2008 4:23 pm
Ubicación: Colombia

Notapor Alex_13_estu » Mié Jun 04, 2008 6:34 pm

¡Hola! Bueno, por desgracia no tengo nada nuevo con respecto al proyecto, pero me paso para responder un poco a los últimos mensajes. Gracias a Drincast por sus felicitaciones, creo que todos hacemos esto por placer pero siempre ayudan estos comentarios. Muy buen trabajo el tuyo también Drincast, así como el de todos los demás del proyecto. Bueno, al grano.

Primero, el mensaje de J. Carlos. Decir que yo también discrepaba con algunos de esos "tips", pero no sabía algunos de los datos que has dado, por lo que creo que la optimización correrá totalmente a nuestra cuenta, dejando totalmente de lado ese articulo. Lo que sí espero es poder contar con tu ayuda, porque parece que sabes un mundo sobre el tema, y cuando lleguemos al punto de optimizar código, serás una pieza más que imprescindible. Espero que nos puedas ayudar, porque la verdad es que yo soy bastante nuevo en esos temas. Y aprovecho el mensaje para hablar de rendimiento... Probé el otro día el juego un rato en mi portátil, que creo recordar que tenía un procesador algo por debajo de los 800 MHz, y me iba más lento de lo normal :( . Es decir, las figuras no bajaban a la misma velocidad que en mi máquina buena (que es de 3.4 GHz). Sé que mi portátil es algo anticuado en comparación con lo que hay hoy, y que su disco duro empieza a estar a rebosar y le costará manejarlo, pero creo que un Tetris no debe ser un juego tan difícil de mover... Y si le miras el consumo de CPU se le sube a casi el 100 %. Más que nada planteo ésto para que vayamos pensando en que nos queda una etapa muy importante una vez tengamos el juego: tratar de que consuma lo menos posible para que funcione en máquinas "viejas" (en realidad no son viejas, lo que pasa es que esto de la inoformática va muy rápido). Ahí queda el dato. En cuanto a lo de tu parche, decir que ya me lo bajé y que ya lo apliqué: va sin problemas. Pero todavía no lo subí a SF porque voy algo justo de tiempo. Además, quiero analizarlo un poco antes de hacerlo. Supongo que mañana estará subido. ¡Gracias por el aporte! Supongo que dentro de poco, con motivo de esta actualización, haré una función que sea "Dibujar" que se encargará de imprimir todo en pantalla (las puntuaciones también). ¡Ya tenemos algo menos que hacer! Pero te tengo que comentar un problema que vi:

Código: Seleccionar todo
cout<<"Puntaje original "<<puntaje<<endl;
   puntaje+=(PUNTAJE_POR_FILA*filas_borradas_conjuntamente) + (BONUS_POR_CANTIDAD_DE_FILAS_BORRADAS_CONJUNTAMENTE * (filas_borradas_conjuntamente-1)) + (BONUS_POR_TIEMPO*(TIEMPO_DE_REFERENCIA/tiempo_entre_borrados_de_lineas.GetCurrentTime()));
   cout<<"Filas borradas "<<filas_borradas_conjuntamente<<"Puntaje por fila total "<<filas_borradas_conjuntamente*PUNTAJE_POR_FILA<<endl;
   cout<<"Puntaje por conjunto "<<(filas_borradas_conjuntamente-1)*BONUS_POR_CANTIDAD_DE_FILAS_BORRADAS_CONJUNTAMENTE<<endl;
   cout<<"Tiempo transcurrido "<<tiempo_entre_borrados_de_lineas.GetCurrentTime()<<"Puntaje por tiempo "<<(BONUS_POR_TIEMPO*TIEMPO_DE_REFERENCIA/tiempo_entre_borrados_de_lineas.GetCurrentTime())<<endl;
   cout<<"Puntaje final "<<puntaje<<endl;
   cout<<endl;
   cout<<endl;
   cout<<endl;
   tiempo_entre_borrados_de_lineas.ResetTime();


En este cacho de código, que es donde imprimes las puntuaciones, creo que hay un error. Más que nada porque heché una partida y los resultados fueron los siguientes:

Código: Seleccionar todo
Puntaje original 0
Filas borradas 2Puntaje por fila total 100
Puntaje por conjunto 25
Tiempo transcurrido 39762Puntaje por tiempo 15
Puntaje final 125


¡¿Y el bonus de 15 ptos. por tiempo?! En vez de 125, debería acabar con 140. Creo que es porque al hacer esta operación: "BONUS_POR_TIEMPO*TIEMPO_DE_REFERENCIA/tiempo_entre_borrados_de_lineas.GetCurrentTime()" usas una vez paréntesis (al sumarlo a la puntuación total) y la otra no (al mostrar el bonus por pantalla). Échale un ojo y me comentas si es un fallo y si lo debo cambiar. Creo que en cuanto a ese mensaje nada más.

En cuanto al mensaje de Drincast, decir de nuevo gracias por sus halagos y corroborar lo que el dijo para que ningún despistado vaya a hacer cambios: no cambiéis nada hasta que Drincast no haga sus cambios. Creo que es eso más o menos lo que dijiste. En cuanto a lo de qué links poner... Pues yo creo que son imprescindibles uno de descargas, uno de screenshots, uno de noticias y uno para contactar con nosotros (podría ser el mismo de Acerca de). Además, no estaría mal un FAQ para dar algunos datos importantes, pero eso ya según tú veas. ¿Se me olvida algo? Si véis algún otro link que se me olvide, decidlo.

Bueno, ya para acabar, decir que ya tengo listo el parche que escribe en un archivo los datos de la partida que son interesantes para poder ver qué fallos se dieron en la partida. Lo malo es que esto entorpece un poco el código, por lo que creo que lo mejor que podemos hacer es, cuando lo suba, jugar mucho, haciendo cosas raras para que falle. Luego, si os falla, me mandáis el archivo que os voy a decir cuando suba el parche y lo analizaré para ver de dónde viene ese error. Así mejoraremos bastante el código. Bueno, ya os informaré cuando lo suba. Y en cuanto a lo de organizar el archivo de Figures... He recapacitado y creo que es mejor acabar el juego antes de organizar nada. Luego ya organizaremos y optimizaremos. Con lo cual, lo próximo que haré va a ser subir el parche de J. Carlos, subir mi parche para crear el archivo y hacer lo de la función "Dibujar".

Nada más.

Un saludo.
Última edición por Alex_13_estu el Jue Jun 05, 2008 1:21 pm, editado 1 vez en total
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor lucesita » Mié Jun 04, 2008 6:57 pm

uff... no me quiero equivocar pero mucho mucho, no vamos a poder optimizar... digo por lo del portatil, creo que ahora lo que mas tiempo nos consume es renderizar las cosas, cuando subas el parche con la funcion dibujar, le tomamos el tiempo.

ahora mismo estaba haciendo unas pruebas con SDL_ttf si... voy muy flojo en esto... hice que me muestre un numerito, pero cuando de poner texto se trata me estoy liando un poco jajaja, asi que... en cuanto puedas subes el parche, asi lo ojeo.... con respecto a los errores, es algo raro ya que dio la casualidad que pude lograr 3 veces una situacion parecida y en una sola me genero un bug, me lo genero con la letra Z, ljas demas letras parecen no tener problemas, lo mas curioso es que me lo genero una sola vez :S ahora voy a seguir probando a ver donde me lo genera.
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Notapor Alex_13_estu » Jue Jun 05, 2008 3:49 pm

¡Hola! Bueno, me paso rápido para decir que ya subí el parche que os dije. Básicamente lleva dos cosas: métodos para escribir en un archivo llamado "datos.txt" los datos de la partida y algunos cambios en el parche que me mandó J. Carlos. Voy a empezar por hablar de éste último. J. Carlos me envió al mail un parche que se encargaba básicamente de llevar un recuento de las puntuaciones, como ya dije. Además, ya he comentado lo que me ha parecido un error, pero repasando el código me he dado cuenta de que tal error no existe, :shock: . Fue un fallo mío de ayer por culpa de las prisas. Da igual que le pongas paréntesis que no, eso no va a influír en las multiplicaciones y divisiones. Perdón por mi lapsus de ayer. Retiro lo que dije en mi anterior mensaje. Pues bueno, el único pseudoerror que le vi a ese código, fue que J. Carlos no se corta al escribir el nombre de las variables. Más que nada porque creo que habías dado al timer un nombre como "tiempo_entre_borrados_de_lineas". En mi opinión, ese nombre está muy muy completo, e indica a la perfección lo que hace, pero es algo largo de más. Sobre todo porque entonces el código se hace demasiado largo. Pues básicamente lo que modifiqué de lo que hiciste fue eso, reducir un poco el nombre de las variables y añadir algún que otro comentario. Espero que no te moleste.

En el parche también añadí líneas para que se escriba en el archivo que antes dije los datos de la partida. Así podremos analizar los fallos y ver de dónde vienen. Hasta ahora ya recopilé 5 archivos con fallos que repasaré cuando esté un poco más lúcido (ahora mismo por mucho que lea el archivo no voy a sacar nada). Decir que, al igual que a Lucas, me parece que la figura que más errores da es la "Z", por lo que me centraré en ella. Pero las otras también dan de vez en cuando, y las miraré también. Si, al eliminar una fila, veis un fallo, haced bajar otra figura a un sitio cualquiera, finalizad el juego y pasadme el archivo al mail, para que le heche un vistazo. Lo que me da mala espina es eso de que dé los problemas a veces... Habrá que repasar el tema hasta encontrar los fallos.

Y en cuanto a lo de la función Dibujar... Más tarde la intetnaré desarrollar, con un poco de suerte la podré subir dentro de un par de horas. Y espero que te sirva de algo, Lucas, porque SDL_ttf es algo que a mi también se me resiste un poco. Con un poco de suerte aprenderemos los dos.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor lucesita » Jue Jun 05, 2008 5:23 pm

no se si viste el mail con la pic que te mande ayer... pero bueno... basicamente me pso reiteradas veces con la Z y con la S... intentare subir la foto pa que vean todos... yo no se por que es y me lo lio, quiza ahora con el nuevo parche me des mas informacion jajaajaj

http://img368.imageshack.us/img368/8882/erroraso1zz6.png
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Notapor Alex_13_estu » Jue Jun 05, 2008 5:48 pm

Bueno, muy muy rapidito me paso para decir que acabo de subir un parche. Básicamente subo un parche que contiene la función Dibujar para imprimir todo lo que hay en pantalla (figuras, puntuaciones, fondos...) y corrige un error que tenía mi anterior parche por culpa de los índices de los arrays. Si puedo, más tarde lo explico con más clama, pero ahora tengo mucha prisa.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Juan Carlos » Jue Jun 05, 2008 6:45 pm

Hola, con respecto a "mi bug" quiero decir que en verdad SI es un bug. Matematicamente hablando, las operaciones de multiplicacion y division son conmutativas:
Código: Seleccionar todo
a*b/c
a*(b/c)
(a*b)/c

Las expresiones anteriores son equivalentes. Ahora bien, desde el punto de vista del lenguaje C++, esto NO es asi. El lenguaje, al dividir dos "int" retorna otro "int" por truncamiento. Por lo tanto:
Código: Seleccionar todo
a=3; b=2; c=3;
a*b/c    ----> 3*2/3   -----> 6/3     ----> 2
a*(b/c) ----> 3*(2/3) -----> 3*(0)(truncamiento)  ----> 0
(a*b)/c ----> (3*2)/3 -----> (6)/3   ----> 2

Intencionalmente puse los parentesis en el codigo para el calculo de puntaje, pero al "imprimir" me olvide los parentesis y es por eso que da un resultado erroneo.

Con respecto a las variables largas, si es verdad son largas. Pero siempre es preferible usar nombres largos y descriptivos antes que usar nombres cortos y encriptados.
Para un mejor entendimiento, uno puede separar en partes una misma expresion:
Código: Seleccionar todo
variable_de_puntajes=bonus_del_tiempo * tiempo_del_jugador;
//es equivalente a
variable_de_puntajes=
                  bonus_del_tiempo *
                  tiempo_del_jugador;

Quiero aclarar, que no estoy molesto y es verdad que mis nombres son un poco largos pero estan justificados :wink:

Con respecto a SDL_ttf hay varios articulos y codigos en esta misma web. Fijense si les son utiles.

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor lucesita » Vie Jun 06, 2008 3:37 am

Gracias juan... un poco tarde lei pero bue... ya implemente con la libreria SDL_ttf

le mande un mail a alex con el parche ya que la version que hay en el repo actualmente, revive bugs ya solucionados, asi que no se que va a querer hacer con el repo que hay ahora.

Mas o menos para que se den una idea, hice una clase, en la cual segun que metodo llames, te renderiza Texto o Numeros
ej:

Código: Seleccionar todo
Miclase.SetText("rederizo texto");
Miclase.DibujarText(pantalla);


muestra en la pantalla "renderizo texto"

y con numeros, como esta implementado ahora
Código: Seleccionar todo
Miclase.SetNum(puntaje);
Miclase.DibujarText(pantalla);

muestra en la pantalla 150 (por un decir)

y tambien tiene metodos para elegir el color de la fuente, el tamaño y cosas mas (creo que el tamaño no funciona pero ya se por que, no lo modifico ahora por que tengo sueño)

asi que alex: si no checaste el mail, checalo

y bueno... una vez que suba alex al repo los cambios... vemos cuanto hay que modificar

Nuevamente Gracias a todos

Saludos Lucesita

EDIT: bueno... como de costumbre, siempre tarde para todo, no me habia dado cuenta que la version que tenia yo era anterior a la que hay en el repo, asi que la pruebo... y veo que hago jajaja

igual aqui hay una screen del puntaje
http://img253.imageshack.us/img253/3629/puntajeav1.png
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Notapor lucesita » Vie Jun 06, 2008 4:39 am

Perdon por el doble post, pero mas o menos va asi la cosa, se ve que alex hizo lo mismo que yo... mas bien parecido jajaja

con respecto a lo de las FUENTES... me tome el atrevimiento de poner la modificacion que habia echo mientras alex hacia la de el, pido disculpas por el atrevimiento.

es como dije en el post anterior el manejo.... asi que alex.. no chequees tu mail jajaja

y grandioso, ahora esta la version (sin bugs viejos, con renderizado de texto, y con el procesador de datos, es verdad que opaca el codigo pero se que va a ser de ayuda... ya mismo me pongo a ver como trabaja :D)

Saludos y disculpas nuevamente por ser apurado y no ver el trabajo que hizo en este caso, alex, con anterioridad

EDIT: No se quien hizo los bloques con certeza creo que fue drincast, pero me parece importante que cada figura tenga su color, y lo que pido es que los haga ya que yo graficamente hablando soy un queso jajaja y me parese importante, por que asi vemos a simplevista que figura es cual entre toda mezcolanza. creo que los hiciste tu drincast no? menudo trabajo pero te voy a pedir que hagas 2 mas jajaja :D

Basicamente lo que quiero es que quede como el tetris de Arcade, no se si estan de acuerdo, pero los colores son estos
O = Azul
I = Rojo
Z = Naranja
S = Celeste
T = Verde
L = Violeta
J = Amarillo

puede que este invertido el de la J y la L y el de la S y la Z pero basicamente son esos jajaja, asi que si nos haces ese favor... yo maravillado

Saludos Lucesita
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Notapor Alex_13_estu » Vie Jun 06, 2008 8:54 pm

¡Hola! Bueno, acabo de subir un nuevo parche, con el que creo que he conseguido jugar mi primera partida decente de tetris. Básicamente lo que hace es mostrar la siguiente figura en el área correspondiente. Pero tiene un problema... y no tiene nada que ver con el código. Lo que pasa es que el área para mostrar la figura siguiente es demasiado pequeña :( . Con lo cual, ahora más que nunca, debo decir: necesitamos un nuevo fondo y, el que lo quiera hacer, que sepa que tiene carta libre para hacer lo que le dé la gana. Sería bueno que respetase el total de 800X600, pero lo demás es totalmente libre. Bueno, nada más sobre mi parche. Sólo deciros que disfrutéis y que intentéis jugar vuestra primera partida. Te motiva y te reconforta muchísimo ver el resultado casi final de tu trabajo. Voy ahora a contestar a los últimos mensajes:

Del mensaje de Juan Carlos decir que ya modifiqué el código y puse los paréntesis para que se correspondiesen los datos que se mostraban en las dos operaciones. Aunque creo que, ahora que ya hemos conseguido que la puntuación se escriba en pantalla, deberíamos eliminar las líneas que escriben esa puntuación en stdout.txt. En breve lo haré. Y en cuanto a lo del nombre de las variables... Tienes toda la razón en lo de que deben ser descriptivas al 100%, lo único que pasaba es que creí que eran un poco largas. Bueno, creo que ya solucionamos este asunto así que deberíamos dejarlo.

Voy ahora con los dos mensajes de Lucas. Primero decir que me parece una idea genial lo de usar una clase para el texto. Incluso se me han ocurrido algunas ideas que implementaré en ella cuando acabemos la primera versión del proyecto, ya que creo que esta clase nos podrá servir para futuros proyectos. Cuando acabemos con esto, implementaré algunas cosillas más. Lo que pasa es que la puntuación a mi me aparece un poco más a la derecha de lo que aparece en la imagen que colgaste, y queda algo antiestético... No sé, tendré que revisar eso, pero, si vamos a cambiar el fondo, habrá que recolocar todo, así que tampoco es tan importante. Y el tema de los bloques, efectivamente fueron una de las grandes obras de Drincast. Así que la petición que tú hiciste debería atenderla él, pero si no lo intentaré yo modificando sólo los colores de lo que él hizo. De momento le doy tiempo a que se pase él por aquí y lo haga él, ya que seguro que le quedará mucho mejor que si lo hago yo. A mí me parece una buena idea, ya que las figuras quedarían más diferenciadas y probablemente sería más claro, pero hay que escuchar también otras opiniones.

Y ya para acabar, resumiré lo que nos queda por hacer:

* Revisar y debatir el problema de la finalización del juego.
* Revisar y debatir el giro de las figuras (decidir si las centramos en el mapa o guardamos las dimensiones en una matriz).
* Realizar un nuevo fondo de pantalla (más que nada para que entre la siguiente figura).
* Debatir lo que propuso Lucas de tener diferentes colores para cada una de las figuras.

¡¿Impresionante, no?! Ya casi no queda nada... Sobre todo si contamos con que tres de los cuatro puntos que quedan son más que nada de debatir, lo que no implica muchas modificaciones en el código (al menos a priori). Sinceramente, estoy muy contento con nuestro trabajo.

¡Vamos chicos, que ya estamos ahí!

Un saludo.

EDITO:

Bueno, me siento con muchas ganas de acabar el proyecto así que os voy a hacer escribir un poco para poder finalizarlo cuanto antes. Voy a plantearos unas cuestiones que espero que contestéis cuanto antes para poder sacar la primera versión cuanto antes. Allá van:

1.- ¿Créeis que el juego debería finalizar cuando una figura alcanza la fila superior o cuando una se sale del mapa? Me explico: actualmente, si una figura alcanza la fila "0" del mapa (o sea, la fila superior) el juego se acaba, pero, desde mi punto de vista, esto no es correcto, ya que el juego debería acabar cuando una figura se sale del mapa, o sea, cuando alguno de los bloques que la forman está por encima de esa fila 0. Mi opinión es que debería acabar cuando se salga, pero quiero escuchar la vuestra cuanto antes.

2.- Para solucionar el problema del giro, ¿centramos las figuras en el mapa o guardamos sus dimensiones en una matriz? Revisad los mensajes de hace algún tiempo para entenderme. Sobre este punto todavía no doy mi opinión, porque tengo que analizar un poco el código antes de decidirme.

3.- ¿Os parece bien la idea que propuso Lucas de hacer que cada figura tenga un color? Creo que no tengo mucho que explicar respecto a esto, ya que ya lo hizo Lucas en el anterior mensaje, así que sólo decir que, desde mi punto de vista, está muy bien lo que propone. Pero, de nuevo, quiero opiniones.

Bueno, básicamente esos son los puntos que nos quedan por resolver. Espero vuestra pronta respuesta. ¡Ah! Y que no se os olvide que necesitamos nuevo fondo para que la siguiente figura entre dentro de su área correspondiente.

Perdón por lo largo del mensaje y un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor drincast » Mar Jun 10, 2008 7:22 pm

Hola losersdevelopers, bueno hoy me puesto al tanto en los mensajes que han ido colocando en el foro, no he tenido la fortuna de probar la ultima versión del juego y del código veo que han realizado unos buenos cambios que estoy ansioso por probar.

Bueno primero que todo, no entiendo muy bien lo de las figuras es solo hacer el bloque básico o la figura completa, si es el bloque básico estoy casi seguro que se los mando este fin de semana, sería no mas aumentar tres colores (aunque me perdonaran no se cual es el celeste). Si es la figura completa complicado, por que creo que se debería cambiar bastante el código.

Ahora si respondo a las propuestas de Alex.

1) En mi opinión y mas por los tetris que he probado, para perder el juego no finalizarlo es cuando las figuras se pasan del limite ósea cuando se sale del mapa de juego

2) pues no se, creo que la forma de giro si tiene algunas complicaciones, pero antes de se deberían probar.

3) pues a mi me parece bien, aun que e probado algunos tetris en los que sus figuras no tienen un color constante definido, pero pues no hay problema si es de esta forma esta muy bien.

Ahora esta pregunta va para Alex, no se lo del nuevo fondo, en anteriores mensajes creo que se menciono que se podía dar una distribución diferente al orden de las cosas, solo hay que tener en cuenta las dimensiones del fondo y mas las dimensiones del área de juego, bueno pues voy a intentar bajarme el proyecto este fin de semana, para probarlo y solucionar el área en donde se muestra la siguiente figura y en lo posible crear un posible nuevo fondo.

Bueno, bueno creo que no es más hasta el momento creí que esta semana iba a tener un poco más de tiempo para revisar todo el código del proyecto pero no, es que ni siquiera he tenido el tiempo para ir a una sala a descargar el proyecto. Espero que este fin de semana si me quede algo de tiempo.

Hasta la proxima.
drincast
 
Mensajes: 34
Registrado: Mié Mar 12, 2008 4:23 pm
Ubicación: Colombia

Notapor Alex_13_estu » Jue Jun 12, 2008 3:19 pm

¡Hola! Perdonad mi pasividad esta semana, pero es que estoy hasta el cuello de exámenes y no puedo aportar nada nuevo... Estoy intentando sacar tiempo de debajo de las piedras para desarrollar algo, pero por ahora no he logrado ponerme más de 10 minutos seguidos, por lo que no hay resultados... Así que me paso muy rápido para contestar a Drincast.

Lo de las figuras, con el bloque sólo llega. Luego ya generamos nosotros las figuras a partir de él. La idea sería añadir algunos colores más, como dijo Lucas, uno por figura. Si no tienes tiempo o hay algún problema que no te permita hacerlo, coméntanoslo. No es un problema de código, es más bien de aspecto del juego, por lo que no es prioritario, pero sí sería interesante tenerlo para la primera versión. Y en cuanto a lo del fondo del juego, decirte lo que ya comenté antes: tienes barra libre para redistribuír todo lo que quieras, simplemente debes respetar el tamaño del área de juego de 250X500, Como si quieres cambiar el tamaño total de 800X600 (aunque no es muy recomendable). Lo que sí te pido es que dejes un espacio de algo más de 100X100 para la próxima figura, ya que si no volveremos a tener problemas. Creo que he respondido tus dudas, así que vuelvo a dejar las preguntas para que podamos resolver lo que queda cuanto antes. Además, pondré como va la "votación" (añado los votos de Lucas que me dijo el otro día en Jabberes):

1.- ¿Créeis que el juego debería finalizar cuando una figura alcanza la fila superior o cuando una se sale del mapa? Me explico: actualmente, si una figura alcanza la fila "0" del mapa (o sea, la fila superior) el juego se acaba, pero, desde mi punto de vista, esto no es correcto, ya que el juego debería acabar cuando una figura se sale del mapa, o sea, cuando alguno de los bloques que la forman está por encima de esa fila 0. Mi opinión es que debería acabar cuando se salga, pero quiero escuchar la vuestra cuanto antes.

Cuando una se sale del mapa -> 3
Cuando se alcanza la fila superior -> 0

2.- Para solucionar el problema del giro, ¿centramos las figuras en el mapa o guardamos sus dimensiones en una matriz? Revisad los mensajes de hace algún tiempo para entenderme. Sobre este punto todavía no doy mi opinión, porque tengo que analizar un poco el código antes de decidirme. Además, no pongo cómo va la votación porque Lucas y yo decidimos que lo mejor sería ir probando varios métodos hasta dar con uno efectivo y que no consuma mucho.

3.- ¿Os parece bien la idea que propuso Lucas de hacer que cada figura tenga un color? Creo que no tengo mucho que explicar respecto a esto, ya que ya lo hizo Lucas en el anterior mensaje, así que sólo decir que, desde mi punto de vista, está muy bien lo que propone. Pero, de nuevo, quiero opiniones.

SI -> 3
NO -> 0

Sólo me queda decir que tan sólo me queda esta semana y la próxima (hasta el jueves) con exámenes, así que pronto podré volver a ponerme al 100% con el proyecto. ¡Y creo que pronto lo acabaremos!

Un saludo.

EDITO: Bueno, el día se preveía propicio para el proyecto porque por primera vez en esta semana conseguía sacar algo de tiempo libre y, finalmente y tras dos horas y pico de estudio, me senté delante del ordenador a ver si sacaba algo. Y sí, saqué algo. Para empezar, corregí un bug que ya había comentado con Lucas por Jabberes que hacía que se borrasen parte de las filas de la siguiente figura, porque su altura era similar a la del mapa de juego. Problema solucionado. Luego reorganicé un poco la estructura de la función Bajar() de la clase Figures. Antes, a parte de bajar y comprobar la colisión, dibujaba la figura en el mapa de colisiones si la figura se paraba debido a un choque. Ahora lo de dibujarla en el mapa se hace aparte. Y creo que, cuando saque algo de tiempo, haré lo mismo con las demás funciones (quitar lo de que dibujen la figura en el mapa) porque realmente así tenemos más control sobre lo que hacer con la figura. Con ésto queda corregido otro problema que me comentó Lucas el otro día y que hacía que, si una figura quedaba en una esquina y se borraba una de sus filas, bajaba indefinidamente hasta chocar con algo. Ahora sólo baja una fila, al igual que las demás figuras.

Y ya por último, solucioné uno de los principales problemas que nos quedaban: el de al finalización del juego. Ahora ya no se acaba cuando una figura ocupa la última fila, si no cuando la siguiente figura no tiene espacio para salir (o sea, como en el Tetris clásico). Ésto lo compruebo desde la función "nuevaFigura()".

Básicamente, eso son los cambios. Creo que con lo de la finalización del juego damos un importante paso hacia la primera versión, ya que sólo queda por comprobar lo de los giros, además de hacer el nuevo fondo y los nuevos colores de figuras. ¡Vamos, que cada vez está más cerca!

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Alex_13_estu » Sab Jun 14, 2008 8:26 am

¡Hola! Bueno, como veo que no hay más mensajes desde el último que puse yo y no quiero editarlo más, tendré que hacer doble post muy a mi pesar. Pero creo que la ocasión lo merece, así que espero que no os moleste mucho.

Básicamente vengo, de nuevo, por los cambios. He añadido dos cosas nuevas: ya no se escriben en "stdout.txt" las puntuaciones (no lo considero necesario, ya que Juan Carlos ya aclaró el problema que había y ya fue resuelto) y... ¡ya he solucionado el problema del giro de las figuras! Sí, el problema que teníamos con el giro de las figuras fue resuelto, y de una manera relativamente sencilla. El otro día, hablando por el chat con Lucas, decidimos que podíamos intentar solucionarlo de tres formas: con las matrices que guardan las dimensiones de la figura (yo no estaba muy convencido con ésta), girando sólo la parte en la que está situada la figura o, una vez girado todo el mapa de la figura, haciendo que la parte en la que está la figura se desplace hacia arriba a la izquierda para que quede más o menos donde estaba. Después de pensarlo y viendo que iba algo justo de tiempo, me decidí por esta última opción, ya que es la que más fácil veía. Y la implementé, y creo que quedó bastante bien. Sólo hay una figura en la que no me gusta tanto el resiltado: la "I". Y básicamente no me gusta tanto por una razón: al estar la figura en la parte izquierda del mapa, cuando la giras se va a la parte superior, de forma que hay mucha diferencia entre su posición original y la de después del giro. A lo mejor habría que plantearse modificar los mapas de las figuras y hacer que, en vez de que las figuras empezaran arriba a la izquierda, empezasen una casilla más a la derecha. De esta forma el giro de la "I" no sería tan brusco. Pero bueno, lo dejo ahí como un interrogante para debatirlo más a delante, ya que ahora lo que interesa es que... ¡ya casi hemos acabado la primera versión! Resumo lo que nos queda para que veáis que ya casi está:

* Realizar un nuevo fondo de pantalla (más que nada para que entre la siguiente figura).
* Conseguir que cada figura tenga un color (como propuso Lucas).

¿Veis? Ya sólo quedan por hacer cosas relativas a la apariencia del juego (y que no me he animado a hacer porque el resultado final podría dar vergüenza), y eso nos supondrá modificar como mucho diez líneas de código. Bueno, obviamente hay que repasar los fallos del juego, pero para eso hay que jugar y jugar hasta encontrarlos, por lo que no lo considero un problema prioritario. Vamos, que tenemos ya la versión 0.9, a la que sólo le falta el tema final de la apariencia.

Eso es todo... ¿O no? Si me lo permitís, voy a empezar a hacer algunas pruebas, basándome en esta página para subir "releases" a SF.net . Y si lo consigo, y no os molesta, a lo mejor subo la primera versión ejecutable del juego, a la que llamaré "Alfa 1" (prefiero dejar los nombres de versiones para cuando tengamos resuelto lo de la apariencia). Por lo tanto, creo que en breve deberíamos empezar a modificar la página del proyecto para reflejar todos estos cambios... ¡Uf! Cuanto trabajo le estamos metiendo a Drincast: página web, acabar lo de la apariencia... Para ayudarte, a lo mejor me animo a hacer yo las figuras multicolor con Photoshop, ya que por lo que dijiste vas algo justo de tiempo... Lo dicho, voy a intetntar subir eso. Si lo logro, edito y os cuento.

Un saludo.

EDITO:

¡Buf! Al final me costó más de lo que pensaba subir los archivos... Lo primero que debo deciros es que os olvideis de la página que di antes: el manual está atrasado. Directamente id aquí y comprobad si os llega el nivel de inglés para entenderlo... Yo fui bastante justito, pero al final lo saqué adelante. Lo dicho, que ya subí los archivos. Son, básicamente, dos ".zip", uno con el ejecutable (para Windows) y otro con el código fuente y los dos "Makefile". Si queréis ver lo que hice, mirad nuestra página de descargas. Junté los dos archivos en un "package" que se llama "LineCube_win32", así que, cuando se suban los archivos de Linux o de otros S.O. habrá que crear nuevos "packages". Esto se hace, una vez estás logueado en SF.net y dentro del proyecto, desde la página "Admin >> File releases". Ya os dije el por qué de llamar a ésto la versión "Alfa 1.0", así que creo que no me queda mucho por decir... Bueno, sí, descargaos los archivos y probadlos. Si se me olvidó meterles algo (algún archivo que haga falta), me lo comentáis y lo tratamos de arreglar... Es nuestra primera subida a SF, así que los fallos son comprensibles. A todo ésto, como ya tenemos archivos para descargar, podemos empezar a meterle la página de "Descargas" a nuestra web... Pero sin prisas, que tampoco es algo prioritario.

Cuando lo probéis me comentáis.

Un saludo y perdón por el mensaje tan largo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

La pagina y figuras

Notapor drincast » Lun Jun 16, 2008 7:43 pm

Hola LosersDevelopers, bueno bueno como lo prometido es deuda ya envié las figuras y el fondo haber si les gusta y lo adaptan al juego cualquier cosa no mas es que me digan haber si hay que crear mas lozas de otros colores.

Lo otro es que ya termine la pagina y la subí ya a SF para que le echen un vistazo, opinen y vamos pensando que va ir de contenido en las diferentes secciones, eso si solo cree pocas secciones, pues es mejor que una pagina se ha fácil de navegar que un poco de links que pueden llegar a confundir al usuario, pero como todo esta abierto a discusión.

En estos días si tengo tiempo, les envió al correo una mini guía de cómo adicionar contenido a las diferentes secciones, por el momento no lo e creado pero creo que será pronto.

No me queda mas que felicitarlos por el excelente trabajo que han hecho ya muy pronto vamos a liberar nuestro primer proyecto y versión en la red.

Saludo
drincast
 
Mensajes: 34
Registrado: Mié Mar 12, 2008 4:23 pm
Ubicación: Colombia

Notapor Alex_13_estu » Mar Jun 17, 2008 1:55 pm

¡Hola! Bueno, me paso rápidamente porque los exámenes aprietan para decir que ya he visto las imágenes de Drincast (geniales, como siempre) y que ya las he añadido al repositorio. Con lo cual, ya tenemos prácticamente acabada la primera versión, sólo queda reorganizar un poco el código y jugar mucho para encontrar bugs. En cuanto a la página, decir que, como siempre, está de maravilla y que espero con ganas esa mini-guía (ojalá tengas tiempo de hacerla), porque me apetece bastante empezar a colgar noticias y algún que otro screenshot. No tengo más que felicitarte por tu trabajo.

Por último, ya muy rápidamente, decir que ya he empezado a revisar el código para tratar de mejorarlo en aspectos como la claridad y la eficiencia lo máximo posible, aunque espero que gente como Juan Carlos (que se vé que tiene mucha experiencia en ésto) nos ayude, sobre todo en estos temas de optimización. A ver si en los próximos días saco algo en claro y lo subo.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

AnteriorSiguiente

Volver a Planificación y eventos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado