Bennu Game Development

Foros en Español => Mesa de Ayuda => Mensaje iniciado por: Futu-block en Agosto 19, 2016, 01:28:24 pm

Título: Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Agosto 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;

...
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: l1nk3rn3l en Agosto 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

Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Agosto 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;
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Septiembre 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??
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: panreyes en Septiembre 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
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Septiembre 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??
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: radiosity en Septiembre 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
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: SplinterGU en Septiembre 05, 2016, 12:03:50 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
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: radiosity en Septiembre 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)
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Septiembre 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
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Drumpi en Septiembre 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.
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Septiembre 07, 2016, 07:51:09 am
Si, es necesario que esté dentro del scroll...
Antes no era pero ya si...
Total, que arreglao
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Septiembre 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
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Drumpi en Septiembre 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
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Octubre 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??
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Octubre 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?
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Drumpi en Octubre 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í

Código: [Seleccionar]
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.
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Octubre 07, 2016, 12:53:41 pm
Es muy interesante, y era lo que precisamente andaba buscando, gracias
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Octubre 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:

Código: [Seleccionar]
...
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

Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Drumpi en Octubre 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.
Título: Re:tontadas y pamplinas en las que sigo cayendo
Publicado por: Futu-block en Noviembre 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?

Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Noviembre 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Noviembre 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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Noviembre 21, 2016, 06:01:12 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Noviembre 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 ;)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Noviembre 22, 2016, 12:33:07 am
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Noviembre 22, 2016, 10:18:27 am
bueno, o no lo estoy haciendo bien o me falla esto:

Código: [Seleccionar]
            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

Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Noviembre 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).
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Noviembre 22, 2016, 09:54:23 pm
me puedo dar por respondido...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Diciembre 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: DCelso en Diciembre 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Diciembre 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 21, 2016, 08:55:33 am
Voto por expulsar a futu por no saber hacer nada en Bennu y preguntar tontadas.  :o
¿Quien se suma?
Que perrete...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Diciembre 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!
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: DCelso en Diciembre 21, 2016, 05:47:09 pm
Heroes III
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Diciembre 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: DCelso en Enero 01, 2017, 07:09:42 pm
elseif

http://wiki.bennugd.org/index.php?title=If
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: DCelso en Enero 01, 2017, 07:19:15 pm
prueba este proceso
Código: [Seleccionar]
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.

Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 01, 2017, 07:45:56 pm
jobar, yo usaba else if y siempre me fallaba....

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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: DCelso en Enero 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 01, 2017, 09:58:34 pm
1: lo estuve dudando, es de primero de parbulitos :D
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Enero 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:

Código: [Seleccionar]
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:

Código: [Seleccionar]
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...).
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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:

Código: [Seleccionar]
    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;

Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 08, 2017, 09:15:28 pm
Para 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''
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Febrero 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:
Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 10, 2017, 06:47:55 pm
me doy por respondido, muchas gracias
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Octubre 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:
Código: [Seleccionar]

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''?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: warrior_rockk en Octubre 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:


Código: [Seleccionar]
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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Octubre 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...
Código: [Seleccionar]
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

Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Octubre 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:
Código: [Seleccionar]
      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?     
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Octubre 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Octubre 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Noviembre 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Noviembre 04, 2017, 06:24:33 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:
Código: [Seleccionar]
      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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Noviembre 04, 2017, 06:31:02 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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Noviembre 04, 2017, 06:37:09 pm
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:

Código: [Seleccionar]
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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Noviembre 04, 2017, 06:42:26 pm
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Noviembre 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 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?:

Código: [Seleccionar]
   var_grafic = load_png("fondos/var_cuenta_pantallas.png");
que a mi me dá que hay que cambiarlo a string o algo asi
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: gecko en Diciembre 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.

Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 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

Código: [Seleccionar]
// 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: gecko en Diciembre 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");
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 08, 2018, 06:50:28 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Enero 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).
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 10, 2018, 01:51:53 am
¿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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Goku jr en Enero 10, 2018, 07:07: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!

Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 11, 2018, 04:54:33 pm
gracias, le echaré un tiento
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Enero 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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:
Código: [Seleccionar]
        if (mouse.wheelup) weo++; end
        if (mouse.wheeldown) weo--; End

