Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Futu-block on March 15, 2011, 03:26:54 PM

Title: Tutorial Bennu ''for dummies''
Post by: Futu-block on March 15, 2011, 03:26:54 PM
Me he decidido a crear un tuto ''for dummies'' de cuestiones super simplonas pero que caemos todo el mundo sino al principio en cualquier otro momento de despiste

Tocaré tambien el ''poderoso'' PUBLIC ahora que lo domino al 90% :D

si se os ocurre otra cosita tambien las pondré
Title: Re: Tutorial Bennu ''for dummies''
Post by: Fede on March 15, 2011, 04:02:08 PM
Jua, jua. Karma for dummies.
Title: Re: Tutorial Bennu ''for dummies''
Post by: Futu-block on March 15, 2011, 04:19:57 PM
En primer lugar trataremos los botones, la forma de que al pulsar un boton solo dispare una vez,por ejemplo de una forma grafica mas agradable de recordar, tambien podemos recurrir a este hilo para acordarse

1· Pulsador
Imaginemos una bombilla conectada a un pulsador del timbre de nuestra casa, para que se encienda habria que pulsar pero al soltar se apagaria...
el porque he puesto una bombilla en vez de un timbre es por el tema grafico del videojuego sacado de la pagina de trinit

Analicemos:
Despues de toda la parafernaria pertinente de declaracion de proceso y etceteras vendria (en este caso) un loop
a continuacion la comprobacion de pulsar una tecla en este caso la 'p'
[code language="bennu"]if (key(_p))[/code]
ahora llega la ejecucion:
[code language="bennu"]graph = 2;[/code]
cambiamos de grafico para mostrar la bombilla encendida
[code language="bennu"]else[/code]
si no
[code language="bennu"]graph = 1;[/code]
el grafico es el de la bombilla apagada
[code language="bennu"]end[/code]

este ejemplo se puede aplicar principalmente a movimientos del protagonista de nuestro juego, arriba abajo izda. y decha. para cuando dejemos de pulsar se pare


el primer ejemplo queda un poco explicado aunque quisiera meterle unos iconos paran ilustrarlo mejor
(ya modificaré el mensaje :D)

para el proximo interruptor
Title: Re: Tutorial Bennu ''for dummies''
Post by: FreeYourMind on March 15, 2011, 04:38:08 PM
Macho me estoy descojonando xDDD
Llamale Bennu for baby's
Title: Re: Tutorial Bennu ''for dummies''
Post by: Drumpi on March 15, 2011, 05:34:19 PM
Y yo que pensaba que me ibas a quitar trabajo... (tengo en la pila el manual de bennu desde hace tiempo, pero es más complejo que eso :D :D :D).
Title: Re: Tutorial Bennu ''for dummies''
Post by: Futu-block on March 15, 2011, 09:04:44 PM
es que despues son las pamplinas que siempre preguntan to dio...
:D
Title: Re: Tutorial Bennu ''for dummies''
Post by: Fede on March 15, 2011, 09:09:25 PM
Que sí, que sí, que apoyo la iniciativa de Futu.

