Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Futu-block on August 19, 2016, 01:28:24 PM

Title: Tontadas y pamplinas + Otras dudas
Post by: Futu-block on August 19, 2016, 01:28:24 PM
Hay cosas elementales de las que nunca caigo o cuando lo busco no lo encuentro porque suelo llamarlo de otra forma...

Por ejemplo: ·Quiero designarle una variable a un grafico, ¿como se haría?

int = var_grafic;
begin

graph = var_grafic;
var_grafic = 125;
...

o sería al reves

var_grafic = graph;
graph = 9;

...
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: l1nk3rn3l on August 19, 2016, 03:33:43 PM
 :)


asignar todas a la vez

var_grafic = graph = 9;

o inclusive en una condicion..

if ((var_grafic = graph = 9) == 9) // es igual a 9 ?


todas son validas , porque bennu soporta la sintaxis similar a lenguaje C

Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on August 19, 2016, 09:32:38 PM
bien gracias, ahora toca de ''copiar codigos''

en el codigo que he copiado de alugna que otra persona pone:

var_grafic = load_png("carpeta/archivo.png);

quiero que en vez de cargar un png sea un numero del fpg, ¿seria asi:?

var_grafic = graph = 9;
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on September 01, 2016, 11:03:10 PM
Otra (a ver si ahora hay respuesta ::) )

¿como colisiono un proceso que no tiene escrol (CTYPE = C_SCROLL) con uno que si tiene??
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: panreyes on September 01, 2016, 11:42:08 PM
Sobre la pregunta anterior, sí.

Sobre colisiones con diferentes ctype, creo que tendrás que usar un proceso análogo fuera o dentro del scroll para que colisione bien, haciendo el cambio de coordenadas de scroll a screen. No tengo tiempo para explicarlo más a fondo, sorry xD
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on September 04, 2016, 10:55:28 PM
no problem, usaré usa función

------------0--------------------
Ahora es otra duda la que me surge, ¿como se llama eso de medir la distancia de un esprite a otro?
quiza es ''map get point'' o esto lo que hace es buscar el angulo??
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: radiosity on September 05, 2016, 07:19:36 AM
En DIV creo recordar que la funcion era distance(). Creo que en Fenix era igual, supongo que seguira siendo la misma. Map_get_point() me suena mas a coger puntos concretos dentro de los mapas de durezas.

Respecto a las variables para los graficos...
Asignando un valor a graph, directamente coge el numero de grafico dentro del FPG (FPG asignado al proceso con la variable local 'file') . Si vas a usar ese tipo de grafico no te hace falta usar otra variable y puedes trabajar con graph, a no ser que necesites guardar que 'grafico' tenia antes de alguna accion concreta.

Saludos
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: SplinterGU on September 05, 2016, 12:03:50 PM
Quote from: Futublock on August 19, 2016, 09:32:38 PM
bien gracias, ahora toca de ''copiar codigos''

en el codigo que he copiado de alugna que otra persona pone:

var_grafic = load_png("carpeta/archivo.png);

quiero que en vez de cargar un png sea un numero del fpg, ¿seria asi:?

var_grafic = graph = 9;


puedes hacer

var_grafic = graph = load_png("carpeta/archivo.png);

lo que hace eso es equivalente a hacer:

graph = load_png(...)
var_grafic = graph;

o sea,

graph es igual al retorno de load_png, y luego de que graph tiene valor, var_grafic es igual al valor de graph.

piensa en que siempre las asignaciones, operaciones y comparaciones, retornan un valor; en el caso de las asignaciones es el mismo valor que se le asigno
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: radiosity on September 06, 2016, 07:04:46 PM
Respondo de nuevo para corregir la funcion para determinar la distancia entre procesos.
La funcion es : get_dist(id_proceso)
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on September 06, 2016, 09:48:55 PM
pero lo que mide es la distancia en pixeles? en ''diagonal''?

al final lo hice restando x de procesos, que me sirve, pero probaré el get_dist
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Drumpi on September 07, 2016, 12:25:15 AM
Sí, te devuelve la distancia de la hipotenusa, en pixels y en valores positivos (ignora, o debería, los valores de resolution).

El tema de las colisiones deberías experimentarlo tu, pero creo que dos procesos colisionan si se superponen en pantalla, independientemente del c_type. Pero donde tendrás problemas es en las mediciones de distancia y en la posición, por tener valores de X e Y muy diferentes.
De todas formas, no arriesgues, y manten los procesos que interactúen dentro del mismo c_type. Es más, pregúntate si es necesario que alguno de los procesos esté dentro del scroll.
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on September 07, 2016, 07:51:09 AM
Si, es necesario que esté dentro del scroll...
Antes no era pero ya si...
Total, que arreglao
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on September 26, 2016, 09:34:15 PM
Otra: (que es nueva pa mi pero por no abrir hilos nuevos...)

·¿Como le recorto a un grafico una seccion de determinada forma para despues ponerle otro grafico detras?
vamos que te lo explico con un video:
http://www.youtube.com/watch?v=yQAx5_CiBqI
lo que quiero es mover los ojos dentro del recorte del grafico, que evidentemente no puedo hacer el grafico de la cara con los ojos recortados porque los ojos son un grafico que se añadiran despues a la hora de hacer el comic se le añadirá los ojos al gusto, uno o dos, el segundo espejado. ¿vale con region?

·¿como traspaso los valores de color rgb a #000000 hexageximal? hace poco tenia un ejemplo pero no lo encuentro...
me interesa una nomenclatura mas corta, aunque use una función para ello
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Drumpi on September 27, 2016, 12:50:49 AM
No puedes crear regiones redondas. Puedes usar MAP_PUT_PIXEL de color cero para hacer determinadas zonas transparentes, pero si luego se va a modificar, necesitarías restaurar el gráfico al estado anterior y volver a pintar.
Para saber qué pixels pintar y no necesitarías tener aparte un gráfico llamado "máscara", del mismo tamaño que el gráfico qe quieres modificar. Si el pixel que coincide en coordenadas en la máscara no es transparente, deberías pintar un pixel transparente en la imágen original (o puedes hacerlo al revés, es como el canal ALPHA de los PNGs, pero en lugar de estar en el mismo gráfico, está aparte, y tienes que hacer tú el trabajo de pintar).

La otra forma sería que los ojos estuvieran en la parte de detrás, y les pintases unas "ventanas" transparentes a la cabeza usando el mismo método de antes.

Ten en cuenta que Bennu, aunque es un lenguaje de alto nivel, las cosas que no sabe hacer tienes que programarlas tu a bajo nivel. Con otros lenguajes o motores gráficos te lo hace sólo, pero entonces pierde la gracia :D :D ^^U
Tengo que dejar de escribir de noche, nunca tengo tiempo para dar una respuesta más completa con dibujitos y todo eso :P
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on October 06, 2016, 03:37:23 PM
cuentarme la necesidad de cambiar el punto de control de los graficos...

¿mas que ná para usar menos calculos? no es lo mismo que en la coordenada dada sea el centro del grafico que empezar el grafico en la coordenada dada, creo

¿como pongo un punto de control a una imagen cargada??
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on October 06, 2016, 11:09:10 PM
Otra:

si estoy pulsando el raton (mouse.left) y aprovecho y muevo lo que sea, ese proceso adopta la x,y del raton y toa la pesca, pero cuando sale de un area o de una determinada coordenada debe de pasar como si se soltara el raton (!mouse.left) pero no puedo dar esa orden...

¿como hago para que cuando necesite forzar el soltar el click deje de actuar el raton?
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Drumpi on October 07, 2016, 12:06:58 PM
Cambiar el punto de control es útil para eso, simplificarte la vida. Por ejemplo, en los juegos de plataformas, es más conveniente tener el punto de control centrado en la parte de abajo a la altura de los pies, porque por lo general, vas a hacer comprobaciones de dureza con el suelo, y es más simple si el punto de control está directamente en contacto con él... aunque ya no podrías usar las rotaciones ^^U
Otro ejemplo: crear una ventana o una imágen de muestra. Para colocarla en una posición puede ser interesante que el punto de control, en lugar de estar en el centro y luego tener que consultar cuál es la mitad del tamaño de la imagen para poder alinearla, puedes necesitarla en la esquina superior izquierda, para eso usas
SET_CENTER(file, graph, x, y);
y listo. También puedes usar SET_POINT con el punto 0... o con cualquiera si necesitas tener otros puntos de referencia, aunque se escale, rote, etc...

Para el tema del ratón depende de cómo hayas hecho el código.
Yo le crearía al proceso varios estados, para no tener al proceso atrapado en un bucle secundario hasta que volviera a su estado de reposo.
Los estados serían algo como "en reposo", "agarrado", "seleccionado"... En tu caso tendría los dos primeros (ponle los valores 0 y 1, o usa constantes, que para esto es muy útil).

Tras la inicialización del proceso (ponerlo en un sitio, setear file y graph, etc) y entrar en su bucle principal (tienes que tener un bucle para llamar a frame y mantener al proceso vivo ¿no?) tendría un switch que miraría su estado actual.
En el estado "reposo" comprobaría si se ha hecho clic sobre él (ya sabes: si antes mouse.left no estaba pulsado, ahora sí, y sus coordenadas son las del proceso) y cambiaría de estado.
En el estado "agarrado" haría lo que tiene que hacer: moverse, animarse o lo que sea. Pero también comprobaría si se da alguna de las condiciones para volver al estado "reposo", en tu caso, si se ha soltado el ratón o si las coordenadas están fuera de un rango.

Algo así

process vetana (file, graph, x, y)
private
    int estado;
    int ant_raton;
begin
    loop
        switch (estado)
        case 0: //reposo
            if (!ant_raton && mouse.left && collision(type mouse))
                estado = 1;
            end
        end
        case 1:
            x = mouse.x;
            y = mouse.y;
            if (!mouse.left || (x < 0) || (x > 100) || (y < 0) || (y > 80))
                estado = 0;
            end
        end
        end //switch

        ant_raton = mouse.left;
        frame;
    end
end


Incluso puedes tener un tercer estado para que mientras se siga pulsando el ratón y esté fuera de la zona que quieres siga "agarrado" pero no se mueva hasta que vuelva a entrar en la zona que quieres, momento en el que vuelve al auténtico estado "agarrado", pero que si se suelta el ratón vuelva al estado reposo.
Esto es lo que se llama una "máquina de estados". Échale un vistazo al tema y a cómo se dibuja. Básicamente son círculos con estados, que se unen con lineas cuando se puede pasar de uno a otro y bajo qué condiciones. Son muy úitles y se utiliza para todo: desde los estados de los botones en un IDE, hasta en inteligencia artificial.
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on October 07, 2016, 12:53:41 PM
Es muy interesante, y era lo que precisamente andaba buscando, gracias
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on October 20, 2016, 11:09:05 PM
Otra no tan tonta:

a un proceso le asigno un grafico que consulto con map_info, luego le modifico el size_x/y pero los resultados sigue siendo los mismos, a pesar que los meto dentro del loop:


...
private
int alto,ancho;

    begin
    write_var(0,10, 20,1,alto);
    write_var(0,10, 30,1,ancho); 
    loop
        alto = map_info(0, graph, g_height);
        ancho = map_info(0, graph, g_width);
...


Otra:

para que un grafico no se salga de la pantalla o area visible, ya que lo muevo con los cursores, lo suyo es una colisión con un grafico ''tope'' que anule la pulsación de la tecla, una dureza, vamos; pero sirve si le aumento el size_x/y ?? porque lo que he puesto antes me informa que el grafico sigue midiendo lo mismo...
O la colision es con el grafico independientemente de el tamaño o size_x/y que tenga


Otra mas:
He pensado que si el size aumenta por porcentajes, hacerlo a la cuenta de la vieja y hacer la operación por otro lado...

¿como se hace operaciones de sumas o restas de un porcentaje? (esto si que es de parvulitos, ja ja)
¿seria correcta la siguiente expresion pues?

tamaño = 564 + 12%;
equivalente a 564 altura sprite + 12 size_y = tamaño

Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Drumpi on October 21, 2016, 12:29:18 AM
MAP_INFO te devuelve la información del mapa, del gráfico, no del proceso. Por eso siempre te devuelve el mismo valor, porque no influyen las variables de ningún proceso.
Sin embargo, collision si que tiene en cuenta el tamaño, la rotación, etc del proceso, porque la colisión va asociada al proceso, mientras que MAP_INFO lo está a la imagen que has cargado.

Si quieres saber qué tamaño tiene un gráfico de un proceso, depende de si estás usando SIZE o SIZE_X y SIZE_Y

tamaño_x = (MAP_INFO(file, graph, G_WIDTH) * size) / 100;
tamaño_y = (MAP_INFO(file, graph, G_HEIGHT) * size) / 100;

o bien

tamaño_x = (MAP_INFO(file, graph, G_WIDTH) * size_x) / 100;
tamaño_y = (MAP_INFO(file, graph, G_HEIGHT) * size_y) / 100;

ya que tanto size, como size_x y size_y indican porcentajes (y son independientes unos de otros, ojo con eso). 100% debería quedarte el mismo tamaño, o sea, que debería multiplicarse por 1 = 100/100
200% debería quedarte el doble, o sea, que debería multiplicarse por 2 = 200/100.
50% debería quedarte a la mitad, o sea, que debería multiplicarse por 0'5 = 50/100 = 1/2.
Es una simple regla de proporcionalidad o "regla de tres", de las que se estudiaban en 6º o 7º :D
Eso sí, asegurate de realizar las multiplicaciones antes que las divisiones. Estamos usando enteros y en las divisiones descartamos los decimales, perdiendo precisión en el camino.
Title: Re:tontadas y pamplinas en las que sigo cayendo
Post by: Futu-block on November 21, 2016, 05:46:31 PM
Vale, otra:

·Quiero hacer click en una imagen y moverla; lo que hago es: al hacer click la x/y de la imagen (es un proceso con una imagen graph = tal;) pasa a formar parte del raton, con lo cual pega un salto muy grande si el raton está muy lejos del centro del grafico...
¿como se remedia?

Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on November 21, 2016, 05:55:53 PM
al momento del click calculas el desplazamiento/offset entre coordenadas del mouse - coordenadas del grafico... y luego vas sumando estos desplazamientos a las coordenadas del grafico mientras este se este moviendo.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 21, 2016, 05:58:34 PM
¿y si le cambio el punto de control a donde clickeo?
es mas facil o no?

¿como se le cambia el centro?
creo que lo tengo en anteriores mensajes...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on November 21, 2016, 06:01:12 PM
Quote from: Futu-block on November 21, 2016, 05:58:34 PM
¿y si le cambio el punto de control a donde clickeo?
es mas facil o no?

¿como se le cambia el centro?
creo que lo tengo en anteriores mensajes...

pero estas modificando el grafico original, y tenes que calcular el offset y ademas de eso recuperar luego el centro... me parece que es mas problematico
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 21, 2016, 06:23:00 PM
bien, justo al inicio de esta pagina me lo explica drumpi, lo probaré asi a ver que problemas dá...

tambien usaré el offset ese que me dice splinter, que si lo he entendido bien no se refiere a ninguna función en especial llamada offset ni nada, sino a la diferencia entre el raton y el centro de la imagen ;)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on November 22, 2016, 12:33:07 AM
Quote from: Futu-block on November 21, 2016, 06:23:00 PM
bien, justo al inicio de esta pagina me lo explica drumpi, lo probaré asi a ver que problemas dá...

tambien usaré el offset ese que me dice splinter, que si lo he entendido bien no se refiere a ninguna función en especial llamada offset ni nada, sino a la diferencia entre el raton y el centro de la imagen ;)

eso mismo
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 22, 2016, 10:18:27 AM
bueno, o no lo estoy haciendo bien o me falla esto:


            if (mouse.x > parte[foco1])
                nueva_x = mouse.x - parte[foco1].x;
            end


hago una comprobación si la x del raton mide mas que la x del proceso, y luego le asigno la resta de ambas...

·¿acaso estoy obviando algo o haciendo algo prohibido?
·¿deberia hacer la resta sin preguntar si es payor ni nada? igual si uso datos negativos es mas facil

y para terminar, lo uso en un proceso llamado por otro, osea en un hijo y me devuelve este error solo al hacer click

ERROR: Runtime error in BOTONERA2(65539) - Process 0 not active

Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on November 22, 2016, 09:08:10 PM
Sin leerme el código, te digo ya que estás comparando la coordenada X del ratón con lo que parece el ID de un proceso :D
También te digo que, antes de comprobar las variables locales de un proceso, te asegures:
- De que la variable NO VALE 0 (que es el error que te está dando).
- De que el proceso en cuestión existe (comando "exists").

Del resto no te puedo ayudar ahora, sorry, no estoy para leer ni mi propio código ^^U (llevo una semana que os tengo abandonados en Telegram, a ver si se acaba esta racha de trabajo, ayudo a DCelso con la IA de los enemigos y el pathfind, y empiezo el proyecto de Android, que ya va siendo hora).
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 22, 2016, 09:54:23 PM
me puedo dar por respondido...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 19, 2016, 10:43:49 PM
Otra y nueva...
¿¿
map_get_pixel y map_put_pixel no atiende a variables privadas??

Es decir, tengo dos procesos ''clon'' vamos practicamente son iguales a excepción de la numeración de los graficos
y no, no puedo simplificar mas pues son procesos independientes con comportamientos iguales... (o alguien que lo simpilfique por mi :P lol )

El caso es que le pongo variables privadas pero con el mismo nombre y le hago el map get pixel y luego el put  pixel pero al parecer esas funciones se la sudan y hace solo del primer proceso...

Al parecer lo que debo de hacer es cuando haga el map get pixel en el primer proceso, me lo haga en los dos, aunque no me interesa porque tarda mucho, debo hacerlo; y digo que tarda mucho porque son 12 graficos por cada proceso mas o menos 250.000 comprobaciones (500x500) y cambio de color multiplicado por 3 procesos...
los calculos se desbordan

·Conclusión, o estoy haciendolo mal y si atiende a variables privadas dentro de los procesos, o es como el path finder, que solo hay uno para todo
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on December 20, 2016, 01:09:14 AM
Sí que atienden a variables privadas... de hecho, les da igual: tu les pasas un valor de file, un valor de graph, y una posición, y estas funciones hacen su trabajo, e ignoran por completo si esos valores corresponden al proceso que los llama, a los valores de otro proceso, o son valores que realmente no son de ningún proceso. FILE será el que tu le pases de algún load_fpg que hayas hecho (o 0 si es del fondo de la pantalla o de algún map que no pertenece a ningún FPG porque has usado new_map, por ejemplo), MAP será un valor entre 1 y 1000 si es de un FPG o más si es de algún mapa que hayas creado en ejecución, y las coordenadas... bueno, vale cualquier coordenada que te de la gana, pero lo suyo es que estén dentro de dicha imágen :D

Si te están haciendo lo mismo es que ambos procesos están llamando a la función con los mismos valores de file y map. Si lo que quieres es que modifiquen mapas diferentes, averigua por qué ambos tienen los mismos valores y no son diferentes.

Difícil dar mas detalles sin ver el código.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 20, 2016, 07:32:26 AM
Uy, el código te lo puedo mandar gustosamente para que te lo mames enterito...
De toas formas, he resuelto el tema cambiando de variables en cada proceso, pero si te quieres entretener revisando porque no funca, allá tú...

Esta noche he tenido una "visión" y he pensado que si le hago un "volcado de datos" ya no tengo que hacer más la comprobación, sino sólo el repintado de pixeles según el array o variable que use, pero no sé cuán de efectivo es usar un array para determinar que pixel debo colorear o no antes de un gráfico...

Con el volcado de datos me refiero a que cada pixel lo guardo en una variable, si tiene el color adecuado le pongo 1 y si no 0, en un momento dao puedo jugar con más números, ergo más colores pero centrémonos en la clave... ¿Gastaría menos memoria que hacer un map get pixel? Date cuen que es más o menos 500 x 500 pixeles, 250000 comprobaciones multiplicados por 12 o más...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: DCelso on December 20, 2016, 10:47:22 AM
Voto por expulsar a futu por no saber hacer nada en Bennu y preguntar tontadas.  :o
¿Quien se suma?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on December 21, 2016, 01:40:26 AM
Yo me sumo... pero dado que he hecho preguntas tontas en el pasado, me temo que me auto-resto y nos quedamos igual :D

Futu: si el array lo haces de tipo BYTE, entonces te consumirá casi la misma memoria que un mapa de 8bits (256 colores), si el array es de tipo WORD, consumirá casi la misma memoria que un mapa de 16bits, y si es de tipo INT pues que un mapa de 32bits. Si sólo vas a guardar valores 0 y 1, y opcionalmente menores que 32) usa byte y se acabó (podrías usar menos bits, pero si estás preguntando esto, como te hable de máscaras binarias, te tiras por la ventana) :D
Otra cosa es el tiempo que se tarda: haz la prueba, un código que haga 100000 map_get_pixel antes de frame, y otro que lea los mismos valores de un array. La diferencia de velocidad se va a notar.