Jo Jo, me encanta esta función
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Código: [Seleccionar]
if (angle > 360000) angle = 0; end
if (angle < 0) angle = 360000; end

me gustaria usar algo como

Código: [Seleccionar]
angle%360;
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 15, 2018, 08:07:46 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
Código: [Seleccionar]
if (angle > 360000) angle = 0; end
if (angle < 0) angle = 360000; end

me gustaria usar algo como

Código: [Seleccionar]
angle%360;

eso mismo...

Código: [Seleccionar]
angle %= 360000;
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 15, 2018, 09:12:44 pm
Jarl, que guay, gracias
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Enero 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:
Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 16, 2018, 11:43:51 am
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:

Código: [Seleccionar]
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):

Citar
$ 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
$
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 16, 2018, 11:46:43 am
incluso con esta forma

Código: [Seleccionar]
        if ( angle >= 360000 ) angle -= 360000;
        elsif ( angle < 0 ) angle += 360000; end
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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º

Código: [Seleccionar]
if (angle > 360000) angle = 0; end
if (angle < 0) angle = 360000; end

ambos me aconsejais que use:
Código: [Seleccionar]
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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 16, 2018, 05:16:56 pm
no peleamos, solo digo que usar %= es mas rapido que la secuencia de ifs y sumas y restas
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 16, 2018, 05:18:45 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º

Código: [Seleccionar]
if (angle > 360000) angle = 0; end
if (angle < 0) angle = 360000; end

ambos me aconsejais que use:
Código: [Seleccionar]
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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 16, 2018, 09:17:07 pm
no funcionaba cuando hice la foto, por mas que le daba se quedaba pillado, ahora vá bien
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Enero 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").
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 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

Código: [Seleccionar]
    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:

Citar
$
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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Enero 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:
Código: [Seleccionar]
angle = angle % 360000y
Código: [Seleccionar]
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:
Código: [Seleccionar]
angle = angle % 360000
if (angle < -0) angle += 360000 end
y
Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 20, 2018, 10:50:37 am



segun un write_var que le hago,

Código: [Seleccionar]
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:

Código: [Seleccionar]
angle = angle % 360000
if (angle < -0) angle += 360000 end

pero ya digo, en el write_var
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Erkosone en Enero 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Enero 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: FreeYourMind en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 25, 2018, 01:33:13 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 25, 2018, 05:37:23 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 26, 2018, 02:52:20 pm
Edito para evitar ''confunancias''  ;D

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



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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 26, 2018, 02:57:05 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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 26, 2018, 05:31:45 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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 26, 2018, 07:58:43 pm
no entiendo eso del punto de control independiente
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 26, 2018, 11:05:35 pm
si tiene dos o mas puntos de control, ¿a cual obedece y porque?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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:
 
Código: [Seleccionar]
set_centery lo que me decis son puntos de control
Código: [Seleccionar]
point_setEn 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Código: [Seleccionar]
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''
Código: [Seleccionar]
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
Código: [Seleccionar]
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:
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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Enero 29, 2018, 06:06:00 am
ni idea por que te da esos errores, sin codigo no puedo saberlo.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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:


Código: [Seleccionar]
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 ;)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Febrero 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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Febrero 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).
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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
Código: [Seleccionar]
Segmentation faultLa he liao parda, jijiji

log1.txt
Código: [Seleccionar]
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:
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: gecko en Febrero 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 08, 2018, 08:18:21 am
nope, me sigue saliendo el err2.txt
Código: [Seleccionar]
Segmentation fault
creo que eso significa algo, ¿no?

total, que hace para cargar y en el ultimo momento se arrepiente y sale al menu
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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:
Código: [Seleccionar]
var_tal = funcion_tal() con el numero especificado...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 27, 2018, 05:49:34 pm
Vale, me auto respondo pero no del todo; he usado la siguiente función:

Código: [Seleccionar]
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''
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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:
Código: [Seleccionar]
for (a = 0; a<9; a++) me gustaría que hubiera algo que pudiera hacer yo como
Código: [Seleccionar]
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 ;))
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Marzo 08, 2018, 08:01:03 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:
Código: [Seleccionar]
for (a = 0; a<9; a++) me gustaría que hubiera algo que pudiera hacer yo como
Código: [Seleccionar]
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...