Que reuna en un hilo, manual, wiki; lo que quiera; las preguntas más básicas.  8)
Title: Re: Tutorial Bennu ''for dummies''
Post by: Yawin on March 16, 2011, 07:43:24 AM
¡¡Cuenta con mi apoyo!!
Title: Re: Tutorial Bennu ''for dummies''
Post by: seeti on July 04, 2011, 01:42:31 PM
Pues yo estoy interesado en la explicacion del interruptor... porque por más pruebas que hago lo unico que consigo es que se active-desactive-active-desactive todo el rato xD y eso que no debe ser tan complicado...  >:(
Title: Re: Tutorial Bennu ''for dummies''
Post by: Futu-block on July 04, 2011, 10:29:48 PM
Perdona la tardanza, es un tema que habia dejado por falta de tiempo.

Para hacer el interruptor hay que nombrar una variable, te pongo el codigo para ir mas rapido, claro está con explicaciones:

[code language="bennu"]
process interruptor()

private
int onoff = false; // controla si la bombilla está apagada o encendida
int pulsao; // controla que no pase como el ejemplo anterior, si sueltas se apaga

begin
x tal y tal; y igual
graph = 0; // grafico de bombilla apagada
loop   
      if (key(_i) and !pulsao)
         pulsao = true;
         if (onoff == true)
            onoff = false;
         else
            onoff = true;
         end
      end
      if (!key(_i) and pulsao)
         pulsao = false;
      end
      
      if (onoff == true)
         graph = 2;
      else
         graph = 1;
      end


[/code]

vale, ya que tengo un publico aceptable enunciaré los siguientes capitulos:
3º- Automatismo: botones y mas botones, uno para encender y otro para apagar.
4º- Quitar el autofire


drumpi y freeyourmind, creo que me debeis un karma
ja jaja
Title: Re: Tutorial Bennu ''for dummies''
Post by: FreeYourMind on July 04, 2011, 10:37:06 PM
Te estas superando  :D

Toma el karma

(http://www.freakingnews.com/pictures/65000/Karma--65114.jpg)
Title: Re: Tutorial Bennu ''for dummies''
Post by: seeti on July 04, 2011, 11:32:37 PM
Muchas gracias!! Probé tu ejemplo y me funcionó!! Estoy intentando hacer de alguna manera que al pulsar ALT+F se vean en una esquina los fps del juego (actualizándose cada frame), y que al pulsarlo de nuevo dejen de verse. Y también para hacer un menú de pausa.. así que a ver si no me lío con los bucles y consigo hacerlo xDD muchas gracias de nuevo!

pd: karma!!
Title: Re: Tutorial Bennu ''for dummies''
Post by: l1nk3rn3l on July 06, 2011, 02:18:19 AM
excelente tutorial...  ;D
Title: Re: Tutorial Bennu ''for dummies''
Post by: Futu-block on July 06, 2011, 10:40:13 AM
hombre, gracias...

Quote from: seeti on July 04, 2011, 11:32:37 PM
Muchas gracias!! Probé tu ejemplo y me funcionó!! Estoy intentando hacer de alguna manera que al pulsar ALT+F se vean en una esquina los fps del juego (actualizándose cada frame), y que al pulsarlo de nuevo dejen de verse. Y también para hacer un menú de pausa.. así que a ver si no me lío con los bucles y consigo hacerlo xDD muchas gracias de nuevo!

pd: karma!!

prueba a poner delete_text dentro de un bucle, si una variable es cierta o falsa.
los write y write_var dan problemas si los metes dentro del bucle
Title: Re: Tutorial Bennu ''for dummies''
Post by: kim-elet-o on July 06, 2011, 12:36:31 PM
Karma UP, para futublock, por Tutorial Bennu "for dummies"! plas plas plas plas plas.....  ;) ;) ;) ;)

Title: Re: Tutorial Bennu ''for dummies''
Post by: Futu-block on July 06, 2011, 02:50:22 PM
aqui lo que hay es mucho cachondeito, ¿no?

o es la caló?...
Title: Re: Tutorial Bennu ''for dummies''
Post by: Fede on July 07, 2011, 03:26:04 PM
Futu, no te mosquees. Por mi parte va en serio.

¡TOMAKARMA!  ;D ;D ;D

En esta nuestra comunidad, cada uno aporta lo que puede y quiere.

Un besito.
Title: Re: Tutorial Bennu ''for dummies''
Post by: SplinterGU on July 08, 2011, 02:00:03 AM
futu, no te desanimes que la idea es excelente...

karma por eso!
Title: Re: Tutorial Bennu ''for dummies''
Post by: Futu-block on July 08, 2011, 08:00:14 AM
no, si no me desanimo, lo que pasa que los vitores me desconciertan...

