A PAck of classic GAMEs for BEnnugd

Started by DCelso, November 05, 2008, 12:03:38 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso

#90
Sorry, me ha cascado la subida, estoy mirando el motivo, si es que eso de adelantarse es lo que conlleva :(.

Editado:
Bueno ya sí que está subida, he actualizado también la documentación. A ver que tal.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

panreyes

Quote from: SplinterGU on November 19, 2008, 01:59:45 PM
no, no, la idea del SVN es que cualquier puede modificar todo... siempre se puede volver a cualquier punto anterior y luego incluso a volver a lo saltado, es un historico de cambios al que se le permite seguir desde cualquiera de los puntos del historico o tomarlos, si no se tuviera permisos de hacerlo careceria de sentido...
cualquiera tiene que poder modificar cualquier cosa

Si, pero no te mezcla los cambios xD
Luego, si hay dos personas haciendo cambios, será un lío. Por eso lo digo :)

DCelso

Es verdad, SVN no mezcla, pero bueno sincronizar el menú sería facil, porque en verdad cuando esté estable el sistema será nada mas que añadir el include del prg, el nombre que quieres que ponga en el menú y el case con el nombre de la función principal, así que no debería de haber conflictos a nivel de línea y cada uno podría subir su línea sin destruir las de los demás.

Está claro que para los demás archivos está la cosa distinta, porque si el que está realizando el .prg le da por modificar algo en la lógica y otro por otro lado también habría conflictos de línea y se machacarían los unos a los otros las mejoras. Así que a nivel de juegos sí que es lógico hacer que nadie los toque a no ser que te de permiso el que lo está haciendo. En cuanto al menú, si quereis me voy encargando yo, el problema es que los usuarios finales (que no sé si los habrá o no) no podrán jugar a los juegos nuevos hasta que yo modifique el menú, por eso la idea de que cada uno también lo pudiera modificar. :D
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Hola a todos:
Vaya, veo que la cosa va viento en popa. Podría intentar echar una mano, pero tengo demasiadas cosas ya pendientes. Aunque claro, me dan ganas de ponerme a hacer algun juego sencillo de tanques en modo7 (porque supongo que nadie se ha puesto con ello, y es algo que quizas sea muy simple de explicar) en plan "hay enemigos que se mueven sin rumbo fijo y debes dispararles a todos pero cuidado con los terrenos que te ralentizan o te quitan vida", porque no sabría hacer la IA de un "Mario Kart" ^^U

En fin, aunque sea sólo por aportar algo, voy a responder a esta "vieja" duda.

Quote from: DCelso on November 11, 2008, 12:21:40 AM
osk, no comprendo muy bien el sistema de dificultad que hay implementado, subo de nivel pero no veo incrementarse la velocidad.El sistema de pulsado tampoco lo entiendo del todo, no comprendo el porque ir incrementando una variable mientras esté pulsada una tecla, y tampoco las dos cosillas que te dije cn anterioridad, cuando tengas un hueco mira a ver si me lo puedes aclarar, gracias.

Lo de las teclas es sencillo: si una tecla está pulsada, se incrementa su variable en 1 unidad, si no lo está, se pone a cero. De esta forma sabemos que, si vale cero, no está pulsada, si vale uno, acaba de pulsarse (en el frame anterior no estaba pulsada y en el de ahora si) y si vale más es que está pulsada y lleva mas tiempo. Simple y eficaz, sobre todo, porque simplifica la comprobación de si una tecla acaba de ser pulsada.
Es otro método alternativo a la variable de estado anterior.

Suerte con el proyecto.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

TYCO

Es que antes de subir nuevos cambios... habría que actualizar a ver si alguien modifico algo.... de todas formas supongo que SVN será lo suficientemente inteligente para comprobar cuando tu subes el MENU.PRG si hay alguna modificación de otro usuario en  el mismo archivo (que tú no bajaste) cree otra revisión o te lo indique. Así que no deberíamos tener problemas con eso.

