Autor Tema: Tontadas y pamplinas + Otras dudas  (Leído 36843 veces)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2908
  • Karma: 36
  • Superviviente marciano
    • futublock
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #255 en: Junio 25, 2020, 09:56:51 am »
¿Son problemas de librerías png o del fpg?


en windows no me pasa ni en el Xubuntu antiguo, pasa en linux mint, y estoy optimizando el código para ya de paso busco el problema, si lo hay, claro

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6459
  • Karma: 168
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #256 en: Junio 30, 2020, 03:12:01 pm »
Lo del teclado depende de cómo esté diseñado SDL. Los códigos de teclas varían de un teclado a otro, o eso dicen, pero es posible que las teclas "habituales" tengan siempre el mismo código numérico. A saber. En esos casos, un simple programita que te diga la key que se está pulsando y a tirar millas.

Por qué te hace eso la imagen en Linux y no en Windows no tengo ni idea. ¿Puede que uses una versión diferente de Bennu en un caso y en otro? Yo es que nunca he usado gráficos en 32 bits porque nunca los he necesitado, y cuando he podido, he ido tan pillado de tiempo que no quería perderlo en hacer pruebas y demás :P
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2908
  • Karma: 36
  • Superviviente marciano
    • futublock
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #257 en: Julio 04, 2020, 10:22:50 am »
Gracias Drumpi, mas o menos voy sacando la solución a base de toquetear el programa, todavía se aprende poquito a poco...

Otra cosa que parece fácil es guardar el fpg con los puntos de control pertinentes en el gráfico en cuestión...
probaré con
Código: [Seleccionar]
SET_POINT ( LIBRERIA, GRAFICO, NÚMERO, X, Y )
antes de guardar el fpg a ver (y seguir tanteando el terreno)
Y........ ahora es cuando viene el trabajar con textos, me dá una pereza absoluta...
pero, iré posteando aqui en plan recordatorio, gracias por aguantarme T_TU
------------------------------------------------*---------------------------------------

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


« última modificación: Julio 04, 2020, 11:42:43 am por Futu-block »

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6459
  • Karma: 168
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #258 en: Julio 17, 2020, 09:14:24 am »
Perdona que no haya respondido antes, pero cuando llego a casa lo último que me apetece es encender el ordenador.
De todas formas, me mandas un mensaje por whasapp o por telegram y vengo a responderte en cuanto tenga un rato.

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

En tu caso, en esas líneas tienes una variable tipo CHAR o una cadena de ellas, que estás usando como si fuera una STRING. En general no debería darte problemas, pero hacer una conversión a mano puede ser recomendable.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2908
  • Karma: 36
  • Superviviente marciano
    • futublock
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #259 en: Septiembre 17, 2020, 09:54:30 am »
Otra, que seguro que me echabais de menos...

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

Como es algo que comenté en este hilo, he ido a buscarlo y he podido sacar este código, que me mira todos los fpg y me los escribe, hasta ahí todo bien:
Código: [Seleccionar]
    archivo = glob("*.fpg");        // GLOB = busca archivo tal  = en este caso fpg
    while (archivo != "")                     //mientras archivo no este en blanco
        write(0,10,cont*10,0, archivo); //escribimos el nombre del archivo...
        cont=cont+1; //avanzamos una linea
        archivo=glob("*.fpg"); //buscamos otro archivo
    end

    load_fpg(+archivo+".fpg");

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




warrior_rockk

  • Sr. Member
  • ****
  • Mensajes: 257
  • Karma: 12
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #260 en: Septiembre 18, 2020, 06:04:29 am »

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

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




Futu-block

  • Hero Member
  • *****
  • Mensajes: 2908
  • Karma: 36
  • Superviviente marciano
    • futublock
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #261 en: Septiembre 18, 2020, 09:59:32 am »
cierto, lo que guarda es el "" porque sale del bucle...

La respuesta correcta debería ser esta, que curiosamente la había probado antes y no servía:
Código: [Seleccionar]
    archivo = glob("*.fpg");
    load_fpg(+archivo+".fpg");

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

Gracias  warrior_rockk karma++


Drumpi

  • Hero Member
  • *****
  • Mensajes: 6459
  • Karma: 168
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #262 en: Septiembre 21, 2020, 02:59:30 pm »
Futu está en lo cierto: archivo vale "" porque es el valor que se queda al salir del bucle.
PERO MUCHO OJO: la solución no es poner load_fpg dentro del bucle, porque estarías cargando todos y cada uno de los FPGs que se encuentren en esa carpeta (y encima no los estás descargando).
Lo ideal es que tengas otra string donde guardes "archivo" justo antes de la siguiente llamada a GLOB, y que la uses para cargar en lugar de "archivo".

