[Duda Palib] Crear menu

saludos.

¿como se pueden crear menus en palib?

yo he ideado esto

    if(PA_StylusInZone(100,100,116,166) && pasar==3){pasar=0;  PA_SetSpriteAnim(0,28,pasar); }
    if(PA_StylusInZone(100,100,116,166) && pasar==0){pasar=1; PA_SetSpriteAnim(0,28,pasar); }
    if(PA_StylusInZone(100,100,116,166) && pasar==1){pasar=2;  PA_SetSpriteAnim(0,28,pasar);}
    if(PA_StylusInZone(100,100,116,166) && pasar==2){pasar=3;  PA_SetSpriteAnim(0,28,pasar); }


tambien he probado con la funcion PA_SpriteStylusOver, pero hace lo que le da la gana
solamente puedo pasar de la opcion 1 a la 3 y ya esta.

la cosa es que se pueda elegir una figura para poder seleccionar un personaje cualquiera
(estos personajes, como podeis ver, esta dentro del mismo sprite)
¿?¿ pones en todos pasar == un numero distinto? en el mismo menu? bueno... segun que pongas antes, pero, que es lo que quieres conseguir, parece, segun lo anterior, al darle la puerta, pasa a un sitio u a otro, no? un laberinto de puertas?
nazareth escribió:¿?¿ pones en todos pasar == un numero distinto? en el mismo menu? bueno... segun que pongas antes, pero, que es lo que quieres conseguir, parece, segun lo anterior, al darle la puerta, pasa a un sitio u a otro, no? un laberinto de puertas?


si, pongo un numero distinto

lo que quiero hacer es un "menu" donde elegir una imagen
como cuando le das al boton de la derecha o izquierda en cualquier juego para elegir un personaje
Lo que puede hacer es combinar dos variables, una para adelante, y la otra para atras

Saludos

PD: supongo que seguiras teniendo dudas xD, tampoco se muy bien como explicarlo, se como ponerlo en practica, pero yo los menus los ago generalmente con sprites, asi, con que pongas PA_SpriteTouch(nº sprite)(creo k era :/), pero claro, yo uso dos sprites, no el mismo sprite.
nazareth escribió:Lo que puede hacer es combinar dos variables, una para adelante, y la otra para atras

Saludos

PD: supongo que seguiras teniendo dudas xD, tampoco se muy bien como explicarlo, se como ponerlo en practica, pero yo los menus los ago generalmente con sprites, asi, con que pongas PA_SpriteTouch(nº sprite)(creo k era :/), pero claro, yo uso dos sprites, no el mismo sprite.


eso de uno para alante y otro para atras no es lo que quiero...
de todas formas probare a ponerlo en sprites diferentes, haber que pasa.

pd: si en vez de "pasar=nº cualquiera" pongo "pasar++" el valor de pasar se vuelve loco :S
highfredo escribió:
nazareth escribió:Lo que puede hacer es combinar dos variables, una para adelante, y la otra para atras

Saludos

PD: supongo que seguiras teniendo dudas xD, tampoco se muy bien como explicarlo, se como ponerlo en practica, pero yo los menus los ago generalmente con sprites, asi, con que pongas PA_SpriteTouch(nº sprite)(creo k era :/), pero claro, yo uso dos sprites, no el mismo sprite.


eso de uno para alante y otro para atras no es lo que quiero...
de todas formas probare a ponerlo en sprites diferentes, haber que pasa.

pd: si en vez de "pasar=nº cualquiera" pongo "pasar++" el valor de pasar se vuelve loco :S

pones pasar++, y compruebas que si has llegado al tope vuelves al principio. es decir, si tienes cuatro opciones, y un boton que es para subir:
if(boton tocado){
pasar++;
if(pasar==5) pasar =1;
}
Suikoden77 escribió:
highfredo escribió:
nazareth escribió:Lo que puede hacer es combinar dos variables, una para adelante, y la otra para atras

Saludos

PD: supongo que seguiras teniendo dudas xD, tampoco se muy bien como explicarlo, se como ponerlo en practica, pero yo los menus los ago generalmente con sprites, asi, con que pongas PA_SpriteTouch(nº sprite)(creo k era :/), pero claro, yo uso dos sprites, no el mismo sprite.


eso de uno para alante y otro para atras no es lo que quiero...
de todas formas probare a ponerlo en sprites diferentes, haber que pasa.

pd: si en vez de "pasar=nº cualquiera" pongo "pasar++" el valor de pasar se vuelve loco :S

pones pasar++, y compruebas que si has llegado al tope vuelves al principio. es decir, si tienes cuatro opciones, y un boton que es para subir:
if(boton tocado){
pasar++;
if(pasar==5) pasar =1;
}


nada, no va
@highfredo

bueno podias postear tu codigo, pero de todas formas creo que sobra decir lo que voy a decir, pero bueno. el menu tiene que ir dentro de un while en el que haya un pa_waitforvbl(), si no no funcionara. es decir, un menu con tres opciones tiene esta pinta:

int opcion=0, salir=0;
while(!salir){
PA_WaitForVBL();
if(PA_StylusInZone(tal...) ){ //Este es el boton para subir en las opciones
opcion++;
if(opcion==3) opcion=0;
}
if(PA_StylusInZone(tal...) ){ //Este es el boton para bajar en las opciones
opcion--;
if(opcion==-1) opcion=2;
}
if(Condicion de salir) salir=1;
}
otra forma es
opcion++;
opcion%maximoopciones;

Espero que esto te sirva, no creo que no te funcione, si no que lo estabas haciendo mal. XAOP
GRACIAS Suikoden77 ^^

no era exactamente eso lo que quieria pero me dio la idea para lo que queria ^^

al final era asi
   if(PA_SpriteTouched(100)){pasar++; if(pasar==3){pasar=0;}
      while(i<30){PA_WaitForVBL(); i++;}
      if(i>=30){i=0;} }
     
      PA_SetSpriteAnim(0,28,pasar);


muchisimas gracias

pd: pasar=opcion
highfredo escribió:GRACIAS Suikoden77 ^^

no era exactamente eso lo que quieria pero me dio la idea para lo que queria ^^

al final era asi
   if(PA_SpriteTouched(100)){pasar++; if(pasar==3){pasar=0;}
      while(i<30){PA_WaitForVBL(); i++;}
      if(i>=30){i=0;} }
     
      PA_SetSpriteAnim(0,28,pasar);


muchisimas gracias

pd: pasar=opcion


de nada, aunque te dire dos cosas:
este codigo de texto
while(i<30){PA_WaitForVBL(); i++;}
es lo mismo que si pones
for(i=0;i<30;i++) PA_WaitForVBL();

y qie cuando solo quieres realizar una accion despues de un bucle o un if, como en el caso anterior, o en tu codigo, en:
if(i>=30){i=0;}
no hace falta poner corchetes, es decir, bastaria con
if(i>=30) i=0;

Salu2
lo del for es que tengo un trauma con ellos...

y con respecto a los corchetes es solo porque asi me organizo mejor :P
10 respuestas