DCelso: Cuidado con los TAB, mete siempre 4 espacios (estándar), en el Menú había unos cuantos TAB de 8 unidades, a saber en el tetris y demás los que hay.

NUM_OF_KEYS_FOR_PLAYER = 10; No es 10 sino 9.
NUM_OF_PLAYERS = 2; No es 2 sino 1.
Incluso esas dos constantes las eliminaría para no confundir y no malgastar memoria con dos constantes que no se utilizan nada más que para: int player_key[NUM_OF_PLAYERS][NUM_OF_KEYS_FOR_PLAYER];

string simple_names[100]; Esto limita a 101 el numero de juegos. Son muchos si, pero nunca se sabe XD.

graph = new_map(200,10,16); 16 por SCREEN_DEPTH

is_key_pressed (int player, int key_id); nadie va usar esa funcion cuando existe "key", no tiene sentido crear esa función, cuando solo hace esto: return key(players_keys[player][key_id]);

Esto del Leeme.txt:
b.- Está recientemente pulsada: is_key_down(PLAYER_1,KEY_A)
c.- Está recientemente soltada: is_key_up(PLAYER_1,KEY_A) 
Estamos haciendo un menú, para seleccionar un juego y controlar las teclas en todos los juegos, eso que propones es cosa de cada programador si en su juego así lo requiere, no estamos para hacer los juegos desde el menú. El menú debe ser sencillo y básico. No me parece bien eso.

Subido otro Menú y otro Leeme.txt para ese Menú, creo que hay más sencillez y sandwitch.
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

DCelso

Me parece bien todo lo que has dices, pero
no se, poner nombre a la constante 9 y 1 me parece mas facil de entender que ver un número, que al final no sabes de donde viene. Tampoco nos vamos a quedar sin memoria por dos constantes :D.
Es mas en programación en c, el estandar dice que hay que usar las macros define, para los números constantes para aclarar el código y aqui lo mas parecido es eso la constante, pero que en principio si veis que es innecesario pues nada.