Pero es lo que decimos siempre: si esto es para ordenador, no vas a apreciar la diferencia, porque los ordenadores de hoy y de hace 10 años mueven eso y tres veces más, así que usa el método que más cómodo te sea.
Si se ralentiza el ordenador, o tienes la experiencia suficiente para saber que se va a ralentizar, entonces es cuando debes preocuparte del rendimiento. OJO, eso no significa que puedas derrochar los recursos como te de la gana ¡gasta con responsabilidad! No me gastes 1GB para tu programa de comics.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 21, 2016, 08:55:33 AM
Quote from: DCelso on December 20, 2016, 10:47:22 AM
Voto por expulsar a futu por no saber hacer nada en Bennu y preguntar tontadas.  :o
¿Quien se suma?
Que perrete...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on December 21, 2016, 05:40:15 PM
También menudo ha ido a decir eso :P
Aun estoy esperando a que me diga que el prota y los malos funcionan bien para seguir con el proyecto que tenemos a medias :P Que no sé qué tengo que programar :D :D :D

Y ya os juntais conmigo y al mundo le quedan días para implosionar y mandarlo todo a hacer gárgaras. ¡Sus teníais que haber juntao con Momia!
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: DCelso on December 21, 2016, 05:47:09 PM
Heroes III
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on December 23, 2016, 04:30:12 PM
No la he visto, me quedé en la segunda temporada, y como suspendieron la tercera no la emitieron en abierto y perdí interés :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 23, 2016, 06:01:47 PM
Jajajaj

Ahora que he terminado el editor de caras, y mientras no haga el de cuerpos...

Me pondré con el proyecto alcoba, lol, lo bueno es que no tengo que programar nada, si acaso el motor de plataformas de pantalla fija, que tengo tres o cuatro juegos pendientes

Por cierto, necesito colaboración :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 30, 2016, 09:39:21 PM
Otra:

¿Hay alguna forma de que cuando se compruebe una cosa no se compruebe otra? tranquilos que me explico:
Para mover en las cuatro direcciones posibles, si a cada una le asocio una tecla, para cuando valla arriba por ejemplo, tendria que hacer una comprobación de las demas teclas para que no se pulsen y eso supone muchas comprobaciones...

Ahora, si no hay tu tia...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: DCelso on January 01, 2017, 07:09:42 PM
elseif

http://wiki.bennugd.org/index.php?title=If
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: DCelso on January 01, 2017, 07:19:15 PM
prueba este proceso

process fututontada1()
begin
  file = load_fpg('test.fpg');
  graph = 1;
  x = 160;
  y = 120;
  Loop if(key(_up))    y-=5; elseif(key(_down))  y+=5; elseif (key(_left))  x-=5; elseif (key(_right)) x+=5;
    end
  End
end

Ponlo en pantalla y prueba a moverlo.

este código funciona con la prioridad arriba, abajo, izquierda y derecha,

es decir, todas las teclas pulsadas irá hacia arriba

todas las teclas pulsadas excepto arriba, irá hacia abajo

etc.

NOTA: Antes de que se me adelante Drumpi te diré que funciona igual que un switch case.

Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 01, 2017, 07:45:56 PM
jobar, yo usaba else if y siempre me fallaba....

Quote from: DCelso on January 01, 2017, 07:19:15 PM
este código funciona con la prioridad arriba, abajo, izquierda y derecha,
es decir, todas las teclas pulsadas irá hacia arriba
todas las teclas pulsadas excepto arriba, irá hacia abajo
etc.

Ya estuve estudiando haciendole millones de variables y siempre daba orden al que escribia primero, mas o menos era eso lo que queria evitar pero veo que no se puede, asi que me voy a inventar que tiene mas prioridad de las cuatro direcciones
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: DCelso on January 01, 2017, 07:57:31 PM
1: arrega esa "b" de estuve.
2: a ver explica qué quieres que haga exactamente y te intento ver cómo se hace.
    En programación no existen los "no se puede" si no los "no se cómo" :D.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 01, 2017, 09:58:34 PM
1: lo estuve dudando, es de primero de parbulitos :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 02, 2017, 01:31:35 PM
¡Hey! No digo que no se pueda usar SWITCH, sólo he dicho que SWITCH te hace las 4 comprobaciones, y con IF no :D
De hecho, este código me parece de los más elegantes que he visto:

switch (true)
case key(_up): ...
case key(_down): ...
case key(_left): ...
case key(_right): ...
end //switch


Te diría que puedes comprobar las 4 direcciones de golpe usando máscaras de bits, pero es demasiado avanzado para ti ^^U
Bueno, te lo pongo y ya lo investigas por tu cuenta, sólo necesitas conocer álgebra binaria para entenderlo:

CONST
    _CTE_MOVE_UP = 1;
    _CTE_MOVE_DOWN = 2;
    _CTE_MOVE_LEFT = 4;
    _CTE_MOVE_RIGHT = 8;
END

(...)

byte direcciones;

//Comprobamos y memorizamos las teclas que se han pulsado.
direcciones = 0;
if (key(_up)) direcciones += _CTE_MOVE_UP; end
if (key(_down)) direcciones += _CTE_MOVE_DOWN; end
if (key(_left)) direcciones += _CTE_MOVE_LEFT; end
if (key(_right)) direcciones += _CTE_MOVE_RIGHT; end

//Y ahora hacemos lo que se necesita hacer
if ((direcciones & _CTE_MOVE_UP) == _CTE_MOVE_UP) y--; end
if ((direcciones & _CTE_MOVE_DOWN) == _CTE_MOVE_DOWN) y++; end
if ((direcciones & _CTE_MOVE_LEFT) == _CTE_MOVE_LEFT) x--; end
if ((direcciones & _CTE_MOVE_RIGHT) == _CTE_MOVE_RIGHT) x++; end


Y esto no tiene prioridad y te ahorras más de la mitad de las comprobaciones. Pero ya digo, hay que pensar en binario :P
Y tampoco es que tenga mucho impacto respecto a lo que estabas haciendo... salvo que estés portando a algún dispositivo muy limitado en recursos (GP32, Android2.1...).
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 02, 2017, 11:25:45 PM
Otra:

Necesito una bola de demolicion, he buscado el hilo del ejemplo pero no doy con el...
¿será en otro foro? lol

pos eso, en un centro x,y necesito que averigue la distancia de otro proceso y solo le permita moverse en circulo sobre el a una distanca, como la bola de demolición del doctor robotnik en el sonic o un pendulo colgando, etc...

ya me respondo yo con el trozo de codigo que necesito:

    loop
        seno=sin(angulo)*radio;
        coseno = cos(angulo)*radio;
        x = var_relativa_x + coseno; 
        y = var_relativa_y + seno;
        angulo = angulo % 360000;            // se redondea cada vuelta
        angle = -angulo;                        // se orienta la imagen
         
        if(key(_right)) var_relativa_x+=5; end
        if(key(_left)) var_relativa_x-=5; end
        if(key(_up))var_relativa_y-=5; end
        if(key(_down))var_relativa_y+=5; end

        if(key(_1))angulo-=5000;end
        if(key(_2))angulo+=5000;end

        if(key(_esc))exit();end
   frame;

Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 08, 2017, 09:15:28 PM
Quote from: Futu-block on February 08, 2017, 08:53:05 AMPara hacer un programa y no un juego yo programo con loop y eso de comprobar 25~50 veces al segundo en un programa que practicamente no variará sino clicas en algun sitio o arrastras como que no es muy util...

¿se puede poner algo como ''until ... mouse.left'' o algo asi? o el until tambien hace 25~50 comprobaciones al segundo??

Pos eso, ¿no es mejor usar en cada proceso un bloque ''until'' en vez un bloque ''loop'' que comprueba N veces por segundo?
o en un bloque ''until'' tambien comprueba en cada frame??

y ya que enstamos en caliente, ¿se puede hacer un bloque ''until mouse.left''
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on February 10, 2017, 05:46:25 PM
No, Bennu no funciona ni por eventos ni por interrupciones, así que, como mínimo, tendrás que comprobar si mouse.left.
Pero como lo que quieres hacer es para el momento justo cuando haces clic, entonces tienes que recurrir al viejo truco de:
if (!antes_pulsada && mouse.left)
    antes_pulsada = true;
    //tu codigo
elsif (antes_pulsada && !mouse_left)
    antes_pulsada = false;
end


De todas formas ten en cuenta una cosa:
- Un procesador de 500MHz puede hacer 500.000.000 de ifs por segundo (y en el código que te he puesto sólo hay 4 comprobaciones y una asignación, aun puedes ejecutar 499.999.750 instrucciones más en ese segundo, suponiendo un set_fps(50,0)).
- A diferencia de Visual Basic, el código no está en ejecución continua: se ejecuta hasta que todos los procesos llegan a frame, y luego espera a que pasen el 1/25 o 1/50 de segundo restante, no hace nada en esa espera e incluso la CPU podría ejecutar otras tareas mientras llega el siguiente frame. No sé si Visual Basic implementa un sistema de interrupciones por HW o hace esa comprobación continua de la que hablas.

Respecto a ese bloque ¡Ojalá! Estaríamos implementando un sistema básico de señales. Si en lugar de ser "until mouse.left", pudieramos poner la etiqueta que quisiéramos, podríamos poner el proceso en freeze, y sólo se ejecutaría el bloque que dijéramos cuando lo dijéramos... pero eso sería ya casi implementar un sistema de clases. También puedes usar funciones, y actuar sobre una estructura global.

Siento no poder explicarme con más claridad, pero hoy he dormido poco ^^U
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 10, 2017, 06:47:55 PM
me doy por respondido, muchas gracias
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 10, 2017, 09:33:42 PM
Otra, pa no abrir un hilo nuevo

·Quiero que cuando se mueva el personaje no se mueva en diagonal en otras direcciones asi que uso el esleif:

if (key (_up)) y--;
elseif (key (_down)) y++;
elseif (key (_left)) x--;
elseif (key (_down)) x++;
end


Ahora bien, que cuando dejo de pulsar una dirección avance una mijita, ¿como lo hago?
·¿Doy un valor diferente en cada tecla pulsada y luego ''switcheo'' cual deja de pulsar para avanzar en esa dirección?
·¿Bloqueo de alguna forma las otras tres teclas para que no se pulsen?
·¿Hay algo asi pa eso de alguna forma mas ''facil''?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: warrior_rockk on October 11, 2017, 02:47:02 PM
Si avanzar una "mijita" te refieres a que tenga inercia, tienes que utilizar variables de aceleración. La pulsación de teclas de dirección no actuaría sobre la variable x e y si no sobre unas variables vX o vY sumando o restando. Si no se pulsa ninguna dirección, vas disminuyendo esa variable hasta 0 (esa sería la fricción) y por último, actualizas las posiciones x e y con esa variable de aceleración.
De memoria, algo asi:



if (key(_right))
   vX++;
if (key(_left))
   vX--;


if ( !key(_right) && !key(_right) )
   vX*= friction; //friction debe ser una constante inferior a 1


x = x+vX;



Te quedaría limitar cuanto sumas o restas de aceleración cada vez que pulsas...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 11, 2017, 03:37:55 PM
no es eso lo que pregunto, lo que pregunto es que cuando deje de pulsar es cuando ''derrapa'' y claro, no es lo mismo dejar de pulsar arriba que derecha, entonces no puedo usar el elseif...

if (key (_up)) y--;
elseif (key (_down)) y++;
elseif (key (_left)) x--;
elseif (key (_down)) x++;
else //avanzo segun seguia avanzando
end


y lo que no quiero hacer es


if (key(_up) and !key(_down) and !key(_left) and !key(_right))
    tal y cual, pascual;
end


Pregunto si hay alguna forma mas facil.
De todas formas, de mientras estoy currandome un motor de movimiento para hacer algo en plan Lolo de nes, que tiene un suelo de cuadricula y siempre que se mueve termina en el centro de la losa
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 11, 2017, 06:13:45 PM
Otra cuestion ''more''

Ya tengo hecho el motor de movimiento que se basa en un simple bloque for dentro de un if lol, es gracioso pero funciona:

      if (key(_right))         // yendo a la derecha
         for (a = 0; a < 8; a++)
            x++;
            frame 250;
         end
      end
etc etc


Ahora bien, entre terminar el movimiento y empezar otro se pierde un frame, que a 60 por segundos no deberia pasar nada, pero hay una pequeña pausa ahí que me incomoda una jartá (y mas porque soy el que lo progamo) ¿como se podria quitar?

Una de las soluciones que veo es ponerle un 'if (key (_up)) go to 30' como se hacia en antiguamente, pero no se si se podría en bennu, o quedaría ''muy etico''
Otra es preguntar mientras el a del bloque for no llegue a 8 ponerlo a 0, pero lo he comprobado y me como una caquita, por no decir que me como un mojon
Otra mas es antes del end del if de la tecla tal se pregunte si está pulsada otra vez y empiece a 0 a del bloque for para hacerlo otra vez, pero habria otra vez que hacer una comprobación y no terminar nunca        Total, que cuando termino el bloque for necesito volver a saber si sigue pulsada la tecla...

¿alguna idea?     
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 15, 2017, 08:49:36 PM
Otra con el tema map_put y con graficos del fpg:

resulta que meto en un bloque for y empiezo a meterle en un array a cargar imagenes con map_put en la cuadricula correspondiente un grafico que despues no sale porque al parecer he hecho con un programa ''incompatible'' (vamos a dejarlo ahí) luego cambio a una imagen añadida otro dia de las que llamo antiguas y carga, si vuelvo a la nueva, nada, si le cambio el numero tampoco, si cojo una imagen antigua si...
si uso creo una imagen nueva y la cargo en el fpg , pues tampoco