aparte que queria hacer iconitos para hacerlo mas comprensible, que despues siempre vienen nuevos preguntando lo mismo, je je
Title: Re: Tutorial Bennu ''for dummies''
Post by: seeti on July 20, 2011, 12:50:39 PM
Quote from: Futublock on July 06, 2011, 10:40:13 AM
hombre, gracias...

Quote from: seeti on July 04, 2011, 11:32:37 PM
Muchas gracias!! Probé tu ejemplo y me funcionó!! Estoy intentando hacer de alguna manera que al pulsar ALT+F se vean en una esquina los fps del juego (actualizándose cada frame), y que al pulsarlo de nuevo dejen de verse. Y también para hacer un menú de pausa.. así que a ver si no me lío con los bucles y consigo hacerlo xDD muchas gracias de nuevo!

pd: karma!!

prueba a poner delete_text dentro de un bucle, si una variable es cierta o falsa.
los write y write_var dan problemas si los metes dentro del bucle


No entendí muy bien esta ultima parte, si los write_var dan problemas dentro de un bucle, ¿como puedo hacer entonces que los fps se actualicen cada frame?
Title: Re: Tutorial Bennu ''for dummies''
Post by: SplinterGU on July 20, 2011, 01:34:23 PM
pon el write_var fuera del loop.
Title: Re: Tutorial Bennu ''for dummies''
Post by: Futu-block on July 20, 2011, 03:36:30 PM
si pone el write_var fuera del loop no puede hacerlo visible e invisible con un boton, a menos que cambies la z...

hay textos que por mucho que cambies la z no la haces desaparecer ¿no?
Title: Re: Tutorial Bennu ''for dummies''
Post by: seeti on July 20, 2011, 08:47:55 PM
Ahora tengo una duda que no se si lo hago yo mal... o que pasa xD

[code language="bennu"]
begin
    private
        int verfps;
    end

    verfps = write_var(0,1,1,0,fps);

    loop
        if (key(_F))
           delete_text(verfps);
        end
        frame;
    end
end
[/code]

No esta bien escrito este bloque? No debería borrar el write_var asignado a "verfps" ?

gracias de antemano!
Title: Re: Tutorial Bennu ''for dummies''
Post by: Futu-block on July 20, 2011, 08:51:11 PM
prueba cambiando la z del texto, me parece que text_z era o z_text, no me acuerdo, es mucho mas facil que tener que borrar un texto o variable y volverlo a escribir...
Title: Re: Tutorial Bennu ''for dummies''
Post by: seeti on July 20, 2011, 09:09:35 PM
muy ingenioso Futublock! se lo que me quieres decir, pero no se muy bien como aplicarlo al código:

podría utilizar algo como:

[code language="bennu"]
begin
    private
        int verfps;
    end

    verfps = write_var(0,1,1,0,fps);

    loop
        if (key(_F))
           verfps.z=100;
        end
        frame;
    end
end
[/code]

he probado de esta manera y me lanza un error de que el proceso 0 no esta activo...
Title: Re: Tutorial Bennu ''for dummies''
Post by: Rein (K´)ah Al-Ghul on July 20, 2011, 09:52:42 PM
Quote from: seeti on July 20, 2011, 08:47:55 PM
Ahora tengo una duda que no se si lo hago yo mal... o que pasa xD

[code language="bennu"]
begin
   private
       int verfps;
   end

   verfps = write_var(0,1,1,0,fps);

   loop
       if (key(_F))
          delete_text(verfps);
       end
       frame;
   end
end
[/code]

No esta bien escrito este bloque? No debería borrar el write_var asignado a "verfps" ?

gracias de antemano!
deberia ser:
[code language="bennu"]
//declaracion de datos privados del programa principal
private
       int verfps;
end
//comienzo del programa principal
begin
 
   verfps = write_var(0,1,1,0,fps);
   loop
       if (key(_F))
          delete_text(verfps);
       end
       frame;
   end
end
[/code]