Lo de usar is_key_pressed, es por que sea mas facil de entender (lo que se llama ocultación de datos), ya que el formato que propones queda bastante largo y usa una matriz. También es parte de la programación estándar encapsular los datos y ofrecer métodos para leer la información para abstraer la implementación. Además tampoco es obligado tal y como puse puedes usar la otra alternativa también.
Me vas a obligar a hacer un métido "nombre_juego"_is_key_pressed en todos mis juegos :(.

Lo de 100, bueno sí, me encantaría ver el proyecto con 101 juegos, :D, a ver si animamos a unos cuantos mas.

El poner  10 en vez de 9 y 1 en vez de 2, es porque soy programador de C y lo veo más claro así ya que no entiendo porqué div, fenix, bennu se le ocurrió hacer eso tan tonto.
En c cuando pones int valor[LENGHT], con LENGHT =10 y siempre sabes que hay 10 elementos ademas
puedes hacer algo como for i=0;i<LENGHT;i++, quedando muy claro, en bennu tienes que usar otro nombre sino te confunde  for i=0;i<=LAST_ELEMENT;i++ o for i=0;i<LAST_ELEMENT+1;i++. Tienees que sumar siempre 1 para saber el número de elementos.
Por eso a veces prefiero perder un elemento y que quede claro la longitud aunque el último dato no lo use nunca. Tampoco nos vamos a quedar sin memoria.
En fin también es otra chorrada, no pasa nada, yo ya ves que siempre busco la claridad del código a la eficiencia del mismo sin perder la eficacia :D(eficiente: resolver el problema de forma eficaz y de la manera más rápida posible). (Eficaz: resolver adecuadamente el problema para todos los casos posibles que se presenten)

Lo de is_key_up y lo otro es que era por facilitar la programación más adelante, perocomo bien dices cuando haga falta a uno que lo haga, también esto era por no repetir problemas resueltos constantemente. :D

Si te he convencido en algo dilo, sino pues nada yo me conformo, mejor esto que que te vayas y nos dejes solos :D.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

TYCO

Lo primero es que.... tienes razón en muchas cosas, lo de C reservar array[10] es usar el Array desde 0 a 9, y se programa mejor como bien dices sin usar -1 o +1 en For, etc.

Quote from: DCelso on November 19, 2008, 10:07:52 PM
Me vas a obligar a hacer un métido "nombre_juego"_is_key_pressed en todos mis juegos :(.

Si te he convencido en algo dilo, sino pues nada yo me conformo, mejor esto que que te vayas y nos dejes solos :D.

A ver yo no quiero obligar a nada, pero hay que terminar el menú final antes de toquetear el código en los juegos, a ver si te parece mejor esto:

    NUM_OF_KEYS_FOR_PLAYER = 10;
    PLAYER_1 = 1;
    PLAYER_2 = 2;
    NUM_OF_PLAYERS = 2;

En vez de PLAYER_1=0; le indicamos 1 realmente (lo mismo para el player_2), y declaramos mejor esto:
int player_key[1][9]; por int player_key[NUM_OF_PLAYERS][NUM_OF_KEYS_FOR_PLAYER]; tal como lo tenías antes.
Así no usamos el Valor "0" en las Constantes ya que toda variable declarada suele valer "0" al iniciarla y también queda más claro al leer el código.

Haciendo que KEY_UP=0; sea KEY_UP=1 y las demás sumarle "uno" también.

Una cosa... usar KEY_A, KEY_B no confundirá a la gente pensando que puedan ser las letras A, B, C y D???

Lo de TETRIS_+nombre_proceso creo que es más que justo para todos, no solo tu tetris, y queda más claro a la gente al leer el código, que sólo poner... TET_+nombre_proceso o TETR_+nombre_proceso... total los nombres de los juegos han de ser cortos (TETRIS, PACMAN, PANG, GALAXIAN.... en caso de Hundir la flota, en ingles ahora no me acuerdo como se llamaba, pero no pondriamos HUNDIRLAFLOTA_+nombre_proceso, se pondría algo más reducido lógicamente) y queda más legible.

Yo únicamente quiero llegar a un consenso en el Menú, antes de retocar los códigos de los juegos ya introducidos, pero ni quiero obligar a nada, ni quiero abandonar el proyecto.

Actualizo Menu v2_Leeme.txt y Menu v2_apagame4be.prg a ver si os gusta.
En parte, sí me convences.
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

DCelso

#97
Tío, me vas a matar, pero casi me han estado convenciendo de lo contrario (osea lo que propusiste anteriormente), podemos conducir a errores a los novatos al cambiar la filosofía de div/fenix/bennu en la declaración de arrays. A no ser que lo expliquemos y aclaremos muy bien, que la posición 0 no se va a usar.
No se como lo ves tu, yo por mí lo dejo tal y como comentas esta última vez y nos ponemos manos a la obra a crear juegos, todo me parece ok. Kizas un último detalle de estandar, que se decía que todas las constantes y macros se declaran en mayusculas y las variables y funciones en minúsculas, así que sería tetris_main en vez de TETRIS_main, pero bueno da igual yo voy a usar lo que propones hasta leer el estandar que nos está preparando SplinterGu y luego aplicaré los "replaces" necesarios para el cambio de estilo.

Espero a que me respondas un si para hacer el paso a los archivos primarios de la inform
ación que has puesto en los ficheros que empiezan con "menu V2"

Mientras cambio los nombres de los .prg y sus mains

Edit:
En cuanto a las teclas, es verdad, pero si ponesmos key_1, pueden creer que es el 1, habría que comentarlo en el código y en el leeme que no hacen referencia a las teclas a,b,c,d sino a los botones, yo puse letras porque es lo que hacen todas las consolas, parece ser mas facil de asociar para la mente que los números.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

He hecho los cambios, ahora he visto un efecto colateral al centrar la ventana, no se si es fallo de bennu o de programación pero mirando el código me parece que está bien programado
Resulta que cuando seleccionas un juego el texto de presentación no aparece centrado con respecto a la ventana centrada sino con respecto a la posición anterior que tenía la ventana si no se hubiera centrado.

A ver si alguien puede verificar el problema. Saludos.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

TYCO

Entonces dejamos por ahora las teclas como KEY_A, KEY_B, etc.

Lo de poner en Mayúsculas TETRIS_+nombre_proceso: "TETRIS_main ()", "TETRIS_scol_simplify()" es para que al ver las mayúsculas, identifique la gente rápidamente a que juego pertenece y en minúsculas el nombre_del_proceso, así es más rápido ignorar la palabra en MAYÚSCULAS y centrarse en el nombre del proceso. Si el que hace el juego no lo hace según el Leeme.txt... es muy posible que si llega otra persona al intentar leer ese código le cueste mucho más trabajo.

Pero bueno dentro del código de los juegos ya no me meto, puede estar como quiera el programador del juego en concreto. Las reglas están para un mejor entendimiento de cualquiera que quiera leer el código, pero en fin.

Así que tal como está ahora el Menú y el Leeme... me parece bien. Sólo indicar que ese Frame(350); si pulsas algo rápido las teclas de UP o DOWN no baja/sube al siguiente juego. Habría que cambiarlo no crees???

El error de que no salga centrado el texto... a mi no me pasa.... dime que haces exactamente paso a paso para yo poder reproducir el supuesto error.
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

DCelso

Me convences en todo, buena postura.
En cuanto a lo de los frame 350, he cambiado la lógica con un temporizador pero pasa lo mismo, si pulsas la tecla muy poquito de tiempo no das tiempo a que la función analice el dato.

Por lo del centrado, era culpa de la resolución, que actualmente todos los juegos están pensados para 800x600 para dar juego a unos buenos gráficos con detalles (en un futuro, porque lo que es ahora :D). Tal y como comentó SplinterGU una vez en su día es una resolución adecuada para los tiempos actuales.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

TYCO

Perfecto, pues ahora se puede Aplicar las "reglas" a el código de los Juegos.

Ahora me pongo con el PacMan para aplicarle dichas reglas haber si nos puede servir sin rehacerle desde cero.

DCelso: Te dejo hacer los honores.... Borra todas las descargas de la página, y sube dos descargas (source y binarios) cuando tengas el código de los juegos listo junto con el menú (revisión 38).
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

TYCO

DCelso estás infectando de nuevo el apagame4be.prg de TABULACIONES, configurar tu editor para que lo transforme directamente en 4 espacios (no uses block de notas claro) y corrigue el archivo apagame4be.prg sin esos TAB que descuadran todo el texto (Hay varios, todos son de lo último que has ido metiendo, en algún If, en currentTime = get_timer();, lastTime = get_timer();, etc etc. Que por cierto... todo eso es más fácil hacerlo con un simple contador++; (en el menú que subí se ve).
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

SplinterGU

Quote from: TYCO on November 20, 2008, 01:26:21 PM
DCelso estás infectando de nuevo el apagame4be.prg de TABULACIONES, configurar tu editor para que lo transforme directamente en 4 espacios (no uses block de notas claro) y corrigue el archivo apagame4be.prg sin esos TAB que descuadran todo el texto (Hay varios, todos son de lo último que has ido metiendo, en algún If, en currentTime = get_timer();, lastTime = get_timer();, etc etc. Que por cierto... todo eso es más fácil hacerlo con un simple contador++; (en el menú que subí se ve).


;) a eso me refiero...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

hola, buscando mi jueguito de wiz, pues no lo pude descargar, me encontré este otro

http://www.classic-retro-games.com/RoadFighter_35.html

es un juego que se hizo para un concurso, está muy padre, y si no está hecho con fenix, es con bennu. Creo que es con bennu, no encuentro ninguna librería  mod_*.dll pero pero si  todas las otras sdl, jpeg.dll, libpng1.dll, etc.

No se si el autor está en el foro, si es así, sería un buen juego para la compilación que estamos haciendo. Son 3 niveles, pero se podrían dejar a 1.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)