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é
Jua, jua. Karma for dummies.
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
Macho me estoy descojonando xDDD
Llamale Bennu for baby's
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).
es que despues son las pamplinas que siempre preguntan to dio...
:D
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)
¡¡Cuenta con mi apoyo!!
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... >:(
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
Te estas superando :D
Toma el karma
(http://www.freakingnews.com/pictures/65000/Karma--65114.jpg)
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!!
excelente tutorial... ;D
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
Karma UP, para futublock, por Tutorial Bennu "for dummies"! plas plas plas plas plas..... ;) ;) ;) ;)
aqui lo que hay es mucho cachondeito, ¿no?
o es la caló?...
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.
futu, no te desanimes que la idea es excelente...
karma por eso!
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
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?
pon el write_var fuera del loop.
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?
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!
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...
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...
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
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...
http://wiki.bennugd.org/index.php?title=Delete_text
:P
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
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.
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...