Quote from: seeti on July 20, 2011, 09:09:35 PM
muy ingenioso Futublock! se lo que me quieres decir, pero no se muy bien como aplicarlo al código:

podría utilizar algo como:

[code language="bennu"]
begin
   private
       int verfps;
   end

   verfps = write_var(0,1,1,0,fps);

   loop
       if (key(_F))
          verfps.z=100;
       end
       frame;
   end
end
[/code]

he probado de esta manera y me lanza un error de que el proceso 0 no esta activo...
verfps es una variable, no un proceso o estructura para accederlo nombre.variable...
deveria ser:
text_z = <valor>;

ejemplos aqui:
http://wiki.bennugd.org/index.php?title=Text
Title: Re: Tutorial Bennu ''for dummies''
Post by: seeti on July 21, 2011, 03:43:56 PM
Sigo estando en las mismas... no puedo borrar el texto (verfps) unicamente, y no se como hacer lo que me comenta Futublock de variar la Z del texto...
Title: Re: Tutorial Bennu ''for dummies''
Post by: Rein (K´)ah Al-Ghul on July 21, 2011, 04:29:17 PM
http://wiki.bennugd.org/index.php?title=Delete_text
:P
Title: Re: Tutorial Bennu ''for dummies''
Post by: seeti on July 21, 2011, 04:32:19 PM
Quote from: Rein (K´)ah Al-Ghul on July 21, 2011, 04:29:17 PM
http://wiki.bennugd.org/index.php?title=Delete_text
:P

Mira el primer código que posteé...

[code language="bennu"]
begin
    private
        int verfps;
    end

    verfps = write_var(0,1,1,0,fps);

    loop
        if (key(_F))
           delete_text(verfps);
        end
        frame;
    end
end[/code]

según este código al pulsar la tecla F el texto debería desaparecer, pero no es así... pruebalo y verás
Title: Re: Tutorial Bennu ''for dummies''
Post by: Drumpi on July 21, 2011, 05:18:05 PM
Emmmm, TEXT_Z es una variable, y sólo funciona con los textos que se escriban DESPUÉS, como pasa con TEXT_COLOR.

WRITE_VAR, WRITE_INT, WRITE_STRING y no sé si se me olvida alguna, no necesita borrarse para que se modifique: modificas la variable que le pasas como parámetro y cambia solo, por eso no es necesario usarlo dentro del bucle.
El problema del bucle es que sólo se pueden escribir unos 255 textos a la vez (o más, no estoy seguro), por lo que antes de volver a escribir el texto, debes borrarlo para que no ocupe memoria.

El código:
begin
   private
       int verfps;
   end

   verfps = write_var(0,1,1,0,fps);

   loop
       if (key(_F))
          delete_text(verfps);
       end
       frame;
   end
end

No va a funcionar, porque en el primer ciclo del bucle se borra el texto y no se vuelve a escribir. Ese delete_text sobra, pero si deseas modificar su Z, lo suyo es usar WRITE a secas, y dentro del bucle, borrar el texto antes de modificar la Z y escribir el texto/valor nuevo.
Title: Re: Tutorial Bennu ''for dummies''
Post by: Futu-block on July 21, 2011, 05:19:28 PM
vamos a ver, no te rayes, primero pon el text_z = 256;
el problema reside en que en el codigo que has puesto al pulsar f se repite lo de delete_text tantas veces por frame; tampoco tienes una tecla aparte que la haga aparecer;

modificano un poco el tuto del interruptor te deberia quedar una cosa asi:

[code language="bennu"]
loop   
      if (key(_i) and !pulsao)
         pulsao = true;
         if (onoff == true)
            onoff = false;
         else
            onoff = true;
         end
      end
      if (!key(_i) and pulsao)
         pulsao = false;
      end

      if (onoff == true)
         graph = 2; text_z = 256; // si es correcto el texto se vá al fondo
      else
         graph = 1; text_z = -256; // si es falso el texto se vá al frente
      end

[/code]

tambien puede ser al reves, si es cierto se vá al frente...