Código: [Seleccionar]
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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Marzo 09, 2018, 11:30:15 am
var_a = 9 - a; ?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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...
Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Marzo 10, 2018, 11:26:08 pm
de nada... ;)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Marzo 10, 2018, 11:26:55 pm
¿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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 17, 2018, 11:25:42 am
Otra: tomar el foco del ratón...

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

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:
Código: [Seleccionar]
loop
    if (variable == tal) variable = cual; graph = otro; end
    frame;
end

Segundo caso
Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: FreeYourMind en Marzo 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 ?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 19, 2018, 12:02:57 pm
es que he digi-evolucionado, ji ji ji
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: FreeYourMind en Marzo 19, 2018, 12:41:41 pm
lo comprimes con winrar y lo tendras guardado en el formato ZIP o RAR, tu eliges  ;D
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: gecko en Marzo 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: FreeYourMind en Marzo 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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...

Código: [Seleccionar]
    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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 27, 2018, 11:21:24 am
Me autorrespondo corrigiendo y asi me sirve de recuerdo:

Código: [Seleccionar]
    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:
Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Mayo 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Mayo 11, 2018, 07:52:56 am
tu sabe, hay algunas cosas que encuentro las respuestas y prefiero autoresponderme
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Mayo 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:

Código: [Seleccionar]
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

Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Mayo 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:
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: FreeYourMind en Mayo 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]
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: FreeYourMind en Mayo 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Mayo 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Septiembre 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Septiembre 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Octubre 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Octubre 27, 2018, 02:37:36 pm
El tema de los joysticks ¿Cómo va?
Alguna documentación que empollarr?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Noviembre 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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Noviembre 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Noviembre 16, 2018, 12:40:31 am
Eso se lo preguntas a Panreyes, él hizo su PixPang a tres pantallas.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: panreyes en Noviembre 16, 2018, 12:44:26 am
Eso se lo preguntas a Panreyes, él hizo su PixPang a tres pantallas.
Virtualmente era una sola xD
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Noviembre 16, 2018, 07:43:17 am
porque tenía la resolución de 3 pantallas de ancho...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Noviembre 26, 2018, 12:24:18 am
¿Y no es lo que quieres?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Noviembre 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Drumpi en Noviembre 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.
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 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
Código: [Seleccionar]
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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: JaViS en Diciembre 05, 2018, 07:05:21 pm
no es mas facil usar signal()?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Diciembre 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: JaViS en Diciembre 06, 2018, 01:15:44 pm
signal se puede usar con parametros de tipo de procesos: signal(type tutipodeproceso)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Enero 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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 03, 2019, 06:40:26 pm
Para crear un .exe solo con los fpg que me interesa debo citar los que me interese incluir?
Código: [Seleccionar]
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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: panreyes en Febrero 06, 2019, 09:45:46 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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?
Código: [Seleccionar]
    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

Código: [Seleccionar]
    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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: SplinterGU en Febrero 20, 2019, 02:30:09 pm
sino queres que cargue mas tenes que poner break... igual no entiendo lo que decis... que primero carga?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: panreyes en Febrero 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...
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Febrero 25, 2019, 09:11:41 pm
vaya, no hay mas remedio, gracias
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: panreyes en Marzo 05, 2019, 10:04:36 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 05, 2019, 11:11:50 am
guay, gracias, karma++

Código: [Seleccionar]
// recordatorio:
if (exit_status == true) exit(); end
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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á
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: panreyes en Marzo 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 );

Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 14, 2019, 03:29:20 pm
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:
Código: [Seleccionar]

       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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: panreyes en Marzo 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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 14, 2019, 04:37:09 pm
Ni idea de por qué.

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

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

- 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])
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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:
Código: [Seleccionar]
// 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?
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 29, 2019, 07:11:35 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
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Marzo 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...


Código: [Seleccionar]
//   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)
Título: Re:Tontadas y pamplinas + Otras dudas
Publicado por: Futu-block en Abril 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