con imagen nueva:
(http://storage7.static.itmages.com/i/17/1015/h_1508100492_5884929_4b5c64bbdd.png)

con imagen antigua:
(http://storage3.static.itmages.com/i/17/1015/h_1508100544_3632103_1b66cd980a.png)

las castas de bil gay y su puta mare del window$


Peeeeero no hay nada que se solucione sin editar la imagen desde el mismo fpg editor...
Y para mas inri, hoy pruebo con otra imagen hecha de cero y funciona, lo dicho, el Billy Gay tiene toa la culpa
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 29, 2017, 08:44:32 AM
Otra:
quiero retrasar una animación o un movimiento y me acuerdo que habia una opción donde la ponias y te relantizaba o de aceleraba, pero no me acuerdo como se llama, no se si era delay o era resolución o yo que se...
¿alguien sabe de que hablo?

Vale, ya lo he ''descubierto'' mas bien me lo han chivao,  pero que lo expongo aqui para que no se me olvide:

La idea era simple, muchos enemigos, creados todos al mismo tiempo y con el mismo grafico + animación. Al crearse todos a la par, todos se mueven a la par y la animación es igual toda en perfecta sincronia y aburre tela, asi que si variamos la frecuencia ya cada enemigo irá a su bola, ya que es el mismo proceso creado muchas veces. Si al final del codigo, en lo de frame le ponemos entre parentesis un numero ya cambiamos la frecuencia. Cada enemigo se moverá o cambiará la animación distintamente a lo seleccionado con respecto al seteo de frames
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 01, 2017, 08:18:03 AM
Otra...
bueno, antes reporto un bug del fpg editor v4.0.2 en ubuntu 17.10 con wine, me repite los graficos...
(http://pix.toile-libre.org/upload/original/1509524060.png)

y ahora la pregunta: ¿puedo de alguna manera preguntar si existe algun archivo?
es para mi juego de la mariquita, como las pantallas son ''editables'' quiero que pregunte si existe el archivo de la siguiente pantalla, sino game over, ¿se puede?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on November 04, 2017, 06:24:33 PM
Quote from: Futu-block on October 11, 2017, 06:13:45 PM
Otra cuestion ''more''

Ya tengo hecho el motor de movimiento que se basa en un simple bloque for dentro de un if lol, es gracioso pero funciona:

      if (key(_right))         // yendo a la derecha
         for (a = 0; a < 8; a++)
            x++;
            frame 250;
         end
      end
etc etc


Ahora bien, entre terminar el movimiento y empezar otro se pierde un frame, que a 60 por segundos no deberia pasar nada, pero hay una pequeña pausa ahí que me incomoda una jartá (y mas porque soy el que lo progamo) ¿como se podria quitar?

Una de las soluciones que veo es ponerle un 'if (key (_up)) go to 30' como se hacia en antiguamente, pero no se si se podría en bennu, o quedaría ''muy etico''
Otra es preguntar mientras el a del bloque for no llegue a 8 ponerlo a 0, pero lo he comprobado y me como una caquita, por no decir que me como un mojon
Otra mas es antes del end del if de la tecla tal se pregunte si está pulsada otra vez y empiece a 0 a del bloque for para hacerlo otra vez, pero habria otra vez que hacer una comprobación y no terminar nunca        Total, que cuando termino el bloque for necesito volver a saber si sigue pulsada la tecla...

¿alguna idea?     

Te voy a ir respondiendo poco a poco, porque... por lo de siempre, me falta tiempo hasta de ir al baño, y tus dudas hay que explicártelas con todo lujo de detalles y no son tan sencillas.

El código que has puesto, es normal que haga una pausa, ya que haces FRAME(250), lo que significa que después de moverse tiene que esperar entre un frame a un frame y medio, antes de ejecutar la siguiente instrucción.
Creo que ya te lo explicó DCelso por Telegram, pero si quieres que un personaje vaya más despacio, no uses frame con porcentajes altos ni modifiques los FPS: usa la variable RESOLUTION con ese proceso y modifica cuánto debe sumarse a X o a Y.

Si quieres hacer como se hacía antiguamente, o como en Pokemon, que pulsas una dirección y no hace otra cosa hasta que llega al destino, el bucle que has hecho es perfecto, pero no te sirve para meterlo en el personaje directamente, porque si es atacado en medio del movimiento, el prota lo va a ignorar hasta que llegue a su destino. Puedes tenerlo como un proceso aparte, que modifique la X y la Y desde fuera.
Lo ideal es tener lo que ya te expliqué hace tiempo: una máquina de estados. Tendrías que tener un estado de "esperando", que al pulsar una tecla pasase al estado "moviendo hacia arriba"/"moviendo hacia derecha"..., y que sólo salga de ese estado al llegar al destino, momento en el que vuelve a "esperando". Tiene la pega de que debes poder interrumpir el proceso para recibir un ataque, por ejemplo, y retomar el estado anterior por donde se quedó, pero nadie dijo que programar fuera sencillo.
Te digo lo de antes, esto necesita de tiempo para explicarse, con esquemas, dibujos y demás. Si no, ya sabes: papel, lápiz y a rascarse la cabeza.

Es que no tengo ningún ejemplo a mano, lo siento.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on November 04, 2017, 06:31:02 PM
Quote from: Futu-block on October 15, 2017, 08:49:36 PM
Otra con el tema map_put y con graficos del fpg:

resulta que meto en un bloque for y empiezo a meterle en un array a cargar imagenes con map_put en la cuadricula correspondiente un grafico que despues no sale porque al parecer he hecho con un programa ''incompatible'' (vamos a dejarlo ahí) luego cambio a una imagen añadida otro dia de las que llamo antiguas y carga, si vuelvo a la nueva, nada, si le cambio el numero tampoco, si cojo una imagen antigua si...
si uso creo una imagen nueva y la cargo en el fpg , pues tampoco

con imagen nueva:
(http://storage7.static.itmages.com/i/17/1015/h_1508100492_5884929_4b5c64bbdd.png)

con imagen antigua:
(http://storage3.static.itmages.com/i/17/1015/h_1508100544_3632103_1b66cd980a.png)

las castas de bil gay y su puta mare del window$


Peeeeero no hay nada que se solucione sin editar la imagen desde el mismo fpg editor...
Y para mas inri, hoy pruebo con otra imagen hecha de cero y funciona, lo dicho, el Billy Gay tiene toa la culpa

Macho, qué lío has armado, no me entero de nada. ¿Cómo que metes una imágen otro día? ¿Qué otro día? ¿Tienes el programa ejecutándose y modificas el FPG de un día para otro?

Primero, comprueba que los FPGs se han cargado correctamente: que devuelven un valor >= 0, que la ruta es la correcta, que el FPG contiene lo que dices...
Segundo, comprueba que el mapa existe, que se puede asignar a un proceso y que se ve en pantalla.
Tercero, mira a ver si puedes pintar SÓLO ESA IMÁGEN en el fondo de la pantalla.
Si todo eso está correcto, es que hay alguna diferencia entre los dos FPGs que hace que deje de funcionar: tal vez los puntos de control, la numeración, la versión, la profundidad de color, algún bug del editor...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on November 04, 2017, 06:37:09 PM
Quote from: Futu-block on October 29, 2017, 08:44:32 AM
Otra:
quiero retrasar una animación o un movimiento y me acuerdo que habia una opción donde la ponias y te relantizaba o de aceleraba, pero no me acuerdo como se llama, no se si era delay o era resolución o yo que se...
¿alguien sabe de que hablo?

Vale, ya lo he ''descubierto'' mas bien me lo han chivao,  pero que lo expongo aqui para que no se me olvide:

La idea era simple, muchos enemigos, creados todos al mismo tiempo y con el mismo grafico + animación. Al crearse todos a la par, todos se mueven a la par y la animación es igual toda en perfecta sincronia y aburre tela, asi que si variamos la frecuencia ya cada enemigo irá a su bola, ya que es el mismo proceso creado muchas veces. Si al final del codigo, en lo de frame le ponemos entre parentesis un numero ya cambiamos la frecuencia. Cada enemigo se moverá o cambiará la animación distintamente a lo seleccionado con respecto al seteo de frames

Lo dicho antes y lo dicho por el "chivato" por telegram: no uses FRAME con porcentajes distintos de 100. Usa la variable RESOLUTION, y dales a cada uno de los enemigos un valor de velocidad diferente:

process enemigo (int velocidad)
begin
    resolution = 100;
    loop
        if (mover_derecha) x += velocidad; end
        if (mover_izquierda) x -= velocidad; end
        ...
        frame;
    end
end


Y llamas a enemigo con, por ejemplo:
enemigo(rand(50,200))

De esta forma, generas enemigos que pueden ir entre el 50%-200% de la velocidad normal. Como resolution vale 100, significa que X debe valer 100 para que se desplace el proceso un pixel. Por lo general, resolution vale 1.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on November 04, 2017, 06:42:26 PM
Quote from: Futu-block on November 01, 2017, 08:18:03 AM
Otra...
bueno, antes reporto un bug del fpg editor v4.0.2 en ubuntu 17.10 con wine, me repite los graficos...
(http://pix.toile-libre.org/upload/original/1509524060.png)

y ahora la pregunta: ¿puedo de alguna manera preguntar si existe algun archivo?
es para mi juego de la mariquita, como las pantallas son ''editables'' quiero que pregunte si existe el archivo de la siguiente pantalla, sino game over, ¿se puede?

Si FPG Editor te repite gráficos es que el FPG está corrupto. No es la primera vez que me pasa, ni sé cuándo pasa ni por qué, pero es la principal razón por la que aun no he migrado de FPGEdit de forma completa.

Respecto a la duda: file_exists
http://wiki.bennugd.org/index.php?title=Fexists

Una lectura obligada para trabajar con ficheros, CSV y demás que tanto preguntas por Telegram.
http://wiki.bennugd.org/index.php?title=Mod_file
Sí, todas esas funciones, ¡¡léetelas!! :D :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 04, 2017, 10:09:21 PM
pues vamos por partes, en cuanto a los fpg ya está solucionado, algunos se corrompen como los politicos, lol
en cuanto a resolution, lo he probado y no se por que me escala la posición de los enemigos, ya le echaré un vistaso bueno
y lo de la wiki, me parece muy lucrativo de mirar, ji ji ji, indagaré esa parte tan interesante
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 10, 2017, 11:24:02 AM
Una muy muy tonta, o no...
¿se puede dar el nombre de una variable para los archivos a cargar?
me explico, en cada pantalla quiero cargar una imagen llamada 001.png, en la siguiente la 002.png en la siguiente la 003.png y asi, segun el numero de pantalla quiero cargar un grafico en una variable llamada var_grafic, como es un grafico que va a aparecer antes de cada pantalla compruebo si existe y lo asigno, pero si no se queda en blanco...
¿sería correcto usar esto?:

   var_grafic = load_png("fondos/var_cuenta_pantallas.png");

que a mi me dá que hay que cambiarlo a string o algo asi
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: gecko on December 10, 2017, 01:36:01 PM
Lo hice en el aire, sin compilar ni probar nada, pero espero que te sirva.

La idea es que primero armamos un string con el numero que necesitas anteponiendole varios 0s. Luego recorto ese string, y me quedo con los ultimos 3 caracteres. Y finalmente uso ese string para armar el nombre del archivo.

string filenumber;
string filename;
int level_number;

// con esto obtengo un string con la forma "0001", o "000999"
filenumber = "000" + itoa(level_number);

// con esto me quedo con un string de 3 caracteres de longitud, empezando desde atras.
// "001" o "999"
filename = substr(filenumber, -3);

var_grafic = load_png("fondos/" + filename + ".png");


Referencias:
http://wiki.bennugd.org/index.php?title=Itoa
http://wiki.bennugd.org/index.php?title=Substr
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 11, 2017, 09:02:04 AM
osea, que puedo usar numeros de un digito y de dos si hacer la operación?
entonces numero las pantallas del 1 al 99 y me ahorro de poner


// con esto obtengo un string con la forma "0001", o "000999"
filenumber = "000" + itoa(level_number);
// con esto me quedo con un string de 3 caracteres de longitud, empezando desde atras.
// "001" o "999"
filename = substr(filenumber, -3);


Y yo que creía que lo de los tres digitos era obligatorío, al menos para que me lo ordene en la carpeta, pero que le den a la carpeta
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: gecko on December 11, 2017, 04:30:00 PM
Claro, si los archivos se van a llamar 1.png, 10.png, 100.png no hace falta que hagas todo eso que puse.

Podes hacer directamente var_grafic = load_png("fondos/" + var_cuenta_pantallas+ ".png");
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 11, 2017, 07:34:00 PM
Me corrijo, para descargar la imagen cargada está la función unload_map(0,var_grafic); en este caso, que me fallaba porque la ruta la ponia como "/fondos/0.png" en vez de "fondos/0.png" una barra inclinada que me estaba volviendo loco

Vale, muy bien, peeeero...
Ahora tengo problemas, al cambiar de pantalla o de imagen, no lo hace
¿he de hacer un descargado de memoria? un unload_png o algo asi para luego un load_png otra vez?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 08, 2018, 06:16:31 PM
Otra mas, ¿como se listan los archivos de una carpeta?
me interesa que:
· cuente los archivos
· me los ordene via lo que sea (por fecha, nombre, etc)
· me cargue los contenidos en las variables pertinentes
p.ej: varios archivos de sonidos fx no importa el orden

¿se puede hacer o es mu coñazo?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 08, 2018, 06:50:28 PM
Quote from: gecko on December 11, 2017, 04:30:00 PM
Claro, si los archivos se van a llamar 1.png, 10.png, 100.png no hace falta que hagas todo eso que puse.

Podes hacer directamente var_grafic = load_png("fondos/" + var_cuenta_pantallas+ ".png");

creo que me dá problemas cuando pasa de un digito a dos, osea, cuando pasa de la pantalla 9 a la 10 no me borra los graficos de la 9 pero si me interpreta las durezas de la 10

corregido, era fallo mio, no tenia el grafico numeo 10
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 09, 2018, 12:58:32 AM
GLOB es tu función. Si usas la cadena "*.*" te devolverá todos los ficheros, uno a uno, que tengan extensión.
Lo de contarlos vas a tener que hacerlo tú, lo de ordenarlos también, y lo de obtener su contenido pues ya sabes, FOPEN, FREAD y FCLOSE. No hay más.

Si tienes el código de mi Tilemap Editor V2 (que me consta que sí), hay una serie de procesos que ya hacen eso para mi programa. Están todos localizados, pero necesitan, si no recuerdo mal, las funciones de la class_string.inc (y .h) y si lo quieres con ventana, todos los ficheros de código de interfaz que creé.
Pero en la carpeta src/functions tienes los 4 ficheros que necesitas para lo más básico:
- class_string.h
- class_string.inc (estos dos son para guardar los dtos en una lista de strings)
- filelist.h
- filelist.inc (y estos dos son los que leen los archivos de una carpeta y los guarda en una lista, incluso la ordenan, la clonan, permiten buscar directorios... Lo que no recuerdo es cómo de comentado está el código, pero ejemplos no trae a menos que los leas de otros ficheros del mismo programa).
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 09, 2018, 03:49:19 PM
¿pero con que criterío te devuelve los ficheros uno a uno?
ordenados por nombre? por fecha...

tu sabes que yo mirar codigos de la gente como que no me gusta
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 10, 2018, 01:51:53 AM
Quote from: Futu-block on January 09, 2018, 03:49:19 PM
¿pero con que criterío te devuelve los ficheros uno a uno?
ordenados por nombre? por fecha...

tu sabes que yo mirar codigos de la gente como que no me gusta

por como estan en el disco, por lo general como fueron creados...

sin ordenar...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Goku jr on January 10, 2018, 07:07:31 PM
Quote from: Futu-block on January 08, 2018, 06:16:31 PM
Otra mas, ¿como se listan los archivos de una carpeta?
me interesa que:
· cuente los archivos
· me los ordene via lo que sea (por fecha, nombre, etc)
· me cargue los contenidos en las variables pertinentes
p.ej: varios archivos de sonidos fx no importa el orden

¿se puede hacer o es mu coñazo?

Buenas!
yo tengo esto asi...no esta completo pues estoy haciendo pruebas,espero que te sirva!

process list_file();
private
tx=10;
ty=20;
ey;
begin
//chdir("..");
//chdir("bin");
  filename=glob("*.*");
loop

   filename=glob("*.*");
   say(fileinfo.path+filename+"  "+fileinfo.size /1024 + " KBYTES");
     write(0,tx,ty,14,fileinfo.path+filename+"  "+fileinfo.size /1024 + " KBYTES");
     ty=ty+20;
     filenum=filenum+1;
if(filenum=>100);
break;
end

    frame;
    end
end
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 11, 2018, 04:54:33 PM
gracias, le echaré un tiento
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 14, 2018, 10:13:58 PM
Otra, aunque no se si la he preguntao ya...

¿hay interactuaciones con la rueda del raton? o en un momento dao con el click central
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 15, 2018, 12:14:02 AM
Sí, el clic con la rueda es mouse.center, y para la rueda mouse.wheel_up o mouse.wheel_down, pero en vez de devolver true o false, devuelve cuántas lineas debe desplazarse.
Está documentado en la Wiki, en el mod_mouse. Yo lo sé de memoria.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 15, 2018, 08:23:55 AM
odio que me mandes a la wiki, y mas despues de jartarme de buscar en la biblia... :(

(http://pix.toile-libre.org/upload/original/1516006193.png)

Tu sabe, no me aclara mucho...

|-----------------------------0-----------------------------|
Nada que no se tantee probando:
        if (mouse.wheelup) weo++; end
        if (mouse.wheeldown) weo--; End


Jo Jo, me encanta esta función
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 15, 2018, 04:03:11 PM
Otra mas, quiero redondear el angulo en cada fame, ¿es necesario poner un if o hay alguna otra funcion que la redondee?

lo que uso es

if (angle > 360000) angle = 0; end
if (angle < 0) angle = 360000; end


me gustaria usar algo como

angle%360;
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 15, 2018, 08:07:46 PM
Quote from: Futu-block on January 15, 2018, 04:03:11 PM
Otra mas, quiero redondear el angulo en cada fame, ¿es necesario poner un if o hay alguna otra funcion que la redondee?

lo que uso es

if (angle > 360000) angle = 0; end
if (angle < 0) angle = 360000; end


me gustaria usar algo como

angle%360;

eso mismo...

angle %= 360000;
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 15, 2018, 09:12:44 PM
Jarl, que guay, gracias
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 15, 2018, 11:00:58 PM
mmm, ah, no, perdon, no es lo mismo, tu haces que si es menor lo ponga a 0 y si es mayor a 360000, esto lo que hace es pasarlo al angulo similar pero entre 0 a 360000...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 15, 2018, 11:49:51 PM
Creo que lo que quiere hacer es lo que tú le has dicho, pero con ángulos siempre positivos, o dentro del rango 0-360º (a Futu hay que interpretarlo con más cuidado que código VB6 :D).

Puedes hacer:
if (angle >= 360000) angle -= 360000 end
if (angle < 0) angle += 360000 end

Eso te debería devolver siempre un ángulo entre 0 y 360º, si no en un frame, en dos o tres (salvo que estés haciendo giros muy bruscos). Ya demostré en su día que el operador "%" es ligeramente más lento que un if+suma, por lo que no hay algoritmo más rápido... que yo sepa.
Pero ojo, que muchas operaciones de Bennu manejan ángulos entre -90º y 270º, así que cuidado.

Y sí, te voy a estar mandando a la wiki por no mandarte a la m...uchacha de los recados, a ver si un día aprendes a interpretar lo que dice y descubrirás cosas que no sabías ni que Bennu pudiera hacer. Y si algo no lo entiendes, te creas un código nuevo, lo pruebas, experimentas y alucinas con los resultados que te va dando :D
Lo que te dice la wiki es que, igual que tienes mouse.x y mouse.y para saber las coordenadas, tienes mouse.graph para cambiarle el gráfico, mouse.z para la coordenada z (el orden de dibujado), mouse.middle para ver si el botón central está pulsado, etc, etc, etc. Como todos los procesos, pero con más cosas.

Anda que cuando te leas la del scroll o la del modo7, te explota la cabeza como poco :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 16, 2018, 11:43:51 AM
Quote from: Drumpi on January 15, 2018, 11:49:51 PM
Ya demostré en su día que el operador "%" es ligeramente más lento que un if+suma, por lo que no hay algoritmo más rápido... que yo sepa.

drumpi, eso no es correcto:


import "mod_say";
import "mod_timers";
import "mod_time";


private
t0;
t1;
i;
angle;

begin

    angle = 0;

    t0 = get_timer();

    for( i = 0; i < 14400000; i++ )
        angle++;
        angle %= 360000;
    end

    t1 = get_timer();

    say( t1 - t0 );

    angle = 0;

    t0 = get_timer();

    for( i = 0; i < 14400000; i++ )
        angle++;
        if ( angle >= 360000 ) angle -= 360000; end
        if ( angle < 0 ) angle += 360000; end
    end

    t1 = get_timer();

    say( t1 - t0 );


end



resultados (bm se llama el dcb compilado):

Quote$ bgdi bm
1988
2187
$ bgdi bm
1984
2084
$ bgdi bm
1984
2176
$ bgdi bm
1883
2071
$ bgdi bm
1863
2063
$ bgdi bm
1873
2086
$ bgdi bm
1873
2090
$
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 16, 2018, 11:46:43 AM
incluso con esta forma


        if ( angle >= 360000 ) angle -= 360000;
        elsif ( angle < 0 ) angle += 360000; end
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 16, 2018, 03:57:09 PM
vayamos por partes, 1º el foro me dá error y no me aparece la caja de texto:
(http://storage6.static.itmages.com/i/18/0116/h_1516117525_1348923_fecea2f2c4.png)

2º· Me expresé mal con el codigo de la primera vez, razonandolo yo digo que sies mas de 360º se convierte a 0º, osea, si fuera 400º serian 0º


if (angle > 360000) angle = 0; end
if (angle < 0) angle = 360000; end


ambos me aconsejais que use:

if ( angle >= 360000 ) angle -= 360000;
elsif ( angle < 0 ) angle += 360000; end (¿deberia ir un igual detras de <?)

¿entonces pa que os peleais? ja ja ja

No, en serio, ¿si el angulo es mayor o igual a 360º que reste 360º o si es menor de cero que sume 360º? parece razonable, si muy confiable, aunque pensandolo bien lo voy a usar cuando se levante el dedo de la tecla (!key)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 16, 2018, 05:16:56 PM
no peleamos, solo digo que usar %= es mas rapido que la secuencia de ifs y sumas y restas
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 16, 2018, 05:18:45 PM
Quote from: Futu-block on January 16, 2018, 03:57:09 PM
vayamos por partes, 1º el foro me dá error y no me aparece la caja de texto:
(http://storage6.static.itmages.com/i/18/0116/h_1516117525_1348923_fecea2f2c4.png)

2º· Me expresé mal con el codigo de la primera vez, razonandolo yo digo que sies mas de 360º se convierte a 0º, osea, si fuera 400º serian 0º


if (angle > 360000) angle = 0; end
if (angle < 0) angle = 360000; end


ambos me aconsejais que use:

if ( angle >= 360000 ) angle -= 360000;
elsif ( angle < 0 ) angle += 360000; end (¿deberia ir un igual detras de <?)

¿entonces pa que os peleais? ja ja ja

No, en serio, ¿si el angulo es mayor o igual a 360º que reste 360º o si es menor de cero que sume 360º? parece razonable, si muy confiable, aunque pensandolo bien lo voy a usar cuando se levante el dedo de la tecla (!key)

el box, amplialo! debajo de las caritas esta la barra de tamaño (gris con una marca gris oscura en medio), la tenes colapsada, dale a la barrita gris "oscura" y deslizala para abajo...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 16, 2018, 09:17:07 PM
no funcionaba cuando hice la foto, por mas que le daba se quedaba pillado, ahora vá bien
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 17, 2018, 12:12:19 AM
No, Splinter, me has entendido mal, y tus números me dan la razón :D
Yo dije que UNA operación módulo (una operación individual) es ligeramente más lenta que un IF y UNA suma (dos operaciones individuales).

En tu código, una suma y un módulo en bucle, han dado un rendimiento apenas un 10% superior a un bucle con una suma y dos IFs en todas sus iteraciones, y una suma extra cada 360000 iteraciones.
Pero vamos a redondear y a obviar que los tics del timer no son del todo precisos, etc, etc... Y vamos a decir que una suma y un módulo son un 10% más rápidos que dos ifs y una suma... Si eliminamos la suma de ambos bucles, nos queda que un módulo es un poco más rápido que dos ifs, o lo que es lo mismo, un if tarda casi la mitad que un módulo.

Si al módulo hay que añadirle una suma para que nos devuelva un valor positivo siempre (recordemos que el módulo de -370%360 = -10) habría que añadir un if y una suma extra a la operación módulo, perdiendo toda la ventaja de velocidad que tenía :D

Creo que en su momento obtuve unos resultados similares a los tuyos, pero terminé por memorizar que no me merecía la pena usar módulo cuando daban un rendimiento tan similar, y al final, siempre iba a intentar buscar valores positivos.

Pero en realidad tiene su lógica: las ALU (el componente en el que se basan las CPU) incorporan por HW operaciones de suma, multiplicación y aritmética booleana, que se pueden ejecutar en un solo ciclo de reloj. Las divisiones y los módulos, hasta donde yo sé, no se han podido implementar igual, o al menos usando un sistema de puertas lógicas con un retardo similar al resto de operaciones.

Lo siento, pero el motor de scroll tileado me ha convertido en un friki de los módulos por culpa de los scrolls cíclicos :D :D :D
Y pensar que hay microcontroladores por 0'50€ con un mnemónico para recorrer espacios de memoria de forma cíclica sin tener que comerse la cabeza con estas operaciones, ni módulos ni nada de nada (sólo un byte que dice "lee, guardas el dato en el registro/memoria tal y salta a la siguiente posición").
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 17, 2018, 02:58:03 AM
demasiada larga tu respuesta...

el punto es que no estamos midiendo 1 solo mod (%) vs 1 sola 1 suma... lo equivalente a

angulo %= 360000;

(que es lo que se necesita), es:

if ( angulo >= 360000 ) angulo -= 360000; end
if ( angulo < 0 ) angulo += 360000; end

y en esos 2, lo mas rapido es hacer el modulo, luego si individualmente sea menos performante es otra cuestion... pero el punto que se necesitan ambos if y ambas sumas... e incluso te diria mas... que en el caso de los if, solo hace 1 suma cada 360000 incrementos, ahora si los incrementos son mas frecuentes, los resultados son peores para los if...

por ejemplo, forcemos en cada frame hacer la operacion de ajuste

con este codigo


    angle = 0;

    t0 = get_timer();

    for( i = 0; i < 14400000; i++ )
        angle = -10 ;
        angle %= 360000;
    end

    t1 = get_timer();

    say( t1 - t0 );

    angle = 0;

    t0 = get_timer();

    for( i = 0; i < 14400000; i++ )
        angle = -10 ;
        if ( angle >= 360000 ) angle -= 360000;
        elsif ( angle < 0 ) angle += 360000; end
    end

    t1 = get_timer();

    say( t1 - t0 );


los resultados:

Quote
$
1759
2663

$
1747
2760

hablamos del conjunto de operaciones... no de la operacion individual...

vayamos mas a fondo... ahora si comparamos 1 if vs 1 mod, si es mas rapido un if que un mod, ahora si el if da siempre true y se ejecuta la suma, entonces es mas rapido el mod... y si prescindimos del if y solo hacemos mod vs suma, los numeros son los mismos...

aca estoy casi seguro que el problema no es el modulo o la suma, sino la asignacion, por eso el if es mas rapido, porque no asigna.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 17, 2018, 08:26:43 AM
A eso le veo lógica, aunque no entienda de rendimientos, controladores ni módulos, si la respuesta al id es afirmativa entonces no hay reacción por consiguiente no trabaja, y si no trabaja no rinde, no consume o no gasta, como queráis decir

Total y resumiendo, que para un pc de media con Pentium 4, que hoy en día se que da muy muy corto pero podemos tomarlo de base; aplicarle un módulo o dos IFS apenas va a notarse la diferencia
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 17, 2018, 11:34:20 AM
hay diferencia, no se si apenas se notaria, yo probe en un i7, quizas en un p4 la diferencia sea mayor.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 20, 2018, 01:14:44 AM
No me acuerdo de los números exactos, pero te aseguro que forzando el if Y la suma, los tiempos eran bastantes parecidos.
Además, insisto en que los dos códigos que planteas del módulo y de los dos IF no son lo mismo. Si quieres una equivalencia perfecta sería entre:
angle = angle % 360000
y
if (angle >= 360000) angle -= 360000 end
if (angle <= -360000) angle += 360000 end

Porque repido, el módulo devuelve valores negativos y los ifs como los había planteado yo, no :D

La equivalencia correcta sería:
angle = angle % 360000
if (angle < -0) angle += 360000 end

y
if (angle >= 360000) angle -= 360000 end
if (angle < 0) angle += 360000 end


Y estoy seguro de que en este caso es más rápido sin el módulo... ¡pero leches! Estamos hablando de una diferencia de 1/10 parte de lo que duran dos instrucciones. Ni en una calculadora de reloj íbamos a notar la diferencia :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 20, 2018, 07:21:09 AM
exacto.

el punto fue que futu, dijo que le gustaria poder usar algo al estilo angle %= 360. y la respues, pues que si, que puede usarlo. despues se armo todo el rollo.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 20, 2018, 10:40:54 AM
Cierto, no estamos en los 90 y no hay que limitar memoria para nada ;)

Otra y creo que un poquito mas dificil...
·¿Se puede espejar en angulo?

Resulta que sigo con mi proyecto de muñecotes, ya he conseguido que gire el brazo y que la mano le siga, pero en el momento de hacerle el espejo del brazo me gustaría que la mano siguiera en la misma posición...

vamos, no se si me entendeis pero pongo un ejemplo:
(http://storage2.static.itmages.com/i/18/0120/h_1516444814_4972922_1918a6f496.png)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 20, 2018, 10:50:37 AM



segun un write_var que le hago,

if (angle >= 360000;) angle -= 360000 end
if (angle < 0) angle += 360000; end


Este me dá errores, no redondea bien, y este me da una lectura mas exacta:

angle = angle % 360000
if (angle < -0) angle += 360000 end


pero ya digo, en el write_var
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 24, 2018, 12:54:41 PM
Otra, ya que no sabeis la de los angulos y le estoy buscando otro remedio... (porque veo que no se puede como yo quiero)

-¿Que información se les puede ''agregar'' a las imagenes?
Me refiero, en un fpg tu puedes ponerle a cada imagen el punto de control, o incluso mas puntos, pero no se como pasar de un punto a otro. ¿tambien se le puede poner anotaciones que despues puedes usar como datos? Por ejemplo unas constantes que desde el programa pregunte segun la variable tome una u otra.

¿esto tambien se puede hacer con las imagenes png? es decir, si hay alguna forma de que tengan una información extra que pueda yo usar despues
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Erkosone on January 24, 2018, 04:27:16 PM
SEgun el croquis que has puesto, desde donde espeja hasta donde deberia espejar hay unos -90º de diferencia, restaselos haber que te da no?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 24, 2018, 08:50:38 PM
yo lo hago con flags, pero lo que hace es me invierte totalmente los resultados, el brazo del robot me gira en dirección contraria cuando le aplico el flags, asi que no hay que trabajar con el flags
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 25, 2018, 12:33:20 AM
Yo no termino de entender el problema que tienes con el espejado... Es más, no sé para qué quieres hacer el espejado en ese caso :D

Respecto a los puntos de control, get_point y get_real_point tienen un parámetro que es el número del punto de control, así puedes pasar de uno a otro. Como poder, puedes almacenar más información, porque hay un par de campos que no se suelen usar, pero que están ahí, que son el nombre del gráfico y una pequela descripción. Son dos strings, de no recuerdo qué tamaño, pero la pega es que no puedes leerlos con funciones de Bennu, tienes que aprender a usar FREAD y cómo se guardan los datos en un FPG/MAP para hacerlo.
En los PNG no puedes guardar más info que la que tiene el formato PNG. En realidad dicho formato tiene tropecientos campos de cabecera (incluyendo autor, coordenadas de la foto, fecha de la foto, marca de la cámara...) pero desde Bennu no se pueden leer. Lo bueno es que al cargarlos se transforman en MAP y admiten puntos de control, paletas, etc.

Si quieres almacenar info extra, te las vas a tener que ingeniar: o usas los puntos de control, o usas un fichero secundario, o te creas tu propio formato de imágenes.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 25, 2018, 08:29:07 AM
Es que como está el pico 8 que los archivos de sus juegos es una imagen Png decía yo que si podia hacerse en bennu, ya veo que no.
Lo del Archivo secundario ya lo tenia previsto pero claro, habrá de ser oculto o algo para que no se borre accidentalmente
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: FreeYourMind on January 25, 2018, 09:48:56 AM
tambien puedes asociar informacion a las imagenes de un fpg por codigo, te creas una funcion que lo haga y haces la equivalencia por id de imagen
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 25, 2018, 01:33:13 PM
Quote from: Futu-block on January 24, 2018, 08:50:38 PM
yo lo hago con flags, pero lo que hace es me invierte totalmente los resultados, el brazo del robot me gira en dirección contraria cuando le aplico el flags, asi que no hay que trabajar con el flags

programa de ejemplo?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 25, 2018, 03:06:53 PM
Enga vá...

Teneis que darle a brazo 1, entonces al girar la rueda del raton, gira el brazo y la mano, cuando le das a los iconos del brazo mas encogido que pone angulo, cambia el grafico y por ende la distancia de la mano con respecto al hombro, que es la mejor opción que se me ocurrió. Sin embargo si le das a 0 (cero) es cuando el espejado actua con el flags, que me lo trastoca todo

En un momento dao no me iportaría cargar otro grafico u otra vez el grafico en la posición correcta, ya sabeis, en este programa lo importante es el resultado que ha de ''imprimirse'' en una imagen nueva para luego hacer un collage
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 25, 2018, 05:37:23 PM
Quote from: Futu-block on January 25, 2018, 03:06:53 PM
Enga vá...

Teneis que darle a brazo 1, entonces al girar la rueda del raton, gira el brazo y la mano, cuando le das a los iconos del brazo mas encogido que pone angulo, cambia el grafico y por ende la distancia de la mano con respecto al hombro, que es la mejor opción que se me ocurrió. Sin embargo si le das a 0 (cero) es cuando el espejado actua con el flags, que me lo trastoca todo

En un momento dao no me iportaría cargar otro grafico u otra vez el grafico en la posición correcta, ya sabeis, en este programa lo importante es el resultado que ha de ''imprimirse'' en una imagen nueva para luego hacer un collage

tu sample es un lujo...

por otro lado, varias cosas que corregir

1) debes usar flag = 3, en lugar de flag = 2
2) cada grafico al menos debe tener 2 puntos de control (las extremidades), 1 punto de control que sea el centro y otro punto de control que sea la union de otra extremdidad, en la otra extremidad tenes que poner las coordendas en base a real_point del punto de control de pather.
esto es, en el brazo tiene 2 puntos, el centro que es el hombro (que es su eje), y un punto de control en la mano, ese punto de control es la referencia que debe tomar en cada frame el grafico mano.
3) los graficos de mano deberian tomar el flag del padre

con eso deberia estar solucionado el asunto, podes ver el fuente para la crap que hice de resident evil, ahi esta hecho lo que queres hacer (o similar)

estaria bueno, una opcion para transparentar o poner en no visible ciertas partes del muñeco, por ejemplo, el cuerpo, asi se ven bien los brazos y otra opcion de sincronizar movimientos entre miembros (por ejemplo, los brazos, asi cuando cambiamos el angulo de uno cambien los 2 para poder ver el efecto bien)

lindo tu ejemplo, un lujo
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 26, 2018, 02:52:20 PM
Edito para evitar ''confunancias''  ;D

Muy bien, gracias, no habia caido en eso, probando...


Quote from: SplinterGU on January 25, 2018, 05:37:23 PM

estaria bueno, una opcion para transparentar o poner en no visible ciertas partes del muñeco, por ejemplo, el cuerpo, asi se ven bien los brazos y otra opcion de sincronizar movimientos entre miembros (por ejemplo, los brazos, asi cuando cambiamos el angulo de uno cambien los 2 para poder ver el efecto bien)

lindo tu ejemplo, un lujo

la opción de transparentar por ''piezas'' será disponible para cuando se haga el comic se pueda ''exportar por partes'' segun te convenga, por ejemplo un abrazo, en el antiguo bitstrips no se podia hacer desaparecer un brazo y colocarlo (por capas) por separado encima del otro muñeco
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 26, 2018, 02:57:05 PM
Quote from: Futu-block on January 26, 2018, 02:52:20 PM
Muy bien, gracias, no habia caido en eso, probando...

Aparte, tengo problemas de audios; aunque en primer lugar me equivoqué y exporté a .ogg ... matarme

De un audio grande he recortado y exportado a .wav con audicity a 16 bit, luego lo meto en el videojuego y me suena asi, duplicado y mas lento:
https://youtu.be/nacdSSHn4R0

No se si debería dejarlo en mono...

No, acabo de probarlo y no sale bien, sigue dando el mismo problema

comparti el codigo modificado, con los puntos de control y demas.

(no tengo ahora una herramienta para editar los puntos de control, sino lo modificaba todo)

los graficos deben tener el centro en su eje y el punto de control 1 (2, 3, etc) en el punto donde otros objetos ponen su eje.

por ejemplo, el brazo, centro en el hombro, y punto de control 1 en donde va la mano centrada.

si modificas asi el fpg y me decis donde esta cada uno, yo te modifico el codigo...

(el cuerpo tambien tiene que tener puntos de control donde va cada extremidad, decime que extremidad va en cada punto de control)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 26, 2018, 03:24:35 PM
Otro problema de otra clase (para evitar dobles respuestas, todavia no he podido probar lo de antes)

Tengo problemas de audios; aunque en primer lugar me equivoqué y exporté a .ogg ... matarme  <--------- al parecer está bien echo

De un audio grande he recortado y exportado a .wav con audicity a 16 bit, luego lo meto en el videojuego y me suena asi, duplicado y mas lento:
https://youtu.be/nacdSSHn4R0 (https://youtu.be/nacdSSHn4R0)

No se si debería dejarlo en mono...
No, acabo de probarlo y no sale bien, sigue dando el mismo problema

De hecho me lo resuelven en el youtube, tenia un ''lupazo'' del caraho que no paraba de repetir mil millones de veces por segundo
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 26, 2018, 05:31:45 PM
Quote from: SplinterGU on January 26, 2018, 02:57:05 PM
Quote from: Futu-block on January 26, 2018, 02:52:20 PM
Muy bien, gracias, no habia caido en eso, probando...

Aparte, tengo problemas de audios; aunque en primer lugar me equivoqué y exporté a .ogg ... matarme

De un audio grande he recortado y exportado a .wav con audicity a 16 bit, luego lo meto en el videojuego y me suena asi, duplicado y mas lento:
https://youtu.be/nacdSSHn4R0 (https://youtu.be/nacdSSHn4R0)

No se si debería dejarlo en mono...

No, acabo de probarlo y no sale bien, sigue dando el mismo problema

comparti el codigo modificado, con los puntos de control y demas.

(no tengo ahora una herramienta para editar los puntos de control, sino lo modificaba todo)

los graficos deben tener el centro en su eje y el punto de control 1 (2, 3, etc) en el punto donde otros objetos ponen su eje.

por ejemplo, el brazo, centro en el hombro, y punto de control 1 en donde va la mano centrada.

si modificas asi el fpg y me decis donde esta cada uno, yo te modifico el codigo...

(el cuerpo tambien tiene que tener puntos de control donde va cada extremidad, decime que extremidad va en cada punto de control)

vale, el unico problema que tengo ahora mismo es que reconozca cada punto de control como independiente, que como lo veo muy lioso y me la repampinfla ahora mismo voy a hacer otra cosa y es ''duplicar'' el grafico, osea hago uno que corresponda a la distancia desde el ''punto de agarre'' del cuerpo y a la hora de espejar sea el nuevo proceso el que haga el flag pertinente y respete el angulo y demas cosas del padre

-----------0-----------
Otro problema que tengo es el conflicto que tengo con los hermanos, nada que no se solucione con el public de sus castas, que soluciono con global, pero eso ya es otra historia, no haced caso de esto ultimo

-----------0-----------

buf, hoy es dia de problemas, en mi via habia visto este error al salir, ¿que tengo que hace? creo que descargar tela de cosas, ¿no?
(http://storage9.static.itmages.com/i/18/0126/h_1516994997_3913588_6bd81ac6ab.png)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 26, 2018, 07:58:43 PM
no entiendo eso del punto de control independiente
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 26, 2018, 11:05:35 PM
si tiene dos o mas puntos de control, ¿a cual obedece y porque?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 27, 2018, 01:50:02 AM
SI tiene dos o más puntos de control, el "centro", el que se se coloca en las coordenadas que tú le digas, el se se usa de eje de rotación, lo definas o no, SIEMPRE es el punto de control CERO. El resto están ahí, y se mueven con el proceso al cambiar sus coordenadas, su rotación y su tamaño, y sólo puedes saber su posición real en pantalla con GET_REAL_POINT.
En tu caso, un brazo necesita DOS puntos de control: el CERO en el hombro, que es donde va a girar, y el UNO en la muñeca, que es donde vas a colocar un proceso "hijo", o sea, la mano.
El tronco va a tener varios: el CERO debería ir a las caderas, porque es donde va a rotar el cuerpo (¿te acuerdas por qué te dije que en los sprites el punto de control va entre los pies? pues este caso es similar), pero luego necesitas dos puntos de control para poner las piernas, dos puntos de control para los hombros, y otro más para el cuello.
Los puntos de control secundarios son marcadores de posición, nada más, pero el CERO es diferente.

Respecto a lo del Pico 8 y sus PNG. Claro que se usa PNG para almacenar más información, pero si lo abres con Photoshop no te sale la información del juego ¿verdad? No te sale el código, ni te sale la partitura de la música, ni siquiera las paletas. Porque Photoshop solo lee la información del PNG, igual que LOAD_FPG sólo lee la información válida del FPG. Pico 8 lee DESPUÉS de esa información para tener los datos de juego.

¿Significa eso que se puede añadir información DESPUÉS de los datos del FPG? Se podría, sí, pero no se puede. El formato PNG tiene datos que nos dicen el ancho y el alto de la imagen, por lo que si una imágen tiene 100x100 pixels, después de leer 10000 pixels, Photoshop deja de leer más datos.
En el caso del FPG, no se sabe cuántos mapas hay, por lo que el programa va a leer mapas hasta quedarse sin nada más que leer. Y eso es lo que le pasó a DCelso cuando hizo su FPGEditor: intentó meter información suya tras el último mapa del FPG ¿y qué pasó? Que todos los editores, Fenix y Bennu, interpretaron esa información extra como otro mapa, con el código 1001, y unos cuantos nos volvimos locos con errores rarísimos. Incluso Splinter tuvo que añadir código a Bennu para que no leyese mapas con numeración >=1000 para evitar este problema.

Como digo, si necesitas info extra en tus gráficos, tienes que hacerte tu propio formato, o usar alguno al que le puedas añadir info "por detrás", como pueden ser los MAP, los BMP o los PNG, pero Bennu no te va a leer esa información, tienes que leerla tú con FREAD.

Ahora es muy tarde para ponerme a buscar, pero se ha publicado en el foro muchísimas veces el formato, byte por byte, de lo que contienen los formatos FPG, MAP y FNT. Es más, creo que en algún punto llegué a subir yo un código que leía FPGs usando FREAD. Incluso digo más, el código de "ccolor" o "cambia color" (un programa que me hice para cambiar colores de forma masiva en FPGs, MAPs y BMPs) incluye esos códigos e incluso para leer el formato BMP en su formato más básico. Te toca hacer deberes: a buscar ^^U
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 27, 2018, 09:28:05 AM
¿bueno, y que orden lleva a la hora de ponerle puntos de control?
Porque el primero que declare debe ser el punto cero, ¿no? y todos los puntos los vá a leer del archivo extra

La forma ponerle un punto de control secundario para que de ahí parta la extremidad o el miembro no me parece muy okey y no se si va a dar problemas a la hora de girar, yo le doy un radio con respecto al punto central de su padre y una inclinación con respecto a ese radio que crea un punto en la circunferencia creada...
No se si es muy lioso y no sabria pegarlo en el punto de control secundario, igual es mejor con el segundo punto de control y me espeja bien, pero ya te digo, no se como hacer que el centro del hijo sea el segundo punto de control del padre
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 28, 2018, 06:30:23 AM
lo ha explicado muy bien drumpi...

futu-block, creo que tienes una buena confusion...

cuando dibuja, rota, etc... solo tiene importancia el punto de control 0 (cero), el punto de control 0 es el centro, siempre, es lo mismo que setees el punto 0 a que setees el centro... en la funcion point_set (o set_point), tu le dices que punto de control quieres setear, no es segun el orden que los setees... la sintaxis es...

point_set(file,graph,n,x,y)

donde n es el numero de punto de control de 0 a 999
x e y, son las coordenas dentro del mapa para cada uno de esos puntos

el core no hace nada con esos puntos de control, esos puntos de control solo son de utilidad al programador, un uso comun es para indicar donde poner por ejemplo, la mano, o un arma, o lo que sea...

el centro del hijo sea el punto de control del padre es simple

en el padre tenes que tener algo asi como

get_real_point(n,&p1x,&p1y);

donde n es el numero de punto de control (por ejemplo 1) y &p1x y &p1y, punteros a enteros donde la funcion devolvera las coordenadas calculadas teniendo en cuenta posicion, angulos y size.

luego desde el hijo haces

x = father.p1x;
y = father.p1y;

y si necesitas size y angle

size = father.size;
angle = father.angle;
o
angle = father.angle + my_angle;

lo mismo para flags

bueno, ya ahi te daras cuenta solo que otras cosas debes tomar del padre.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 28, 2018, 09:13:11 AM
vale, ya lo voy pillando (estas cosas is no las entiendo y comprendo como que no me entra) yo seteaba el centro:
set_center
y lo que me decis son puntos de control
point_set
En principio el error es obvio, de esta forma si se puede hacer lo que creia que se podia hacer: Poner ciertos puntos en la imagen y luego ''pegar'' una nueva imagen en esos puntos

gracias
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 28, 2018, 01:03:11 PM
Vale, despues de perder toda la mañana intentandolo y mirando a la biblia y sus ejemplos, la cosa se me complica bastante, ha de ser porque soy demasiado torpe o ya tengo una edad que me cuesta trabajo entender las cosas...

El caso es simple, quiero darle un punto de control a un grafico padre y hago esto
set _point(0,660,1,5,5);
traducido, el punto 1 del grafico 660 del fpg 0 es x = 5, y = 5 ¿no?

Ahora a su hijo debo de hacerle un ''get point''
get_point(fathet.file,father.graph,1,&punto_controlX,&punto_controlY);
que traducido es (porque tambien lo he probado numerico) el punto 1 del grafico 660 del fpg 0 son: punto_controlX y punto_controlY (variables privadas del hijo)
Cuando las asocio a las x,y del hijo, evidentemente me las coloca donde no está el grafico del padre, no pasa nada, lo veía venir...
Y aqui me atasco por parte de la biblia

En el caso de maese Splinter si hago
get_real_point(0,&p1x,&p1y);
¿¿le tengo que hacer publica las dos variables p1x y p1y que luego se las paso al hijo??
Aqui me rayo bastante con lo publico (que odio a muerte) pero que haciendo lo otro que puse tampoco me dá los resultados que quiero









A ver si me podeis decir porque me pasa esto, porfa:
Quote from: Futu-block on January 26, 2018, 05:31:45 PM
buf, hoy es dia de problemas, en mi via habia visto este error al salir, ¿que tengo que hace? creo que descargar tela de cosas, ¿no?
(http://storage9.static.itmages.com/i/18/0126/h_1516994997_3913588_6bd81ac6ab.png)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 29, 2018, 06:05:35 AM
puedes ponerla como publica o como local...
tienes que usar get_real_point, y se hace desde el padre porque asi toma en cuenta coordenadas (x,y), angle, size, sizex, sizey, flags, resolution, region, etc...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on January 29, 2018, 06:06:00 AM
ni idea por que te da esos errores, sin codigo no puedo saberlo.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 29, 2018, 06:38:00 PM
Ya he dao con lo del error y era que cargaba en array con un bloque for varios audios:
(http://storage9.static.itmages.com/i/18/0129/h_1517250680_2745380_f16b96827d.png)

No se porque co* me daba problemas al salir como que no lo descargaba o algo, da igual, usaré lo que uso en los demas, una carga temporal:



wav_x = load_wav("audio/"+rand(28,29)+".ogg");
set_wav_volume(wav_pelotaso,28);


en vez de cargar 10 y luego que suene aleatoriamente uno de ellos lo que hago es que cuando toque sonar (si no es el mismo numero que salió en el aleatorio) cargue el sonido correspondiente y lo reproduzca

una cosa solucionada, cuando termine con este juego me pongo con el programa y ya veremos lo de point ese, que seguro que si lo tomo con calma lo veo mas claro ;)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on February 03, 2018, 01:15:09 AM
La idea es que el padre, que es el que contiene los puntos de control del 1 al 999, modifique la posición del hijo, haciendo

get_real_point(1, &(hijo.x), &(hijo.y))

Si no, tienes que buscar la manera de pasar los valores entre dos procesos, bien con variables locales, con públicas o usando punteros en los parámetros de entrada (las variables que van entre paréntesis junto al nombre del proceso cuando lo estás empezando a escribir).
Eso sí, cuidado con el orden de ejecución, porque te puede dar problemas, o un pequeño retraso.

Pero los puntos de control son muy útiles. Recuerdo haberlos usado en diferentes puntos de Screen Break Time, como en la primera fase, con los caracoles voladores para sus linternas con alpha, en el combate contra Jurk Hoygan con el ataque molinillo de Panta, en la fase de vuelo para determinar desde dónde salen los disparos, en los microjuegos como el del desatascador...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 04, 2018, 07:54:35 PM
bueno, pasad de eso ahora mismo que hay otra cosa mas delicada y no me terminaré de aclarar (y tiene miga)

resulta que cuando quiero pasar el Jarl a wiz (que por algo tiene esa resolución) no hay manera, ahora bien y me dije que cojo un juego de wiz y lo modifico para que funcione, todo iba excelente, e incluso me daba fallo de color el fpg a convertirlo a 16bit fenix pero me daba igual, cargaba en el pc y me compilaba y podia jugar, hasta que...

Hasta que lo puse en la wiz y nasti del plasty
¿que caraho hay que hacer?
¿acaso ocupa mucha memoria?
Ay jesus, que cruz, estoy a punto de vender la consola del mosqueo que tengo

https://www.dropbox.com/s/tiuxj1ga78fj1rh/jarl.rar?dl=0
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on February 06, 2018, 12:40:30 AM
¿Te has acordado de que Wiz es Linux y de que es sensible a mayúsculas y minúsculas? :D

No sé, deberías sacar a fichero los mensajes de log y error, tanto al compilar como al ejecutar.
¿Has comprobado que no sea cosa del programa que usas para hacer el FPG? ¿Qué error te daba al hacer la conversión?
Datos, tienes que conseguir datos para que te resolvamos las dudas (el problema te lo arreglas tu :D).
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 06, 2018, 03:31:09 PM
vale, despues de pelearme una mijita mas y conseguir un .gpe que me chive que pasa tengo los siguientes errores:

err1.txt = vacio


err2.txt
Segmentation fault
La he liao parda, jijiji

log1.txt
BGDC 1.0.0 (Jul  4 2016 21:44:16)
Bennu Game Development Compiler

Copyright (c) 2006-2016 SplinterGU (Fenix/BennuGD)
Copyright (c) 2002-2006 Fenix Team (Fenix)
Copyright (c) 1999-2002 José Luis Cebrián Pagüe (Fenix)

/mnt/sd/game/jarl/jarl.prg:3: error: DLL/import.prg: file not found ( token error: ";" ).


Eso me indica que falta un punto y coma en la linea 3, algo en que discrepo, si acaso es el include de la linea 5...

(http://pix.toile-libre.org/upload/original/1517930444.png)

y aquí el DLL/import.prg por si acaso:

(http://pix.toile-libre.org/upload/original/1517930612.png)
y ahora procedo a renombrar las carpetas, cambio la DLL por dll (minusculas) tanto en la carpeta como en el .prg principal, 1º porque me gustan minusculasy 2º por si acaso, pero que es absurdo porque si las dos estan en mayusculas, no deberia haber problemas, peeero, ahora cambia de esta manera:
BGDC 1.0.0 (Jul  4 2016 21:44:16)
Bennu Game Development Compiler

Copyright (c) 2006-2016 SplinterGU (Fenix/BennuGD)
Copyright (c) 2002-2006 Fenix Team (Fenix)
Copyright (c) 1999-2002 José Luis Cebrián Pagüe (Fenix)


File jarl.dcb compiled (108474 bytes):

  Processes                    13
  Global data                2892 bytes
  Local data                  224 bytes
  Private data                316 bytes
  Public data                   0 bytes
  Code                      25384 bytes
  System processes            385
  Globals vars                 59
  Locals vars                  29
  Private vars                 59
  Publics vars                  0
  Identifiers                 917
  Structs                       7
  Strings                      57 (549 bytes)

No se que he hecho pero parece que vá bien, hasta que veo que el log2.txt me vuelve a dar el mismo problema

log2.txt
FB_OpenMouse()
Using tslib touchscreen

¿he usado algo que no debia? creo que no, no uso mouse en el juego aunque creo que lo importo en la libreria
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: gecko on February 07, 2018, 03:14:14 PM
En el segundo caso (después del renombre de archivos), pareciera que está todo bien, por lo menos los logs no dicen nada que indique errores. El juego sigue sin andar?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 08, 2018, 08:18:21 AM
nope, me sigue saliendo el err2.txt
Segmentation fault

creo que eso significa algo, ¿no?

total, que hace para cargar y en el ultimo momento se arrepiente y sale al menu
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 10, 2018, 10:34:43 PM
segun pruebas que estoy haciendo, el problema sigue dandose en linux
¿hay algun comando especial para compilar en windows o son los mismos que en linux?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 13, 2018, 04:52:20 PM
Bueno, ya habiendo terminado el ¡¡Jarl!! el juego de Chiquito de la calzada, esta en mi firma y bla bla bla, aunque todavia no lo puedo portar a wiz, pero eso ya lo veremos en otra ocasión, ahora me centro en lo anterior, los puntos de control y espejados...

Gracias a los ejemplos y a la biblia he conseguido averiguar ciertas cosas:

·set_center = situa el centro del grafico en el sitio que tu quieres, en mi caso centro el cuerpo en el ombligo y el brazo en el hombro o parte superior del brazo

·set_point = pone el puntos donde tu quieres que despues sirven de referencia para otras cosas; de esto me costó la misma vida entenderlo puesto que guarda en una coordenada en una sola variable, que luego para pasarla a una coordenada x o y me preguntaba que como de una variable saco la x,y del proceso

·get point = este es el que pregunta por los puntos guardado en esa variable o punto seteado, y se guarda con el famoso & en la estructura ''de dió'' del dios bennu, claro

Todo esto está muy bien, se le puede dar movimiento y el brazo sigue saliendo del hombro y no del ombligo hasta que...

hasta que hay un giro, cuando hay un giro se vá todo al garete, y no estoy hablando de un flag o espejado porque si ya espejamos el brazo no solo es el grafico lo que se espeja sino el giro, al incrementar el angulo comienza a girar para el otro lado, no se si es comprensible y normal o un fallo de programación porque no se ha tomado en cuenta una nimiedad

Total, el tema de la consulta está solucionado, usaré esto de los points para cuando se pinche un grafico no se vaya el centro de la imagen al punto del ratón como tenia antes

En cuanto al giro y el espejado voy a usar lo siguiente:
Un boton adicional para espejar el miembro, con lo cual habrá unas instrucciones nuevas invirtiendo la rueda del raton para que no pierda la sintonia
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 18, 2018, 12:58:50 PM
¿como se cambia el tamaño de la pantalla sobre la marcha?

Quiero sacar un snapshot de  200x200 en el centro de una pantalla de 256x256 pero el juego mide 256x512...

Tenia planeado hacer: 1º redimensionar, 2º borrar fondo haciendo put_screen(0,0) 3º capturar pantalla haciendo get_screen () y bla bla 4º volver a redimensionar pantalla  5º colocar el fondo pero me explosiona el nucleo, je je

¿alguna otra idea?
creo que con un map_block copy se puede, ¿no?


Pues no y me autorrespondo, igual me sirve de consulta para la proxima vez, se trata de pintar los nuevos graficos en el viejo con map_put y luego salvar ese grafico con save_png
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 26, 2018, 04:28:10 PM
¿se puede hacer un switch a map_get_pixel?

he de comparar muchos colores por cada pixel de una determinada sección de un grafico, con la intención que sea una numeración, en plan codigo pero al hacer map_get_pixel dentro de un bloque for pongo los diez if juntos y es un agobio, creo yo...

aunque pensandolo bien, mejor usar una función, ¿no?

Otra mas, quiero pillar un color de un determinado pixel y rellenar el fondo, lo hago con map_get_pixel y lo guardo en una variable, luego cuando lo pongo en map_put_pixel a traves de un for no me rellena con ese color, ¿acaso si guardas un color en una variable no se guarda como rgb(321,546,123) sino como un numero ''aleatorio? ¿como puedo usar ese color otra vez?

Otra mas acerca de una funcion, ¿como puedo hacer que una función tome en cuenta una variable global? o en su defecto interactue con otro numero
ej:

var_tal = funcion_tal() con el numero especificado...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 27, 2018, 05:49:34 PM
Vale, me auto respondo pero no del todo; he usado la siguiente función:


funcion conversor_colores_en_numeros(numero)    // que guay, puedes invocar una función con un numero y la función usará ese numero, no lo sabia
private
int cody[9];    // aqui guardamos los colores  ''dictados'' por nosotros
int valor_devuelto;
int grafico;     // que royo que tengo que cargar el grafico ¿no se puede hacer de otra forma?

begin
    grafico = load_png("imagen.png");
    cody[0] = rgb(0,0,0);    // negro equivale a 0
    cody[1] = rgb(255,255,255);    // blanco equivale a 1
    cody[etc...] = y asi hasta el 9 con los colores deseados con respecto a los numeros deseados

    if (map_get_pixel (0, grafico, numero, y) == cody[0] valor_devuelto = 0; end
    if (map_get_pixel (0, grafico, numero, y) == cody[1] valor_devuelto = 1; end
    etc...
    return(valor_devuelto);
end
// aclaro que 'numero' pertenece al valor dentro del bloque for el cual invoco a la función que equivale a la posición X del gráfico a leer, lo mismo con Y


No se, esto de repetir 10 veces el map_get_pixel es un poco agobio y mas si no conozco la manera que corte la función cuando ya haya coincidido con el color/numero deseado (la estadistica dice que se repiten mas los primeros numeros, del 0 al 3) y en cuestión de meterle un for no creo que sea muy dificil, ya lo estudiaré, ergo 1ª cuestión resuelta


·La nueva pregunta es acerca de flags, Quiero espejar horizontal y verticalmente, para eso uso el flags 0 y 1, pero si quiero espejar verticalmente ¿cual uso? 1 y 2, 0 y 1, 0 y 2 ???    Solucionado   Cuestion de ir probando·

Sigo buscando como sacar el rbg de un  pixel para rellenar con ese color, lo que se dice la pipeta en paint, el ''pic color''
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 08, 2018, 04:55:24 PM
Otra mas, ¿como hacer un flags dentro de un map_get_pixel?

Hablo si hay alguna opción extra de poner flags al grafico que escanea map_get pixel porque evidentemente lo que hay que hacer es invertir la dirección del escaneado, ya que estoy hablando de un par de bloques for y dentro el map_get_pixel.

Y otra mas ahora que estamos en caliente: ¿como invierto un bloque for?
porque en una cosa asi: for (a = 0; a<9; a++) me gustaría que hubiera algo que pudiera hacer yo como var_a = -a; vamos, darle un valor negativo para que cuente de 9 a 0, que dudo que haya algo asi, solo estoy especulando y esta respuesta se dá por respondida, ¿no? ( y casi que la anterior, si se pasa alguien que sepa mas que yo por aqui, claro ;))
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on March 08, 2018, 08:01:03 PM
Quote from: Futu-block on March 08, 2018, 04:55:24 PM
Otra mas, ¿como hacer un flags dentro de un map_get_pixel?

Hablo si hay alguna opción extra de poner flags al grafico que escanea map_get pixel porque evidentemente lo que hay que hacer es invertir la dirección del escaneado, ya que estoy hablando de un par de bloques for y dentro el map_get_pixel.

Y otra mas ahora que estamos en caliente: ¿como invierto un bloque for?
porque en una cosa asi: for (a = 0; a<9; a++) me gustaría que hubiera algo que pudiera hacer yo como var_a = -a; vamos, darle un valor negativo para que cuente de 9 a 0, que dudo que haya algo asi, solo estoy especulando y esta respuesta se dá por respondida, ¿no? ( y casi que la anterior, si se pasa alguien que sepa mas que yo por aqui, claro ;))

map_get_pixel no lleva flags...

y lo otro has preguntando sin pensarlo... te voy a dar la solucion y veras que tengo razon... y te haras un auto facepalm... de lo simple que es...


for (a = 9; a >= 0; a--)


esto es de 9 a 0, en el caso que pusiste era de 0 a 8 porque la condicion es < 9... pero como preguntaste de 9 a 0... ahi tienes la respuesta.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 08, 2018, 11:05:08 PM
No, no me refería a usar un for distinto,  que es lo que tengo que hacer, hablaba de algo que se invirtiera la operación, que en vez de sumar restará, ya que necesito una resta a la vez que se suma automáticamente en el bloque for

Tu sabes, estaba desvariando, seguro que sacó alguna función que haga esa operación rápidamente
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on March 09, 2018, 11:30:15 AM
var_a = 9 - a; ?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 09, 2018, 04:17:57 PM
parece que sirve, dejame pensar en voz alta:
tengo un par de bloques for para ''escanear'' un grafico y tengo que pintar dos de ellos, uno de los cuales invertidos...

for (a=0; a<30; a++)
    for(b = 0; b<30; b++)
        if (map_get_pixel(0,grafico_a_escanear, a, b ) == rojo)
            map_put_pixel(0,grafico_a_pintar, 100 + a, 100 + b, rgb(0,0,0));    // pinta un grafico en 100,100
            map_put_pixel(0,grafico_a_pintar, 330 - a, 100 + b, rgb(0,0,0));     //pinta un grafico en 100,330 invertido
        end
    end
end


Pues si, parece que cuadra para lo que quiero, como dice Dilley Celso, de primero de parvulitos y cateando la materia, ja ja ^^U
Es lo que tiene aprender por cuenta propia, todavia recuerdo los ejemplos tontos que dimos de basic en un cursillo, hace eones

gracias
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 10, 2018, 10:23:43 AM
¿es normal que se me obligue poner los include detras de las globales y locales?
lo digo porque me hasta que no lo he puesto asi no se ha solucionado el problema y en la biblia dicen que no

(http://storage3.static.itmages.com/i/18/0310/h_1520677409_6377800_cdb8c74228.png)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 10, 2018, 11:02:44 PM
Otra: tomar el foco del ratón...

¿como hago para que el ratón no sobrepase una sección mientras esté pulsado?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on March 10, 2018, 11:26:08 PM
de nada... ;)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on March 10, 2018, 11:26:55 PM
Quote from: Futu-block on March 10, 2018, 10:23:43 AM
¿es normal que se me obligue poner los include detras de las globales y locales?
lo digo porque me hasta que no lo he puesto asi no se ha solucionado el problema y en la biblia dicen que no

(http://storage3.static.itmages.com/i/18/0310/h_1520677409_6377800_cdb8c74228.png)

depende si los includes necesitan de alguna global...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 17, 2018, 11:25:42 AM
Quote from: Futu-block on March 10, 2018, 11:02:44 PM
Otra: tomar el foco del ratón...

¿como hago para que el ratón no sobrepase una sección mientras esté pulsado?

Quote from: SplinterGU on March 10, 2018, 11:26:08 PM
de nada... ;)

Osea, que nada de nada, no se puede tomar foco del raton??


Otra mas, esta vez de rendimiento:
Si en un proceso y mediante su loop le digo que cambie su grafico, ¿cual será mas ''comoda'' o que tenga mejor ''rendimiento'' o mas mejor, como digo yo?

Primer caso:
loop
    if (variable == tal) variable = cual; graph = otro; end
    frame;
end


Segundo caso
loop
    if (variable == tal) graph = pascual; end
    frame;
end


Si nos fijamos bien, en el segundo caso estaría comprobando y asignando en cada frame, cosa que pasa por alto en el primero, ergo supondría mas trabajo pero se podría solucionar bajando frames, ya que tampoco me importa mucho, es un programa.

Pero claro, yo no quiero hacer las cosas al tuntún, yo quiero regirme por una fidelidad comin que sea lo que se suela hacer. Tampoco es un tema que tenga mucho que ver cor ordenadores que tenemos hoy en dia super potentes que le dá igual hacer una o dos comprobaciones mas


Y una mas, ¿puedo salvar un fpg con otro formato?
lo he intentado con el fpg editor v4.0.2 y siempre me pone el .fpg al final de la extensión que quiero poner
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: FreeYourMind on March 19, 2018, 08:17:57 AM
Futu que preguntes si se puede guardar el .FPG con otro formato me desconcierta. Eres Futu o un clon ?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 19, 2018, 12:02:57 PM
es que he digi-evolucionado, ji ji ji
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: FreeYourMind on March 19, 2018, 12:41:41 PM
lo comprimes con winrar y lo tendras guardado en el formato ZIP o RAR, tu eliges  ;D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 19, 2018, 03:21:47 PM
winrar, que antiguo...
yo uso f2 y le cambio la extensión pero no me interesa, yo lo que quiero es que el fpg edit guarde con otro nombre, sino hay que hacer un ''programucho'' con bennu que ponga algo como save_fpg y lo guarde con la extensión que yo quiero... un coñaso, ya que no es eso lo que quiero
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: gecko on March 19, 2018, 10:28:38 PM
Yo opino que lo que vos pedis o querés, respecto a la extension de archivo es:

1 - inutul en la mayoria de los casos de uso (normales) de un FPG
2 - facil de hacer por tu cuenta (script en bash, en bennu, manualmente, etc...)

Por lo que no tiene sentido que esperes que FPG editor tenga esa funcionalidad incluida.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 19, 2018, 10:52:47 PM
no te creas, es una manera de encriptar fpgs, que casi me sirve cambiandolo yo mismo por mi cuenta, que al fin y al cabo para mi proposito, sirve. Los fpg proporcionados por mi tendran una nueva extensión y el que quiera usar un .fpg creerá que está hackeando el programa.

Yo creia que desde el fpg editor se podia cambiar puesto que no pone que tipo de extensión darle, pero le dá fpg automaticamente
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: FreeYourMind on March 20, 2018, 07:56:12 AM
El que quiera hackear tu programa tendra los conocimientos minimos para saber que la extension o los nombres de los archivos no importan nada, porque la cabecera del tipo de archivo se guarda en el propio archivo, no en su nombre.
Otra cosa seria que un FPG se pueda guardar en otro formato real, esto significa exportarlo por ejemplo a otro formato que tambien guarde la informacion similar, en una mochila de imagenes con codigos e incluso que guarde puntos de control.
Pero no tiene mucha utilidad, los fpg's ya son raros lo suficiente para ser el formato ideal, para protegerlos tienes la encriptación que con eso ya tienes de sobra, ahora lo de guardar en otros formatos mas conocidos no tiene mucho sentido a nivel funcional.
Tambien puedes crear un pequeño programa que exporte sus imagenes y despues los guardes en otro tipo de archivo mochila.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 20, 2018, 03:30:04 PM
Nah, le puedo yo cambiar la extensión manualmente, asi que los oficiales tendran la extensión cambiada. Si alguien quiere usar uno fabricado por el mismo cambiandole la extensión, allá el, pero no son oficiales proporcionados por mi...

Yo me entiendo, y pronto me entendereis
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 21, 2018, 06:48:10 PM
Otra mas (mas las que os dejais en el tintero, je je >:) )

¿como detectar que hay movimiento? tranquis, que me explico:
Como sabeis, estoy liado con programas en bennu, nada de videojuegos, así, a lo bestia :D el caso es que tengo una comprobación de color en un grafico de 30x30 que pinta en color transparente (osea, borra) el grafico en cada frame, y me gustaría que fuese solo si cambia el tipo de variable...
Sería algo como: ''if (graph != al anterior)'' o algo asi, pero no se me ocurre ahora mismo nada, estoy en blanco
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 26, 2018, 04:09:43 PM
Esto parece 'misterios sin resolver' o 'no haced caso al cansino' :D :D :I

Otra mas, pa que sigais dandole a la ''maind'' je je

Necesito cargar todos los archivos de la misma extensión cualquiera que sea su nombre, ya hablamos en un pos acerca de como los cargaba y eso, yo lo que necesito es o bien saber como se lista los archivos de una carpeta o saber como se listan los archivos de determinada extensión. Ambas necesidades son necesitarias para mi, valga la rebundancia. Necesito saber lo que hay en una carpeta y necesito saber cuantos de una determinada extensión hay

gracias de antebraso :P
actualizado
me parece que es algo relacionado con GLOB, ¿no? he encontrado un versiculo en la biblia donde me habla de algo asi:
(http://storage9.static.itmages.com/i/18/0326/h_1522081297_9038890_76e2d2aa9a.png)


actualizado

Todo bien hasta que decidí usar el codigo para cargar fpg y como que fallo en algo, creo que es lo de pasar string a int o algo...

    archivo=glob("*.fpg");
    while (archivo!="") //comprobamos que ha encontrado algun archivo
        //efepege[cont] = load_fpg("archivo.fpg");
        write(0,10,cont*10,0, archivo); //escribimos el nombre del archivo...
        write(0,250,cont*10,0,fileinfo.created);//y su fecha y hora de creación
        cont=cont+1; //avanzamos una linea
        archivo=glob("*.fpg"); //buscamos otro archivo
    end
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 27, 2018, 11:21:24 AM
Me autorrespondo corrigiendo y asi me sirve de recuerdo:

    archivo=glob("*.fpg");
    while (archivo!="") //comprobamos que ha encontrado algun archivo
        //efepege[cont] = load_fpg("archivo.fpg");
        write(0,10,cont*10,0, archivo); //escribimos el nombre del archivo...
        write(0,250,cont*10,0,fileinfo.created);//y su fecha y hora de creación
        cont=cont+1; //avanzamos una linea
        archivo=glob("*.fpg"); //buscamos otro archivo
    end


para que funcione hay que corregir la linea de guardado de esta forma:
efepege[cont] = load_fpg(archivo);
Puesto que si estamos comprobando que mientras archivo no esté vacio, y antes decimos que es archivo: el glob ese y asterisco punto fpg
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on May 11, 2018, 12:04:39 AM
Juer, Futu, me voy unos meses y escribes un poema, pero en lugar de versos, escribes preguntas.
No me ha quedado claro si es un hilo de preguntas, "Saber y Ganar" o el último exámen de programación de mi facultad :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 11, 2018, 07:52:56 AM
tu sabe, hay algunas cosas que encuentro las respuestas y prefiero autoresponderme
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 27, 2018, 05:38:23 PM
Mas cosas:
·Cargas de archivos; Al empezar el programa hago una carga de archivos, osea, miro en la carpeta y cargo primero con un while todos los archivos .pill de mi invención, que no son mas que un .fpg renombrado, de esta forma:


chdir("carpeta");
archivo = glob("*.pill");
while (archivo!="");
    array[contador] = load_fpg(archivo);
    contador ++;
    archivo = glob("*.pill");
end

archivo = glob("*.fpg");
while (archivo!="");
    array[contador] = load_fpg(archivo);
    contador ++;
    archivo = glob("*.pill");
end


El problema es que tengo el array hasta 10, y si hay menos me carga los siguientes repetidos al primero

-¿Como hago para que no me los repita?
¿acaso deberia contar cuantos archivos hay y luego asignar ese valor al array?
¿Como se hace eso? diomiodemiarma

Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 28, 2018, 04:51:42 PM
Otra mas, trabajar con Z:

·Tengo 10 procesos, cada uno con una z distinta (del 0 al 9) cada uno seleccionable, pero siempre uno de ellos, no puedes trabajar con mas de uno a la vez, quiero cambiar la z del seleccionado, que al subir la z el que corresponde a esa z automaticamente baje y lo mismo por abajo...

¿algun codiguito del que pueda tirar de el?

Zanks, espero no preguntar buges de bennu, ya que no encuentro respuesta :diablo: :diablo:
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: FreeYourMind on May 29, 2018, 07:16:25 AM
eso es como tener 10 carpetas en 3d unas encima de otras en cola e ir moviendo una posicion hacia nosotros la selecionada no ?

pues al selecionar la carpeta con su id compruebas de la 1 a las 10 la z de las demas carpetas, y redefines el valor z de todas las carpetas, pseudocodigo en otro lenguaje:

for (int i = 1; i < z_carpeta.Length + 1; i++)
{
     if (z_selec == z_carpeta[i - 1]) // and id_selec != id_carpeta[i - 1 ignorame]) // Compara todas las carpetas menos la nuestra misma y detecta la carpeta siguiente
    {
       int aux = z_selec;
       z_selec = z_carpeta[i -----ignorame solo la i ]; // Se cambian la z, las demas carpetas se quedan con el mismo z
       z_carpeta = aux;
       break;
    }
}

Si quieres que las demas cambien su id, solo es ajustar el codigo descrito para que despues ordene las restantes, pero creo que no es necesario, por lo menos en el ejemplo de las carpetas no lo es
[/i][/i][/i]
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: FreeYourMind on May 29, 2018, 07:19:07 AM
parece que hay un bug en el foro y el modificar mensaje no funciona, el texto se queda el antiguo ...
es al poner los corchos cuadrados con solo la i dentro que despues no salen ...... he puesto la palabra ignorame para que se vea.
admins revisadlo porfa
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 29, 2018, 07:32:23 AM
Correcto, eso es lo que buscaba, ya  yo adapto el codigo a mis necesidades, gracias fri
---modificado---
Gracias friyour, estoy modificando el mensaje a ver si falla el bug del foro
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on September 24, 2018, 10:41:31 PM
Buf, veo que se me ha olvidado gran parte de Bennu porque lo de los archivos me lo sabía.
Creía que glob te devolvía algún valor diferente cuando terminaba de encontrar valores. Tendría que repasarlo porque en cierto editor hay una ventana que carga todos los ficheros de un tipo, independientemente de la cantidad que haya en la carpeta. He mirado el código y es como tu lo tienes, por alguna razón no te devuelve la cadena vacía tras el último ¿Has comprobado qué valor es?

De todas formas, desestimé glob por otras funciones que se sacó Splinter de la manga y que tienen un control mejor: abres el directorio con diropen, usas dirread para buscar ficheros, y cierras con dirclose. De esta foma, no necesitas usar CD ni CHDIR para buscar archivos en una carpeta. Echales un vistazo.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on September 25, 2018, 02:22:16 PM
Hace eones que no estoy liao con eso pero como lo voy a volver a revisar en dentro de poco, gracias
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 14, 2018, 04:20:49 PM
Nueva pregunta, aunque yo creo que la respuesta es que Si...
¿Puedo crear archivos y borrarlos desde bennu?
crear archivos ya se, he llegado a crear archivos .txt y modificar alguno existente, incluso leerlos, pero como que todavía no se borrarlos o si se borran
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 27, 2018, 02:37:36 PM
El tema de los joysticks ¿Cómo va?
Alguna documentación que empollarr?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on November 12, 2018, 02:02:40 AM
Para borrar ficheros, tienes que mirarte la documentación de las funciones de directorios. Ya sabes, CD, GLOB, RM...Para los joysticks tienes la MOD_JOY. Es la que uso en todos mis códigos, sólo que nunca me he puesto con los analógicos. Si busas eso, tienes que leer sobre los AXIS, que básicamente devuelven un valor decimal entre -1 y 1, según la fuerza y dirección que se presione ese eje. Teniendo en cuenta que cada joy tiene dos ejes...A eso le tienes que sumar si el mando reconoce la cruceta como joy analógico o no, si tiene joy derecho e izquierdo, en incluso si usa giroscopios, que también son ejes (en el mando de Wii te vuelves loco con tantos ejes :D)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 14, 2018, 09:11:52 AM
no, nada de analogicos, estoy estudiando en la wiki lo de mod_joy y haciendo pruebas...

·Una mas: Tengo dos pantallas en el pc y se vuelve loco al hacer full screen, ¿hay alguna forma de poner a una pantalla sola?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on November 16, 2018, 12:40:31 AM
Eso se lo preguntas a Panreyes, él hizo su PixPang a tres pantallas.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: panreyes on November 16, 2018, 12:44:26 AM
Quote from: Drumpi on November 16, 2018, 12:40:31 AM
Eso se lo preguntas a Panreyes, él hizo su PixPang a tres pantallas.
Virtualmente era una sola xD
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 16, 2018, 07:43:17 AM
porque tenía la resolución de 3 pantallas de ancho...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on November 26, 2018, 12:24:18 AM
¿Y no es lo que quieres?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 26, 2018, 11:51:58 AM
nope, quiero full screen en solo una pantalla, pero vamos, vuelvo al joystick a ver como se me da
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on November 27, 2018, 12:20:47 AM
Pues full_screen es full_screen, todas las pantallas.
Si sólo quieres una tendrás que usar un SET_MODE del tamaño de la pantalla que quieras, usar MOVE_WINDOW para colocarla en la esquina de la pantalla que busques, y usar el MODE_FRAMELESS para quitar el marco de la ventana. Creo que no hay más que se pueda hacer. Consulta las funciones de la MOD_WINDOW.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 05, 2018, 06:53:06 PM
Otra mas guay:
·Tengo dieciocho mil millones de procesos repartidos por la pantalla y necesito que mueran, así que le tó cuco yo le he dado una variable local a todo proceso del juego, de modo que cuando esta valga 5 (por decir un numero) los procesos se ''break'' y mueren
Ahora bien, si tengo que hacerlo desde el proceso principal ¿como activo esa variable? con un simple bicho.varlocal = 5; sirve para todos los procesos llamados bicho o tengo que buscar sus id??
en todo caso tambien me podeis decir que haga signal, pero vuelvo a la misma duda ¿vale con una sola signal para todos los bichos?

Ya está, es simple, pero son cosas que me reconcome

Pd: So decidme que le ponga a cada bicho que si una variable global vale tanto se mueran, eso tambien lo sé, son preguntas de que es mas mejon con bennu
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: JaViS on December 05, 2018, 07:05:21 PM
no es mas facil usar signal()?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 05, 2018, 08:37:42 PM
No lo sé, es lo que estoy preguntando, si uso Signal no hace falta la id de los procesos?
Y si les cambio la variable local ¿No hace falta la id de los procesos?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: JaViS on December 06, 2018, 01:15:44 PM
signal se puede usar con parametros de tipo de procesos: signal(type tutipodeproceso)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 07, 2019, 06:02:55 PM
¿problemas de instalación para windows? me sale esto:


(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4141)

Nada que no se solucione descargando y copiando las librerias en la carpeta correspondiente, espero que me sirva de recordatorio
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 16, 2019, 04:30:48 PM
Otro mucho mas importante, que seguro que estoy pinchando en algo...

La idea es seleccionar un color y señalarlo de alguna manera, asi que pinto un rectangulito de donde clicke el raton, asi que primero pongo que si clica guarde en una variable coleleg (color elegido)pero debe de pillar el color del fondo, del put_screen y no me lo pilla...
pongo el código porque no se si es que meto dentro del loop lo de drawing_color antes del draw_box o yo que se pero no me termina de cuadraraunque creo que es por el put_screen

-----Actualizado-----

Otro codigo que me está dando por hacer cosas raras, en este caso no me carga las imagenes de los demas procesos, parece que me los ignora completamenteMala sistasix en esta ocasión
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 31, 2019, 11:25:20 PM
¿Alguien sabe porque con los fpg de 8 bit y el programa en modo 8 bit me cambia los colores? principalmente el negro 90%
no me incomoda por que en un momento dao lo coloreo, igual que el relleno:(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4170)
otra cosa que es curioso que pase es cuando le doy al fpg editor la opción de 8 bit le cambia los colores a los gráficos, por eso cargo una ''chuleta'' una pequeña imagen de 256 colores por si acaso
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 31, 2019, 11:33:19 PM
Sin embargo, si no cargo la chuleta me hace lo que le dá la gana con los colores(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4172)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 03, 2019, 06:40:26 PM
Para crear un .exe solo con los fpg que me interesa debo citar los que me interese incluir?
bgdc -f graficos.fpg -f graficos2.fpg -s bgdi nombreDelJuego.prg  ==> para incluir un fpg

por ejemplo?? eso esta bien??
¿está bien poner -f delante de los fpg a incluir?¿He de poner las rutas de los fpg si no estan en la misma carpeta?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 04, 2019, 08:46:38 AM
Mas fallos de color...
¿porque pasa esto con los ocho bits?(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4175)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 06, 2019, 08:36:21 AM
Al final he tenido que retomar los 32 bits y parece que no me trastoca los colores, excepto que cuando pregunta el color con 'map_put_pixel' segun en cada proceso da el resultao que le da la gana y no se puede usar una variable global de 'rojo = rgb(255,0,0)' cosa que no pasaba con los 8 bit...
creo
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: panreyes on February 06, 2019, 09:45:46 AM
Quote from: Futu-block on February 06, 2019, 08:36:21 AM
Al final he tenido que retomar los 32 bits y parece que no me trastoca los colores, excepto que cuando pregunta el color con 'map_put_pixel' segun en cada proceso da el resultao que le da la gana y no se puede usar una variable global de 'rojo = rgb(255,0,0)' cosa que no pasaba con los 8 bit...
creo
No me cuadran mucho esos fallos, no creo que sean de BennuGD. Si quieres pasar trozos de código, podemos revisar a ver por qué te falla
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 07, 2019, 05:17:22 PM
los pasé a 32 bits aunque puedo recuperar el código a ver si sigue fallando, te los mando a las primera de cambio con el codigo antiguo, lo repaso de nuevo y veo si sigue fallando, eso si, en xubuntu
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 09, 2019, 10:29:27 PM
aqui tiene @panreyes, he comprimido toda la carpeta, el archivo clave es ''ed_cara8.prg'' que he intentado adaptar a la versión que tenía antes, aún asi al convertir el fpg a 8bit me ha dado problemas y me ha cambiado los colores al añadir las imagenes...
Estoy trabajando en xubuntu, pero cuando hice un par de fpg en windows me salieron corruptos y parece que con wine trabaja muy bien
Aunque de todas formas me paso a los 32 bit
https://www.dropbox.com/s/9jzukxfj0zs32jf/edic8.zip?dl=0
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 18, 2019, 07:03:19 PM
La carga y la no carga de archivos:
Hago un for para si existe un archivo (en este caso un fpg) y si no hay mas fpg me carga el primero, ¿Porque?
    for (a = 0; a < 5;a++)
        if (fexists ("graf/pelos/"+a+".fpg"))
            fpg_pelos[a] = load_fpg("graf/pelos/"+a+".fpg");    // fichero pelos
        end
    end

Incluso haciendo esto me sigue cargando el primero

    for (a = 0; a < 5;a++)
        if (fexists ("graf/pelos/"+a+".fpg"))
            fpg_pelos[a] = load_fpg("graf/pelos/"+a+".fpg");    // fichero pelos
        else
            fpg_pelos[a] = 0;       
        end
    end

Tengo dos fpg distintos, ¿como debería hacerlo para que cuente cuantos fpg hay y si no hay mas no cargue mas?
En este bloque for irá mas de un array de fpgs
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 19, 2019, 09:37:44 AM
Vale, me voy a tener que olvidar de las cargas de mas de un archivo ya que falla fexists...

El problema que me sale ahora es la carga de fpg desde una función, si la función devuelve con return ¿puede devolver la variable ya cargada con su fpg?
me estoy rayando bien con esto, asi que paso por ahora de comprobar para sacar el proyecto y lo dejo pendiente para una nueva versión
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on February 20, 2019, 02:30:09 PM
sino queres que cargue mas tenes que poner break... igual no entiendo lo que decis... que primero carga?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 20, 2019, 09:28:45 PM
respondí con el movil y veo que no se ha guardado, pero al fin y al cabo decía que...

a traves de un bloque for consulto con el fexists si existe el archivo fpg con el mismo numero que vá en el  for y poder asignarlo en el array de id del proceso, si el archivo no existe, en el primer caso me vuelve a cargar el primer archivo, cosa que no comprendo porque lo hace
la solución que propones no está mal, si no existe romper el bloque for, pero eso sería si comprobara un archivo por cada vez, pero he de comprobar bastantes carpetas de una vez, en concreto 13, pero iré probando lo del break, igual resulta
no me aclaro todavía el tema de las carpetas puesto que dispondo de una carpeta para cada fpg, 13 carpetas con un fpg cada uno con la intención que si se añade mas fpg el programa los cuente y dé la opción de elegir cual usar
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 25, 2019, 06:48:18 PM
Orden:
¿como sacar un orden por la z de cada proceso?
A la hora de sacar la snapshot pego en un new_map todos los graficos de cada parte de la cara, pero cada una tiene una Z distinta y debo de respetar ese orden y empiezo a poner:
map_put (pelo)
map_put (cara)
map_put (ojos)
etc

¿como se hace?
no puedo preguntar cada frame por cada uno de los procesos en que orden está y si acaso hacer el map_put...

Lo unico que se me ocurre es el preguntar quien tiene la Z mas alta y hacer el map_put, y volver a empezar. Pero ¿como pregunto por la Z mas alta a cada uno? ¿hay alguna formula que no sea preguntar uno por uno que Z tiene?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: panreyes on February 25, 2019, 09:04:37 PM
Creo que preguntar uno por uno que z tiene (con un bucle) es lo ideal.

Primero pintas todos los que tengan z=1, luego z=2, luego z=3, etc...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 25, 2019, 09:11:41 PM
vaya, no hay mas remedio, gracias
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 05, 2019, 09:30:29 AM
Otra:
¿Sabeis como se hace para que en mode_window se pueda cerrar pulsando la X de cerrado de la ventana?
***
------------------*---------------------
por cierto, me ha salido este error, a ver quien sabe que me falla

(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4177)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: panreyes on March 05, 2019, 10:04:36 AM
Quote from: Futu-block on March 05, 2019, 09:30:29 AM
Otra:
¿Sabeis como se hace para que en mode_window se pueda cerrar pulsando la X de cerrado de la ventana?
Revisa exit_status:
http://wiki.bennugd.org/index.php?title=Exit_status
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 05, 2019, 11:11:50 AM
guay, gracias, karma++


// recordatorio:
if (exit_status == true) exit(); end
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 12, 2019, 12:43:01 PM
Una cosita mas:
Uso get_point y guardo los puntos en una variable global pero cuando accedo a ellos en otro proceso no los lee, lo lee como 0..
¿esto es normal o estoy haciendo algo mal?
tengo que poner el get_point en cada proceso, esto no me incomoda pero debería poder hacerlo una vez y ya está
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: panreyes on March 12, 2019, 12:53:18 PM
En principio si usas get_point con una variable global, esta no debería ser sobreescrita sin motivo.

¿Lo haces de esta forma?
get_point( file, graph, 0, &global_x, &global_y );

Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 12, 2019, 04:29:10 PM
sip, lo asocio a una variable global ya definida de antemano, aunque lo revisaré si la he declarado tarde y no me hace caso
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 14, 2019, 03:29:20 PM
Quote from: Futu-block on March 05, 2019, 09:30:29 AM
Otra:
¿Sabeis como se hace para que en mode_window se pueda cerrar pulsando la X de cerrado de la ventana?
***
------------------*---------------------
por cierto, me ha salido este error, a ver quien sabe que me falla

(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4177)


Este error me está ocurriendo mucho, y pasa mas frecuente cuando uso colisión del raton con la imagen del proceso

¿cuantas veces se puede hacer para que no falle?

lo ultimo que estoy haciendo es que al hacer click cambie el sprite del raton le meto un bloque for:


       if (collision (type mouse))   // si el raton entra en su grafico
         size = 110;
         if (mouse.left and !lef) lef = true;          // si se clica
            if (defrente == true)
               defrente = false;
            for (r = 200; r < 219; r++)
               mouse.graph = r;
               mouse.size = 50;
               frame(100);
            end
            mouse.graph = 999;
            mouse.size = 100;
         end
         if (!mouse.left and lef) lef = false; end



y el error segun he podido encontrar en la wel es  sobre wine...asi que bennu funciona en mi pc porque tengo wine, y si me falla es porque el wine me falla, si no no hay manera de echar a andar bennu... ¿no?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: panreyes on March 14, 2019, 03:43:45 PM
Ni idea de por qué.

Cosas que te recomendaría:
- Asegúrate de que no estás funcionando con Bennu compilado en 64 bits porque explotarán los punteros everywhere.
- No uses punteros salvo que sea necesario (da igual que no esté optimizado, los PCs van muy sobrados y no necesitas FPS)
- Usa un proceso para las colisiones con el ratón, siempre será más cómodo (y creo que igual te resuelve eso también)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 14, 2019, 04:37:09 PM
Quote from: panreyes on March 14, 2019, 03:43:45 PM
Ni idea de por qué.

Si idea porqué, y he estado haciendo pruebas y te respondo:

Quote from: panreyes on March 14, 2019, 03:43:45 PM
Cosas que te recomendaría:
- Asegúrate de que no estás funcionando con Bennu compilado en 64 bits porque explotarán los punteros everywhere.
- No uses punteros salvo que sea necesario (da igual que no esté optimizado, los PCs van muy sobrados y no necesitas FPS)

¿que coñ* es un puntero?
ah, vale, ya me acuerdo, preguntar por regiones de memoria y eso...
cosas que ni se usar ni quiero, asi que estoy a salvo

Quote from: panreyes on March 14, 2019, 03:43:45 PM
- Usa un proceso para las colisiones con el ratón, siempre será más cómodo (y creo que igual te resuelve eso también)

Esa es la clave que me está dando porcu, estaba haciendo el método visual basic: un proceso por cada botón, cada proceso miraba si se colisionaba con el raton y se modificaba, y al haber muchos botones han venido los problemas

¿Solución? la que usaba antes que no me daba ni uno, una rejilla y solo un proceso para el ratón que diga en que cuadro de la rejilla se ha clicado y se actua... mano de santo

(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4183)
Gracias, ya me estaba volviendo loco
(http://foto[foto])
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 18, 2019, 08:47:57 AM
¿esto es normal? En el primer for uso como variables a y b, en el segundo vuelvo a usar a y b en vez de el e y f y no me responde como ponerlo con e y f:
// clonamos los graficos y lo guardamos en el array
    for (b = 0; b < 6; b++)
        for (a = 0; a < 6; a++)
            pest[b][a] = map_clone(fpg_evie, 710 + a);
        end
    end
// recortamos los sobrantes
    for (e = 0; e < 5; e++)
        for (f = 0; f < 6; f++)
            for (c = 0; c < 56; c++)
                for (d = 0; d < 48; d++)
                    if (map_get_pixel(fpg_evie, 720 + e, c, d) == rgb(255,0,0))
                        map_put_pixel(fpg_evie,pest[e][f],c, d,rgba(255,250,0,255));
                    end
                end
            end
        end
    end

si al principio del bloque for le pongo que a = 0 y b = 0 ¿porque se lo pasa por el forro?a mi no me importa usar mas variable, si combinas letras hay infinidad de variables, je je, pero ¿porque pasa?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 29, 2019, 07:11:35 PM
Quote from: panreyes on March 12, 2019, 12:53:18 PM
En principio si usas get_point con una variable global, esta no debería ser sobreescrita sin motivo.
¿Lo haces de esta forma?
get_point( file, graph, 0, &global_x, &global_y );
pues me sigue dando problemas, le tengo que meter un frame en el mismo begin y antes del loop,no se lo que afectará o no al tema, en la primera imagen no tiene el frame y cargo los &global_x, &global_y en el main  y no lo carga(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4187)


sin embargo en esta otra le hago frame delante de designar el valor x,y y funciona, me pone el ojo donde es...(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4189)

Distinto ya que haya puesto el punto de control donde no es





Pd: tengo problemas de edición en el foro, no me respeta los saltos de linea
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 30, 2019, 10:02:49 AM
Otra cosa que me pasa es que tengo una ''Violación de segmento (`core' generado)'' porque intento guardar el punto de control 0 correspondiente al centro real de la imagen, ya declarado...



//   get_point(fpg_cuerpos,100,0,&centx,centy);
   get_point(fpg_cuerpos,100,1,&hombr1x,&hombr1y);
   get_point(fpg_cuerpos,100,2,&hombr2x,&hombr2y);

De hecho, creo que tengo algún problemilla que me crea un porron de archivos con este ''core generado''(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4191)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on April 07, 2019, 07:51:11 PM
mas cositas que siguen fallando, al parecer no puedes hacer get_point detras de set_point...
habrá que meterle un frame de por medio o algo...

(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4194)


de todas formas, como lo que hago es medir el ancho + el alto y juego con esas medidas, las guardo en una global y san Sacabó.
Me vá a resultar mas cómodo
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 24, 2019, 10:36:59 AM
Problemas con colisión y get_id:

Vamos, yo creo que hay algo que no estoy haciendo bien, esta vez es con un juego como el frogger que ya presenté en su dia en un concurso que @freeyourmind hizo en gp32spain...
Resulta que cuando está en el rio, comprueba con un mapa de durezas y muere a menos que esté sobre un tronco; hago un proceso llamado tronco y le doy un par de cualidades al cargar para que vaya a la izquierda o a la derecha (por ejemplo) así que lo que hago es comprobar si hay colisión con el tronco, le pregunta el id y lo guarda en una variable para actuar acorde con el movimiento del tronco, pero cuando salta a otro tronco con otra dirección se sigue moviendo en la misma dirección...Código por si acaso

localint direccion, velocidad;
            if (collision(type tronco))
                coli_rana = false;
                tronc = get_id(type tronco);
                switch (tronc.direccion)
                    case 0: x = x - tronc.velocidad; end
                    case 1: x = x + tronc.velocidad; end
                    case 2: x = x + tronc.velocidad; end
                end
            else
                coli_rana = true;                // activamos la colision
                rana_morida(x,y,rand(1,8));        // creamos imagen de rana muerta (probar con pegar png)
                x = -100; y = -100;                // sacamos la rana del campo de vision
            end

Seguro que hay algo que estoy haciendo mal, igual es la misma variable donde guardo en cada colisión con distintos procesos ''tipo'' tronco (ya que es el mismo) y debería usar una distinta, o lo mismo es donde lo tengo puesto, debería estar casi al final del loop, o que cuando deje de tener colisión esta variable valga cero y al colisionar otra vez pille la el id...
Todo eso si cada proceso tiene un id distinto aunque sea muchas veces el mismo
jelp plis, aclararme una mijita el tema
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on May 24, 2019, 04:42:59 PM
Quote from: Futu-block on April 07, 2019, 07:51:11 PM
mas cositas que siguen fallando, al parecer no puedes hacer get_point detras de set_point...
habrá que meterle un frame de por medio o algo...

(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4194)


de todas formas, como lo que hago es medir el ancho + el alto y juego con esas medidas, las guardo en una global y san Sacabó.
Me vá a resultar mas cómodo

no hay que meter ningun frame.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 27, 2019, 04:23:08 PM
El problema es que cuando deja de hacer la colisión debe de des ''get id'' y volver a hacer ''get id'' solo si hay nueva colisión con el nuevo tronco guardandolo en la misma variable...

voy a probar poniendo a 0 la colisión entre tronco y tronco, a ver si vá, me parece absurdo tela pero por probar...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 27, 2019, 04:30:54 PM
pues nope, no va asi...
me buscaré otra manera humana de hacerlo
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on May 28, 2019, 06:55:11 PM
Quote from: Futu-block on May 27, 2019, 04:23:08 PM
El problema es que cuando deja de hacer la colisión debe de des ''get id'' y volver a hacer ''get id'' solo si hay nueva colisión con el nuevo tronco guardandolo en la misma variable...

voy a probar poniendo a 0 la colisión entre tronco y tronco, a ver si vá, me parece absurdo tela pero por probar...

no entiendo que quieres hacer, collision no es una operacion barata, no entiendo para que en el mismo frame necesitas detectar varias veces la colision contra un mismo proceso... si ya colisiono una vez no necesitas buscar nuevamente, tambien puedes hacer collision(id de proceso)... o puedes resetear a mano las variables internas del collision (aunque no es recomendable)

para collision(0) puedes poner a 0 esta variable _mod_grproc_reserved.id_scan

para collision por type, podes hacer simplemente collision a un tipo diferente (tener un tipo dummy para esto, sin procesos corriendo) y luego volver a repetir por el tipo que estabas haciendolo

cualquiera de las 2 formas reiniciara de nuevo desde el primer proceso en lista...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 29, 2019, 02:22:44 PM
no es ese el problema, el problema es que está haciendo colisión en un proceso y guardando su id en una variable que luego usa para cuando colisione con otro proceso que es un duplicado del primero pero con distintas variables.
el problema que no me distingue entre procesos iguales, será que se guarda en la misma variable o no se, pero ya lo he hecho de otra manera en el que cuando hace la colisión no le pregunta al proceso si no que actúa por defecto
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: SplinterGU on May 29, 2019, 05:01:30 PM
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...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 30, 2019, 02:51:51 PM
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...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on June 10, 2019, 12:27:18 PM
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?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on June 10, 2019, 08:39:09 PM
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
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 05, 2020, 07:27:43 PM
un par de cositas; la primera que me ha funcionado no se por qué sin escribir el .dcb al final

(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4249)

y la segunda es ¿se puede interactuar con el microfono?En caso de respuesta afirmativa; ¿como?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 14, 2020, 04:14:25 PM
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.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 18, 2020, 08:25:07 PM
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:
(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4251)

¿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
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Abash on January 19, 2020, 10:30:19 PM
 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
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 20, 2020, 08:23:25 AM
no se me había ocurrido crear un fpg en memoria y guardarlo al salir, me parece muy ingenioso...
gracias, karma++
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 21, 2020, 03:20:00 PM
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ñé?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: 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
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 26, 2020, 01:30:13 PM
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
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Abash on January 27, 2020, 01:53:00 PM
 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 (http://[/uhttp://wiki.bennugd.org/index.php?title=Cdrl)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on January 27, 2020, 09:32:17 PM
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
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 31, 2020, 02:30:23 PM
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
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on January 31, 2020, 02:39:04 PM
Quote from: Futu-block on January 26, 2020, 01:30:13 PM
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
Quote from: Futu-block on January 26, 2020, 01:30:13 PM

SAVE_PNG(0,100,"Foto.png") te guarda la imagen en donde tienes el .dcb (salvo que hayas usado CD para cambiar la ruta)
SAVE_PNG(0,100,"erfuto/Foto.png") te guarda la imagen en una carpeta llamada "erfuto" que está en la misma ruta que el .dcb
SAVE_PNG(0,100,"../Foto.png") te guarda la imagen en la carpeta superior al .dcb.

Ejemplo: si el dcb está en la ruta C:/c1/c2/c3
SAVE_PNG(0,100,"Foto.png") te la guarda en C:/c1/c2/c3
SAVE_PNG(0,100,"erfuto/Foto.png") te la guarda en C:/c1/c2/c3/erfuto
SAVE_PNG(0,100,"../Foto.png") te la guarda en C:/c1/c2
SAVE_PNG(0,100,"../../Foto.png") te la guarda en C:/c1

¡OJO! Es responsabilidad tuya asegurarte de que existen las carpetas.


Será un lío, pero léete la wiki porque vas a aprender más de lo que andas buscando:
http://wiki.bennugd.org/index.php?title=Fpg_save
Según eso necesitas dos valores: el FPG_ID (el valor que te devuelve FPG_LOAD o FPG_NEW) y la ruta-nombre del fichero.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 01, 2020, 11:30:39 AM
osea, que me he respodí yo mismo a la misma hora?? lol

gracias drump
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on February 04, 2020, 12:40:04 AM
Lol. No sé si el foro se ha vuelto tonto, o el que se ha vuelto tonto soy yo :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 25, 2020, 10:48:16 PM
Mas cosas:

Quiero guardar determinados gráficos de un fpg con tal numeración en otro fpg con la misma numeración...
¿hay algo sencillo que lo haga en plan add_fpg_inside_oldfpg o algo así?
yo tengo una función que los vá añadiendo, pero como coincide el mismo número de gráfico digo yo que igual hay algo...

y segundo:

Quiero comprobar si existe el archivo ''tal.fpg'' y si existe que lo cargue, pero lo quiero asi tal como lo digo, no de esta otra forma:
if (file_exists("tal.fpg")) fpg_tal = load_fpg("tal.fpg"); end

en plan '' if (file_exists("tal.fpg")) load_it
¿existe alguna función asi o me la estoy inventando? porque creo que es buena idea
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on February 26, 2020, 03:05:30 PM
Sí, en ambos casos se llaman igual: variables :D

En tu primer caso, podría ser algo como esto:
int pos;
int fpgOrigen;
int fpgDestino;

pos = 1;
fpgOrigen = load_fpg("mi.fpg");
fpgDestino = new_fpg();

for (pos = 1; pos < 1000; pos++)
    if (map_exists(fpgOrigen, pos))
        fpg_add(fpgDestino, pos, fpgOrigen, pos);
    end
end



En el segundo caso:
string nombreFichero = "tal.fpg"
int fpgTal;
if (file_exists(nombreFichero)) fpgTal = load_fpg(nombreFichero); end



No puedes usar menos instrucciones, primero porque file_exists no sabe qué tipo de fichero es para cargarlo (¿es un FPG, on MAP, un MP3?), y segundo, porque load_fpg sólo entiende a los ficheros FPG.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 26, 2020, 03:40:21 PM
Vamos por partes, Llaq el destripeitor...

En el primer caso,  son imágenes del fpg que tiene que entrar en el nuevo con la misma numeración, por lo que parece no existe tal función directa y la tengo que crear yo, que es parecido al que has puesto pero con el numero fijo  ya que va ahora mismo ''manualmente'' (pega los archivos fpg a tu gusto en la carpeta) y luego ya habrá otro programa que lo haga automáticamente

Quote from: Drumpi on February 26, 2020, 03:05:30 PM
Sí, en ambos casos se llaman igual: variables :D

En tu primer caso, podría ser algo como esto:
int pos;
int fpgOrigen;
int fpgDestino;

pos = 1;
fpgOrigen = load_fpg("mi.fpg");
fpgDestino = new_fpg();

for (pos = 1; pos < 1000; pos++)
    if (map_exists(fpgOrigen, pos))
        fpg_add(fpgDestino, pos, fpgOrigen, pos);
    end
end



En el segundo caso:
string nombreFichero = "tal.fpg"
int fpgTal;
if (file_exists(nombreFichero)) fpgTal = load_fpg(nombreFichero); end



No puedes usar menos instrucciones, primero porque file_exists no sabe qué tipo de fichero es para cargarlo (¿es un FPG, on MAP, un MP3?), y segundo, porque load_fpg sólo entiende a los ficheros FPG.

Quizas en este me estoy complicando demasiado para que me sea mas fácil o que he visto demasiados tutos de python y creo que todo se simplifica, pero que era eso aproximadamente lo que tenía, y si, son archivos fpg para el editor de caras
(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4259)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on February 27, 2020, 10:04:31 PM
Aunque pienso que se puede hacer de la siguiente forma, creo que no se debe de hacer asi ¿no?

Cuando se dice que cargue tal.fpg y existe se carga, si no existe no se carga, ergo ¿para que se pregunta si existe?

Creo que SI se debe preguntar, ¿porque? pos ni idea, si no se pregunta puede dar fallos o algún bug o cualquier otra cosa ¿no?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: FreeYourMind on February 27, 2020, 11:26:25 PM
para que preguntar si ya la carga en si hace la pregunta internamente
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on March 02, 2020, 01:20:01 PM
Es cierto que si el fichero no existe, LOAD_FPG devuelve -1 y te puedes ahorrar la comprobación.
Pero hay otros motivos por los que puede devolver -1: el fichero no es un FPG, el formato no es correcto, hay algún tipo de error, la profundidad de color no es compatible con el modo de video... Si se quiere control total, es una buena costumbre hacer la pregunta, sobre todo cuando hablamos de editores que generan los ficheros, o que pueden cargar ficheros externos (es decir, que no se han creado específicamente para el programa y que se han testeado hasta la saciedad).

Por lo general, es una buena práctica preguntar si algo (fichero, variable, proceso...) existe y/o ha sido inicializado antes de hacer nada con él, aunque no siempre es necesario.
Es buena práctica porque ayuda a localizar errores, pero una vez que ya los tienes todos, o estás seguro al 100% de que no va a dar error, ya no sería necesario.

Ya eso se lo dejamos a las buenas maneras o a la vaguería de cada uno :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 25, 2020, 12:05:21 PM
¿Como funciona el ''exists''?
le tengo que poner la admiración delante para que me lo lea:
(https://i.imgur.com/cfPotKX.png)
algo estoy haciendo mal, porque en el ¡¡Jarl!! lo tengo al contrario:
(https://i.imgur.com/tgSdF7o.png)

No se, en este juego nuevo (punkarra) pregunto antes de cargar y en el anterior (¡¡Jarl!!) pregunto antes de cambiar de estado y allí cargar...
Voy a hacerlo tipo ¡¡Jarl!! a ver si no me dá el mismo problema o si la ''particularidad'' de exists es no cargar a continuación...o igual reinicio el pc, lol


Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 25, 2020, 05:19:27 PM
edito:
aunque ambas están mal (creo) he probado con file_exists y va bien...

pero ¿porque son distintas? yo comprendo que en una me funcionase porque al poner que preguntaba que no, al no haberlo porque no era lo correcto, seguía palante...

en fin...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on March 27, 2020, 02:11:41 PM
Sólo te voy a decir una cosa, así lo investigas: no es lo mismo EXISTS, que FEXISTS, que FILE_EXISTS. Son funciones diferentes que hacen cosas diferentes. Busca en la wiki de Bennu (no seas flojo, que poniendo en google "Bennugd" + nombre de la función, te sale el primero).

Hala, ya tienes entretenimiento para la reclusión forzosa :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on March 28, 2020, 08:50:14 AM
Joño, no me había dao cuen que en uno pongo !exists y en otro Fexists...

es de crimen, pero de los errores se aprenden
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on April 22, 2020, 09:53:57 AM
Estoy haciendo pruebas de lecturas del joystic de la caanoo pero tengo problemas creo que con 'Scan_code' ¿es eso posible?
porque los demás botones funcionan si no estan relacionado con el proceso portador de la orden 'Scan_code'
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on April 24, 2020, 12:37:59 AM
Las direcciones del joystick están mapeados a los cursores, pero también al Joystick.

A groso modo, para obtener si una dirección de la Caanoo está pulsado se puede usar el comando de la Lib_joy

joy_getbutton(0, CONSTANTE);
Donde 0 es el número del joystick (Caanoo, Wiz y GP2X mapean el joy cero a la cruceta/joystick, recordemos que algunas de ellas usan 8 botones para ello) y la constante uno de los siguientes valores:

CONST
    _GP2X_JKEY_UP        =  0 ;
    _GP2X_JKEY_UPLEFT    =  1 ;
    _GP2X_JKEY_LEFT      =  2 ;
    _GP2X_JKEY_DOWNLEFT  =  3 ;
    _GP2X_JKEY_DOWN      =  4 ;
    _GP2X_JKEY_DOWNRIGHT =  5 ;
    _GP2X_JKEY_RIGHT     =  6 ;
    _GP2X_JKEY_UPRIGHT   =  7 ;
    _GP2X_JKEY_START     =  8 ;
    _GP2X_JKEY_SELECT    =  9 ;
    _GP2X_JKEY_L         = 10 ;
    _GP2X_JKEY_R         = 11 ;
    _GP2X_JKEY_A         = 12 ;
    _GP2X_JKEY_B         = 13 ;
    _GP2X_JKEY_X         = 14 ;
    _GP2X_JKEY_Y         = 15 ;
    _GP2X_JKEY_VOLUP     = 16 ;
    _GP2X_JKEY_VOLDOWN   = 17 ;
    _GP2X_JKEY_CLICK     = 18 ;


OJO, las tres consolas consideran las diagonales diferentes a las 4 direcciones principales, por lo que si se activa el botón _GP2X_JKEY_UPLEFT, tanto UP como LEFT estarán desactivados... Bueno, puede darse el caso en GP2X de que _GP2X_JKEY_UPLEFT y _GP2X_JKEY_UP se activen a la vez, y den como resultado hasta 16 posibles direcciones si se programa bien.

Tú que tienes el código de varios juegos que hemos hecho para Wiz y Caanoo, busca en la carpeta "input" los ficheros "jkey.h" y "jkey_gp2x.inc", no debería ser excesivamente difícil entender cuándo se activan las direcciones ;)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on April 24, 2020, 09:03:33 AM
si, ya, todo eso me lo estoy mamando, pero llega un momento que no lo pillo:
(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4268)
Empieza el programa y hay tres señales que no termina de cuajar:process jkeys_controller()
private
i;
begin
signal_action( s_kill, s_ign );
signal( type jkeys_controller, s_kill );
signal_action( s_kill, s_dfl );

matamos a s_ign y s_dfl que no se lo que serán, posiblemente funciones internas, pero tambien matamos a la conocida jkeys_controllers que es la que hemos hecho anteriormente... ni idea porqué tanto crimen, pero sigamos
En el bloque for, comprobamos si el boton pulsado corresponde a la tecla o viceversa, esto es fácil.
if ( os_id == OS_GP2X_WIZ && joy_number() ) /* Wiz */
Esto me supongo que servirá lo mismo para caanoo...
jkeys_state[ _JKEY_UP] |= joy_getbutton( 0, _JKEY_UP);

Ahora bien, esto de que una cosa no es igual que la otra ya me desconcierta...
no se, veo que hay una función y un proceso que interpretan lo pulsado en uno o en otro caso pero no lo comprendo, que es lo que me gustaría, porque una vez que veo la luz ya puedo salir de tunel... (joé que cursi)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on April 29, 2020, 05:05:05 PM
Pues he mirado la documentación y, por lo que veo, tanta señal s_kill es una forma de matar a todos los procesos de control de teclas, salvo al que se está ejecutando, de manera que sólo haya un único proceso de control de teclas (es como un singleton pero al revés).
Según esto:
http://wiki.bennugd.org/index.php?title=Signal_action
http://wiki.bennugd.org/index.php?title=Signal
El primer signal_action hace que este proceso ignore cualquier signal que se le envíe. Luego se envía una señal s_kill a todos los procesos jkey_controller, que no sabía que se podía hacer así. Así sólo quedará este proceso vivo porque lo está ignorando. Y por último, el segundo signal_action restaura el comportamiento habitual de las señales.

Personalmente prefiero llevar un control más individualizado con los signals, pero me lo apunto como mejora para el Echo, así elimino unos cuantos bucles.

El OS_ID ten cuidado porque en el Echo yo tengo una constante llamada OS_CAANOO, por lo que es muy probable que no, que no sirva sólo con eso.

Y ojo con esto:
jkeys_state[ _JKEY_UP] |= joy_getbutton( 0, _JKEY_UP);

Esa operación no es != si no |= que es MUY diferente. Funciona de manera similar a los operadores +=, -= o *=, en este caso, para que lo entiendas, es una contracción de la siguiente línea:
jkeys_state[ _JKEY_UP] = jkeys_state[ _JKEY_UP] | joy_getbutton( 0, _JKEY_UP);
Es una operación OR, asigna a jkeys_state[ _JKEY_UP] un valor true si él o la operación joy_getbutton valen true. Es una forma de comprobar si se ha pulsado una dirección mediante dos métodos diferentes.

Luego, hacia el final, usas el mismo operador OR contraido para asignar true a las 4 direcciones principales si se ha pulsado algún botón diagonal. Así sólo tienes que comprobar arriba, abajo, izquierda y derecha para que el prota responda, porque como ya te he dicho anteriormente, en GP2X, si se pulsa la diagonal arriba-izquierda, ni arriba ni izquierda valen true.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 02, 2020, 09:30:05 AM
Es interesante, igual me viene bien para una cosa que estoy preparando...

Lo que busco es una pregunta y si no se cumple se pregunta otra, y si no se cumple, etc. Pongo un ejemplo:

if (idprimera.local == true)
    hace una cosa;
else
    if (idsegunda.local == true)
        hace otra cosa;
    else
        if (idtercera.local == true)
            hace una tercera cosa;
        else
            hace una cuarta cosa;
        end
    end
end


que ahora mirandolo así no me parece tan malo, aunque me gustaría saber si se corresponde a lo mismo o no tiene nada que ver...

Por cierto, voy a probar a ver si funciona lo que he puesto ;)
Nope, no es eso lo que quería, probaré con ELIF o ELSEIF
if (idprimera.local == true)    hace una cosa;else-se supone que todo lo siguiente debería ser si es false-
    hace otra;(y si no hace eso)    o hace una tercera
(y si no hace eso)    o hace una cuarta    etc...end

Lo que quiero es que si no se cumple una primera se comprueba cual de las demas se cumplen y ejecuta la que se cumple
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Yawin on May 06, 2020, 10:24:57 AM
No se si es viable lo que te voy a proponer, pero creo que podría ser muy interesante:
En un array guardas un puntero a cada id. Llamémoslo id_array (asumiremos también que tienes una variable llamada id_array_cont que guarda la cantidad de elementos que tienes). Y harías algo como esto:

int accion = -1;
from i = 0 to id_array_cont-1 step 1;
    if (id_array == true)
           accion = i;
           break;
    end
end
switch(accion)
     case 0:
           Hace una cosa
     end
     case 1:
           Hace otra cosa
     end
     case 2:
           Hace una tercera cosa
     end
    ...
end
No sé si Bennu tiene punteros a funciones. De ser así, se podría hacer aún más elegante. Pero bueno, creo que esto te podría servir.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 25, 2020, 12:31:47 PM
No te creas que me ha venío bien...

Ahora el problema está en que me he instalado linux mint y no consigo hacerfuncionar bennu, el problema de siempre...
(http://forum.bennugd.org/index.php?action=dlattach;topic=4312.0;attach=4277)
Aunque tengo un pc nuevo con windows 10 y puedo programar con windrios, me gusta mas el rollito de linux, con el que he estado los últimos ocho o nueve años y me gustaría saber porque no detecta esa librería, ¿acaso no la he descargado en el sitio correcto?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: FreeYourMind on May 26, 2020, 07:46:32 PM
has visto si existe en la carpeta bennu ?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 27, 2020, 08:23:37 AM
¿donde hay que poner la carpeta bennu? si fuera windros debería estar...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 30, 2020, 11:02:41 AM
vale, ya he encotrado una solución, la primera era instalar la libreria libpng12-0 que con hacer: sudo apt-get install libpng12-0:i386 no tenía bastante, y trasteando mas dí con que tenía que instalar teamviewer y la compatibilidad de 32bit que al parecer no la tenía instalada porque o bien me daba un error en la instalación o era que que no instalaba la versión correcta, la de 64 bits:
(https://imgur.com/B5pliAH.png)

Conclusión:Rula bien... ¿y pa que me complico tanto en hacer  que bennu funcione en linux cuando en windows va como un tiro?Bueno, en verdad no vá tambien, con esto que he implementado, con hacer doble click en cualquier .dcb te sale un mensaje de error y empieza a quedarse pillao, es gracioso porque si se compila ese .dcb en un .exe si funciona perfe. Sin embargo en este linux mint que me he instalado (antes usaba xubuntu) si funciona el 99% de veces, el otro 1% seguro que el archivo ha sido copiado malamente o algo y por eso no arranca


(https://imgur.com/ZqAqAgB.png)

Title: Re:Tontadas y pamplinas + Otras dudas
Post by: FreeYourMind on May 30, 2020, 07:35:16 PM
a ver si miro lo tuyo en unos dias
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on May 31, 2020, 09:09:49 AM
Por la cuenta que te trae, ja ja ja
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on June 02, 2020, 09:54:24 AM
Tengo problemas de lecturas de gráficos, algunos se ven, otros no...
me da igual porque es en linux, ya probaré en windows y os cuento

(https://imgur.com/dLdCWWD.png)


Por supuesto estan añadidos via bennu, porque si lo arrastro pos me falla...lo mas seguro que las imagenes esten corruptas (que todavía no lo he probao en windrios)
(https://imgur.com/IYJENe4.png)


Sip, seguro que son imagenes corruptas, porque si le meto el fexists no me lo reconoce ni me las guarda:(https://imgur.com/0CFnw9h.png)
Que raro que la imagen sea invisible para bennu...Seguimos investigando
----------0---------------
definitivamente es eso, si intento modificarla en gimp me da problemas:(https://imgur.com/PJtprn4.png)
hasta que lo consigo y ya puedo guardarlas, bien arrastrando o via bennu
(https://imgur.com/tSkIM2R.png)
Es una tontada de las gordas, que me gustaría tener aquí para recordarla, no va a ser todo preguntar XD
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on June 08, 2020, 09:49:40 AM
Ahora lo que se me pilla es el audio (creo)
(https://imgur.com/nkoVkmb.png)

Si, tras cambiar la extensión de .ogg a .wav pa por si acaso, ya no sale el error pero el audio no se reproduce, puede ser que me falte algo de instalación, ya de por sí da problemas con el .ogg

Probaré en windows, total... T_T
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on June 08, 2020, 10:04:19 AM
po si, es problemas de linux con .ogg
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on June 09, 2020, 11:02:39 AM
Bueno, de los gráficos ni idea.
Del sonido, comprueba que tienes instaladas los codecs de audio. OGG usa la libvorbis o algo así. Linux, por defecto, sólo trae algunas librerías preinstaladas, generalmente la libres, pero no siempre.

Respecto a tu duda del ELIF o ELSIF... siempre se me olvida si Bennu lo tiene o no ^^U
Hay una forma de "emularlo" que me ha funcionado con KEY, pero no sé sis e podrá hacer con una expresión binaria:

switch (true)
case Key(_up): hazalgo(); break;
case Key(_down): otracosa(); break;
default: yoquese(); break;
end //SWITCH


(Código cortesía de Panreyes o la Momia, no recuerdo :D ) Lo mismo puedes cambiar el "Key(_up)" por "(mivariable > 0) AND (3 + otravar == 5)"


Y no, Bennu no tiene punteros a funciones (ojalá), así que hay que seguir con el sistema de llamar a una función, o a un proceso que duerma al padre hasta que termine.
Bueno, si la función es muy simple, ahí están los DEFINE
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on June 09, 2020, 08:43:54 PM
Gracias Drumpi por la respuesta...

·Lo de los gráficos, ni idea, simplemente copio y pego de una carpeta a otra, no se si es el gestor de archivos de este linux mint o que moví la partición del disco duro con estos archivos y dan problemas (suerte que no pasó con el p0rn porque lo pasé a cd y luego a vhs, subí a un servidor de la NASA y descargado vía telefónica en nokia 3300, je je) pero si los añado al fpg desde la carpeta correspondiente, no hay problema... ni idea, me tendré que conformar T_T

Lo del .ogg es un misterio porque cualquier reproductor me lo reproduce, valga la rebundancia, a ver que opina el maestro astilla

Y una duda mas que me surge con esto:
(https://imgur.com/tFPQptz.png)

Teoricamente si yo uso la tecla 31 y 32 que corresponde a la S y D en teclado Qwerty, si luego juego en un teclado Dvorak, ¿las teclas serian O y E correspondiente a la posición de la S y D del Qwerty o serán las teclas Ñ y H donde se situan O y D en Dvorak?Yo ahí lo dejo, como referencia una imagen de ambos teclados:
(https://imgur.com/RVAx3gn.png)
Lo que a mi me pasa es que la 31 me corresponde a la tecla S y la 32 a la D, estén donde estén situadas, y tengo teclado dvorak


Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on June 25, 2020, 09:56:51 AM
¿Son problemas de librerías png o del fpg?
(https://i.imgur.com/61yYGcd.png)

en windows no me pasa ni en el Xubuntu antiguo, pasa en linux mint, y estoy optimizando el código para ya de paso busco el problema, si lo hay, claro
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on June 30, 2020, 03:12:01 PM
Lo del teclado depende de cómo esté diseñado SDL. Los códigos de teclas varían de un teclado a otro, o eso dicen, pero es posible que las teclas "habituales" tengan siempre el mismo código numérico. A saber. En esos casos, un simple programita que te diga la key que se está pulsando y a tirar millas.

Por qué te hace eso la imagen en Linux y no en Windows no tengo ni idea. ¿Puede que uses una versión diferente de Bennu en un caso y en otro? Yo es que nunca he usado gráficos en 32 bits porque nunca los he necesitado, y cuando he podido, he ido tan pillado de tiempo que no quería perderlo en hacer pruebas y demás :P
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on July 04, 2020, 10:22:50 AM
Gracias Drumpi, mas o menos voy sacando la solución a base de toquetear el programa, todavía se aprende poquito a poco...

Otra cosa que parece fácil es guardar el fpg con los puntos de control pertinentes en el gráfico en cuestión...
probaré con SET_POINT ( LIBRERIA, GRAFICO, NÚMERO, X, Y )

antes de guardar el fpg a ver (y seguir tanteando el terreno)
Y........ ahora es cuando viene el trabajar con textos, me dá una pereza absoluta...
pero, iré posteando aqui en plan recordatorio, gracias por aguantarme T_TU
------------------------------------------------*---------------------------------------

¿es un error? ¿es normal? pasa esto:

(https://i.imgur.com/rpSiNTB.png)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on July 17, 2020, 09:14:24 AM
Perdona que no haya respondido antes, pero cuando llego a casa lo último que me apetece es encender el ordenador.
De todas formas, me mandas un mensaje por whasapp o por telegram y vengo a responderte en cuanto tenga un rato.

No, lo que te está diciendo son warnings. No son errores, sólo son avisos de que se te ha olvidado hacer algo, pero que Bennu es tan inteligente que lo puede resolver por sí mismo. No obstante, eso no te asegura que funcione exactamente como tú quieres, así que es recomendable que le eches un vistazo y lo soluciones.
Por lo general, los programadores suelen pasar de los warnings, pero yo creo que si quieres llegar a ser un buen programador, debes corregir el código para evitar que salgan... ¡Y no me refiero a poner "ignores" para que dejen de aparecer :D

En tu caso, en esas líneas tienes una variable tipo CHAR o una cadena de ellas, que estás usando como si fuera una STRING. En general no debería darte problemas, pero hacer una conversión a mano puede ser recomendable.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on September 17, 2020, 09:54:30 AM
Otra, que seguro que me echabais de menos...

En esta vez, la idea es pillar el primer fpg que haya en la carpeta y cargarlo, si hay mas pasamos de ellos porque la idea como ya he dicho es pillar solo uno, cada usuario se encargará de poner el que quiera, pero la intención ya he dicho es usar un fpg sin importar el nombre... (ya está que me enrollo)

Como es algo que comenté en este hilo, he ido a buscarlo y he podido sacar este código, que me mira todos los fpg y me los escribe, hasta ahí todo bien:

    archivo = glob("*.fpg");        // GLOB = busca archivo tal  = en este caso fpg
    while (archivo != "")                     //mientras archivo no este en blanco
        write(0,10,cont*10,0, archivo); //escribimos el nombre del archivo...
        cont=cont+1; //avanzamos una linea
        archivo=glob("*.fpg"); //buscamos otro archivo
    end

    load_fpg(+archivo+".fpg");


El problema viene cuando toca cargar ese fpg y no  hay manera...
¿es normal?
¿hay que hacer algo mas? ---> quizas quitar ese +archivo+ antes del ".fpg"...?[/s} Nope, eso no sirve



Title: Re:Tontadas y pamplinas + Otras dudas
Post by: warrior_rockk on September 18, 2020, 06:04:29 AM

En el código que has puesto, a la hora de cargar archivo, este ya está en blanco porque has recorrido todos los archivos posibles. Por eso sale del while , de hecho.
Si quieres cargar el primero, deberías guardar en otra variable la primera busqueda de glob y utilizar otra variable para recorrer el resto.

Por otro lado,cada vez que se llama a glob, se rellena la estructura global Fileinfo con la información del resultado de la última llamada a glob. Con lo que, si no quieres complicarte con el formato String que devuelve glob, puedes consultar fileinfo.path y fileinfo.name que contendrán tanto la ruta como el nombre del archivo que devolvió glob. Aquí tienes mas información:
http://wiki.bennugd.org/index.php?title=Fileinfo (http://wiki.bennugd.org/index.php?title=Fileinfo)



Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on September 18, 2020, 09:59:32 AM
cierto, lo que guarda es el "" porque sale del bucle...

La respuesta correcta debería ser esta, que curiosamente la había probado antes y no servía:

    archivo = glob("*.fpg");
    load_fpg(+archivo+".fpg");


La clave es poner load_fpg(archivo); porque escribía todo el nombre del archivo y le añadía .fpg

Gracias  warrior_rockk karma++

Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on September 21, 2020, 02:59:30 PM
Futu está en lo cierto: archivo vale "" porque es el valor que se queda al salir del bucle.
PERO MUCHO OJO: la solución no es poner load_fpg dentro del bucle, porque estarías cargando todos y cada uno de los FPGs que se encuentren en esa carpeta (y encima no los estás descargando).
Lo ideal es que tengas otra string donde guardes "archivo" justo antes de la siguiente llamada a GLOB, y que la uses para cargar en lugar de "archivo".

Otra cosa: cuando dices "primer FPG" ¿Te refieres al primero que encuentre? porque entonces el bucle no es necesario. ¿Al primero alfabéticamente? porque te recuerdo que GLOB no te los da ordenados... Y además, en tu código estás cogiendo el último, que dado cómo funciona GLOB, será el último que se creó.
En el editor de mapas de tiles hay un fichero .inc que tiene funciones para cargar y ordenar ficheros. Como siempre, está sin documentar, pero si le echas un vistazo y experimentas un poco (sin leer el código, basta con que mires los nombres de las funciones) lo mismo te sirve... O no, no sé, tengo que volver a mirar el código ^^U
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on September 21, 2020, 09:19:23 PM
si, es para hacer un .exe y meterlo en una carpeta que tenga un solo fpg, si tiene mas que le zurzan, y me da igual como lo pille GLOB...

lo de descargar los fpg no lo sabía, y lo de poner los strings delante, menos, está bien saber estas cosas, hay veces que cambio una linea de sitio y funciona y no se por que y de esta manera lo comprendo, gracias
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on September 25, 2020, 10:26:15 AM
Sí sólo va a haber un FPG ¿por qué usar un bucle? :D :D :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 11, 2020, 10:26:16 AM
Tu sabe, solo por conocimiento...

Otra:
-Trato de hacer un movimiento por cuadricula, ya que le he quitado el bloque for dentro del loop y a base de variables sumatorias he llegado a comprender el funcionamiento, pero el problema está en que me hace diagonales y no quiero...

Se que en su dia Splinter puso algo como esto:
direcion=(key(_up)?1h:0)|(key(_down)?2h:0)|(key(_left)?4h:0)|(key(_right)?8h:0); y me gustaría entenderlo un poco, a ver si sirve para que no me haga diagonales
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on October 22, 2020, 12:40:04 PM
Eso tal cual no te va a servir. Esa línea de código lo que hace es asignar un 1 o un 0 a diferentes bits del "direcion", según si se ha pulsado un botón.

Por ejemplo:
key(_up)?1h:0
Traducido a código más fácilmente entendible es:
if (key(_up)
    return 1h; (valor 1 en hexadecimal)
else
    return 0;
end


Entonces, si se pulsa arriba el bit menos significativo se pone a uno, si se pulsa abajo el segundo bit se pone a uno, si se pulsa izquierda, el tercero se pone a uno, y si se pulsa derecha lo hace el cuarto. Ojo, que esto no es excluyente: se pueden pulsar dos tres o cuatro direcciones y activar sus correspondientes bits.
Así, en una sola variable puedes saber qué botones se han pulsado o no:
1 - 00000001: sólo arriba.
2 - 00000010: sólo abajo.
3 - 00000011: arriba y abajo
4 - 00000100: sólo izquierda.
5 - 00000101: arriba e izquierda.
... y así el resto. Luego, comprueba el valor para hacer una cosa u otra.


Puedes usar un sistema de detección por prioridad:
if (key(_up))
    moverArriba();
elsif (key(_down))
    moverAbajo();
elsif (key(_left))
    moverIzquierda();
elsif (key(_right))
    moverDerecha();
end


O bien

switch(true)
case key(_up): moverArriba() end
case key(_down): moverAbajo() end
case key(_left): moverIzquierda() end
case key(_right): moverDerecha() end
end //switch


Ojo, "moverArriba" puedes cambiarlo por los comandos "velhoriz=0; velvert=-1;" o como hayas implementado tu movimiento, no lo interpretes literalmente.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 22, 2020, 02:50:43 PM
vale vale, lo he pillao, al final lo he aplicado no exactamente como quería pero me sirve...

Ahora bien, ¿como priorizo una pulsación con respecto a otra si tengo que escribir un código de ''lineal''?
Me explico; si hay un par de botones y lo que se quiere es comprobar cual se ha pulsado antes, siempre se comprobará el primero y luego el segundo...
Creo que para eso está el elsif ¿no?
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on October 22, 2020, 04:01:59 PM
Sí, cualquiera de las dos estructuras que te he escrito hace exactamente lo mismo: en cuanto una condición se cumple, deja de mirar el resto. Si pulsas los 4 botones, irá hacia arriba.

Hay otras formas, pero esta es la más sencilla de explicar y entender. Ya depende de lo que te quieras complicar. Podrías hacer que al pulsar la diagonal, se dirija en la última dirección pulsada, o que no se mueva... ya eso tú decides.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 23, 2020, 07:27:36 AM
seguiré con las pruebas, pero si pulsas las 4 direcciones vá parriba y es ahí donde veo un problema, nimio y no es para tener en cuenta (ni lo tendrá) pero es a lo que vengo referirme con programación lineal, si es que no hay mas remedio que ser lineal...
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on October 23, 2020, 09:18:21 AM
Creo que te refieres a programación con prioridad, porque todos los procesos se programan linealmente :D
Pues tú dirás qué es lo que quieres hacer, porque has dicho que no quieres que se pueda mover en diagonal, y eso es lo que hace el código. Si necesitas otro comportamiento tendrás que ser más específico, porque como digo hay mil formas de hacerlo, pero no te puedo leer la mente (aun), y te doy la más sencilla.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 23, 2020, 02:27:18 PM
no, para esto está bien, lo que quiero no se puede XD ya haré que se pueda
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on October 26, 2020, 05:37:21 PM
En programación, como poder se puede hacer todo.
Lo difícil está en saber cómo hacerlo, y hacerlo de forma que después puedas entenderlo y cambiarlo :D
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 26, 2020, 07:08:48 PM
cucha, no te vayas...

Texto en vertical ¿se puede?
tengo como aternativa usar gráficos, pero me dá una pereza terrible... (que al final usaré)
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on October 27, 2020, 02:00:06 PM
Si no me lio con otros lenguajes, no que yo recuerde, pero consúltalo en la ayuda online, porque quiero recordar que hay algo pero no sé si es de Bennu, C#, Xamarin o del plato de lentejas que me cené anoche :D
Puedes dibujar a un mapa con WRITE_IN_MAP, pero no creo que te deje en vertical, pero lo puedes rotar, si te sirve. O bien crear un mapa por letra, y pegarlo sobre otro... a si no hacerlo con una imagen, siempre que luego no necesites cambiar el idioma o su contenido.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on October 27, 2020, 06:29:25 PM
haciendolo con imagen es como lo tenía pensado...

bueno, ya despues de este y viendo las incompatibilidades con linux creo que me voy a cortar la coleta con bennu
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on October 28, 2020, 11:10:22 AM
Me extraña que un programa, desarrollado en Linux, tenga incompatibilidades con Linux :D
Es cierto que en algunos aspectos no termina de ser noob-friendly, pero si consigues unos binarios como los que me pasó Pixel hace tiempo, el desarrollo es igual que en Windows... al menos, hasta donde yo he probado, que yo desarrollo en Windows porque es donde tengo las herramientas.
No te rindas porque la librería de textos esté muy limitada.
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on November 16, 2020, 08:27:40 AM
pos sip...
Write in map es la solución, se agranda una mijita al girarlo pero rular, rula
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Futu-block on December 02, 2020, 06:39:06 PM
Otra:
quiero lo de entre medio de los parentesis, osea los parametros de los procesos leerlos de un .txt o un .loquesea ¿se puede?
(https://prnt.sc/vuir1g)
o en otro caso, cargar unas instruicciones segun un .txt o cualquiera que sea el nombre...

Otra mas:
¿como hago pa que automaticamente me poner un frame entre carga de proceso para crear una animación?
pero la respuesta que sea automatica y no escribiendo frame entre los procesos


... que ahora que lo pienso, sería:

carga 1ª linea del .txt
frame;
repite hasta que no haya lineas en .txt
Title: Re:Tontadas y pamplinas + Otras dudas
Post by: Drumpi on December 16, 2020, 09:58:58 AM
Perdona, pero llevo unas semanas... ¡Ya podría contestar alguien más! :D :D :D

Sí, puedes leer valores de un .txt y usarlo en los parámetros de una función. Precisamente es para lo que se suele leer datos de un fichero :D
Cómo hacerlo depende del contenido del fichero y de los parámetros que necesite tu función/proceso.
El caso de "cargar instrucciones", no entiendo a qué te refieres exactamente. ¿Te refieres a leer algo del txt, y realizar una operación u otra en función de lo que se lea? Si es eso, estamos interpretando instrucciones, y poder se puede, pero ya tienes que crear un switch principal para buscar qué hacer con esa instrucción (si es CLS, borrar la pantalla, si es CD, leer el siguiente parámetro que será la ruta a la que se quiere cambiar...).

Lo último ya no lo entiendo ^^U ¿Poner un frame entre carga de proceso? ¿qué quieres decir con "cargar un proceso"?
Y tu código lo puedes simplificar con un bucle tipo REPEAT-UNTIL