Tontadas y pamplinas + Otras dudas

Started by Futu-block, August 19, 2016, 01:28:24 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

no entiendo que dices... la collision es personal, solo retorna el ID de quien colisiona, no retorna multiples IDs, pero la verdad no entiendo que dices... me pierdo en la redaccion o en la compresion...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Futu-block

ok, quizas haya panteado mal, o igual suspendí 1º de colisión, je je ^^U

partamos de un juego donde hay un personaje que es el que manejaremos y varias plataformas, todos son el mismo proceso pero al ser creado cada uno tiene su propio movimiento y velocidad...

se trata de al colisionar con una plataforma pillarle el id, guardarla en la misma variable global para preguntarle variables publicas de estos procesos e interactuar (desplazamiento igual a la plataforma). Al cambiar de colisión con el segundo proceso me seguía respondiendo como si colisionara con el primero, no se si se debe a que guardaba la id en la misma variable o que al ser un proceso repetido repetía también la id...

Drumpi

Juer, Futu, aparte de metralleta de preguntas, te explicas como el ass :D

Entiendo que tienes un proceso A, que comprueba colisión con otro proceso del mismo tipo, y encuentra al proceso B, y guardas el ID en una variable global... ¿por qué? ¿Por qué no haces las operaciones guardando el valor en una privada, si sólo este proceso va a llamar al ID de B?
Luego coges el proceso C y haces colisión con procesos del mismo tipo y guardas el nuevo ID en la global, pero en lugar de guardar D, guarda B ¿Lo he entendido bien? Si ha guardado B es porque: collision ha devuelto B, y has guardado dicho valor allí. Si no es correcto:
- Comprueba el valor devuelto por collision: lo guardas en una variable privada y escribes la variable privada, no vayas a llamar dos veces seguidas a collision, que te conozco, y eso hace que cada llamada devuelva un valor diferente.
- Comprueba que tras guardar el valor en la global, esta se ha modificado realmente.


Por cierto, los problemas que tenías con los 8 bits de color ¿Cargaste la paleta al crear el FPG? Y luego, al cargar dos FPGs diferentes ¿Cargaste ambas paletas? y si lo hiciste ¿Asignaste la paleta a su proceso correspondiente?
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)

Futu-block

wo wo wo wooooooooooooo no tan rápido...

lo que quiero con to el rollo de las colisiones es guardar el id del proceso al hacer la colisión en una variable que puede ser global o privada, luego al ''descolisionar'' y colisionar con una ''copia'' del mismo proceso con distintas características guardar su id en la misma variable... un lio que solucioné en vez de comprobar la colisión del personaje que manejamos con las plataformas lo hice al revés, comprobar la colisión de la plataforma con el personaje y asignarle el movimiento que tiene dicha plataforma.

En cuanto las paletas y los 8 bits y cargar el fpg y cargar las paletas y cargarse a la paleta y a su hermana tambien... como que no, eso era mucho lio y fallaba mas que una escopeta de caña, asi que usé los 32 bits que no me dió problemas en ningún momento y como cambia de color porque uso colores planos, es mas ligero ya que pregunta por la altura y la anchura del gráfico y lo guarda en una variable que es la que usa para el bloque for

Futu-block

un par de cositas; la primera que me ha funcionado no se por qué sin escribir el .dcb al final



y la segunda es ¿se puede interactuar con el microfono?En caso de respuesta afirmativa; ¿como?

Drumpi

#215
No es necesario escribir el .dcb, porque se admiten tanto la extensión .dcb como .dat.
De hecho, si renombras el BGDI.exe con el mismo nombre que tu dcb puedes ejecutarlo con doble click y lanzará el juego, sin parámetros ni .bat. Lo que ya no sé es si esto mismo funciona en Linux tal cual.


Con respecto al micrófono... pues no lo sé. Con las funciones de BennuGD estándar no, pero con una DLL seguramente sí. Ya no sé si irá por SDL, por otra librería o si hay alguna forma mediante el sistema de acceder al buffer (en Linux, con una DLL que lea ficheros, se puede si se lee desde el fichero/dispositivo que hace las veces de micrófono en el sistema).
Ya me hubiese gustado a mi haber podido usar el micrófono en alguno de mis juegos... o que me pudiera haber reconocido cosas sencillas, como los números del 0 al 9. El Frikimusic, soplando directamente al micrófono, habría sido otro ejemplo.
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)

Futu-block

Gracias Drump