Otra cosa: cuando dices "primer FPG" ¿Te refieres al primero que encuentre? porque entonces el bucle no es necesario. ¿Al primero alfabéticamente? porque te recuerdo que GLOB no te los da ordenados... Y además, en tu código estás cogiendo el último, que dado cómo funciona GLOB, será el último que se creó.
En el editor de mapas de tiles hay un fichero .inc que tiene funciones para cargar y ordenar ficheros. Como siempre, está sin documentar, pero si le echas un vistazo y experimentas un poco (sin leer el código, basta con que mires los nombres de las funciones) lo mismo te sirve... O no, no sé, tengo que volver a mirar el código ^^U
« última modificación: Septiembre 21, 2020, 03:03:48 pm por Drumpi »
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2908
  • Karma: 36
  • Superviviente marciano
    • futublock
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #263 en: Septiembre 21, 2020, 09:19:23 pm »
si, es para hacer un .exe y meterlo en una carpeta que tenga un solo fpg, si tiene mas que le zurzan, y me da igual como lo pille GLOB...

lo de descargar los fpg no lo sabía, y lo de poner los strings delante, menos, está bien saber estas cosas, hay veces que cambio una linea de sitio y funciona y no se por que y de esta manera lo comprendo, gracias

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6459
  • Karma: 168
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #264 en: Septiembre 25, 2020, 10:26:15 am »
Sí sólo va a haber un FPG ¿por qué usar un bucle? :D :D :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2908
  • Karma: 36
  • Superviviente marciano
    • futublock
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #265 en: Octubre 11, 2020, 10:26:16 am »
Tu sabe, solo por conocimiento...

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

Se que en su dia Splinter puso algo como esto:
Código: [Seleccionar]
direcion=(key(_up)?1h:0)|(key(_down)?2h:0)|(key(_left)?4h:0)|(key(_right)?8h:0); y me gustaría entenderlo un poco, a ver si sirve para que no me haga diagonales

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6459
  • Karma: 168
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #266 en: Octubre 22, 2020, 12:40:04 pm »
Eso tal cual no te va a servir. Esa línea de código lo que hace es asignar un 1 o un 0 a diferentes bits del "direcion", según si se ha pulsado un botón.

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

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


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

O bien

Código: [Seleccionar]
switch(true)
case key(_up): moverArriba() end
case key(_down): moverAbajo() end
case key(_left): moverIzquierda() end
case key(_right): moverDerecha() end
end //switch

Ojo, "moverArriba" puedes cambiarlo por los comandos "velhoriz=0; velvert=-1;" o como hayas implementado tu movimiento, no lo interpretes literalmente.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2908
  • Karma: 36
  • Superviviente marciano
    • futublock
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #267 en: Octubre 22, 2020, 02:50:43 pm »
vale vale, lo he pillao, al final lo he aplicado no exactamente como quería pero me sirve...

Ahora bien, ¿como priorizo una pulsación con respecto a otra si tengo que escribir un código de ''lineal''?
Me explico; si hay un par de botones y lo que se quiere es comprobar cual se ha pulsado antes, siempre se comprobará el primero y luego el segundo...
Creo que para eso está el elsif ¿no?

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6459
  • Karma: 168
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #268 en: Octubre 22, 2020, 04:01:59 pm »
Sí, cualquiera de las dos estructuras que te he escrito hace exactamente lo mismo: en cuanto una condición se cumple, deja de mirar el resto. Si pulsas los 4 botones, irá hacia arriba.

Hay otras formas, pero esta es la más sencilla de explicar y entender. Ya depende de lo que te quieras complicar. Podrías hacer que al pulsar la diagonal, se dirija en la última dirección pulsada, o que no se mueva... ya eso tú decides.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2908
  • Karma: 36
  • Superviviente marciano
    • futublock
Re:Tontadas y pamplinas + Otras dudas
« Respuesta #269 en: Octubre 23, 2020, 07:27:36 am »
seguiré con las pruebas, pero si pulsas las 4 direcciones vá parriba y es ahí donde veo un problema, nimio y no es para tener en cuenta (ni lo tendrá) pero es a lo que vengo referirme con programación lineal, si es que no hay mas remedio que ser lineal...