Otra mas, a ver si eres capaz (o quien sea)
Estoy haciendo un programa donde se guarda un fpg nuevo y quiero mostrar las imágenes pero no puedo porque todavía no he creado el fpg, hasta aquí todo normal, entonces lo suyo es preguntar si existe, como bien indica la biblia:


¿como se pregunta? habrá que cargarlo antes en una variable, pero si el fpg no existe no puedo cargarlo en una variable, a menos que al preguntar si existe meta la ruta entre comillas...
No se, pero no tengo ni idea de este tema

Abash

 Entiendo que lo que te falla es que no puedes ver las imágenes porque el fpg de momento no existe.

Pues tienes la opción de crear un fpg en memoria e ir metiendo las imágenes que quieras, así si que las puedes ver.

  new_file=fpg_new();

Y ya después lo guardaras físicamente.
Acordándote de descargarlo cuando ya no te haga falta claro esta.

        if (fpg_exists(new_file))
       unload_fpg(new_file); end

Futu-block

no se me había ocurrido crear un fpg en memoria y guardarlo al salir, me parece muy ingenioso...
gracias, karma++

Drumpi

Pero ojo, para saber si existe un fichero FPG en disco, no se usa FPG_EXISTS, sino FILE_EXISTS de la mod_dir. De hecho, con FILE_EXISTS puedes saber si existe cualquier tipo de fichero en disco.
Es un poco más complicado si quieres usar rutas relativas, porque primero te tienes que mover por las carpetas usando el comando CD, igual que si usases la línea de comandos (puedes usar tanto DIR como CD para obtener la ruta de la carpeta a la que estás apuntando en ese momento, siendo la ruta por defecto la misma que donde está el DCB).

También se pueden salvar ficheros .MAP, y de imágenes, pero no recuerdo si sólo BMP o PNG o ambos. Para JPG se necesita una librería externa... y había una que guardaba una secuencia de imágenes como un video :P ...Y las locuras que podrían ser posibles con el módulo VLC ¿o eso lo soñé?
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)

Futu-block

npi, aunque me da igual porque a la hora de guardar el fpg le pongo el nombre que quiera y me hace una copia del actual con los gráficos nuevos ya renombrados

Futu-block

Otra mas, como crear una ruta a la carpeta anterior, por ejemplo si yo quiero guardar un png en la carpeta que contiene hago esto:


//SAVE_PNG(0,100,"Foto.png")


ya se que eso vá en la ''carpeta madre'' y si quiero dentro de una carpeta hago "/carpeta/foto.png" pero si fuera para arriba?? a la carpeta ''abuela''

Otra; Tengo que poner el primer valor como 0 porque si pongo el nombre del fpg no sale bien, ¿es normal o me estoy saltando algo?


Nota mara mi mimo:
-La imagen se guarda donde esté el .dcb

Abash

 Mira si te sirve esto.

Process Main()
Private
string savedir = "";
string savegamepath = "";
int ui_fpg;
Begin

    ui_fpg=load_fpg("fpg/UI.fpg");

    savedir = cd();
    say(savedir);
savedir = chdir("..");
    say(savedir);
savedir = cd();
    say(savedir);
savegamepath = savedir + "\Foto.png";
    png_save(ui_fpg,7,savegamepath);
    write(0, 0, 20, 0, ""+savegamepath);
  //  Repeat
        frame;
  //   Until(key(_ESC))

End

Faltan los includes.
Toma la imagen 7 (en mi caso) y la saca como png a la carpeta anterior de donde esta el prg.
Es un copiar/pegar de lo que sale en la wiki. Le e quitado el repeat para que se corte y ya esta. Es solo para darte una idea.

La wiki es tu ayuda jejeje.

[url]http://wiki.bennugd.org/index.php?title=Png_save][/uhttp://wiki.bennugd.org/index.php?title=Cdrl]
[url]http://wiki.bennugd.org/index.php?title=Png_save


Futu-block

Quote from: Abash on January 27, 2020, 01:53:00 PM
La wiki es tu ayuda jejeje.

Nope, cuando son cuatro pamplinas que uno no se acuerda o lo que sea, como lo busque en la wiki me vuelvo loco

Drumpi

Quote from: Futu-block on January 24, 2020, 08:19:47 AM
npi, aunque me da igual porque a la hora de guardar el fpg le pongo el nombre que quiera y me hace una copia del actual con los gráficos nuevos ya renombrados

Bueno, si lo que necesitas es un FPG y no un gráfico suelto, pues nada, hazlo así.
Pero recuerda lo que te he dicho más de una vez: el camino más fácil no siempre es el mejor, aunque funcione "más o menos". :D
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)