Hola, me gustaria saber como puedo mover una palabra que he imprimido en pantalla al pulsar una tecla. Es decir; supongamos que imprimo una palabra cualquiera en la pantalla en las coordenadas X,Y, siendo ambas variables enteras inicializadas y declaradas. Ahora quiero que al pulsar la tecla derecha, la palabra que he imprimido se desplace 1 pixel a la derecha, es decir: x=x+1; Sin embargo no se como puedo hacerlo, dado que lo he intentado de multiples maneras y sin exito. Gracias
int app_main(){ SetupCallback(); // Callbacks SceCtrlData pad; int x=100; int y=20; //Entorno vlfGuiSetBackgroundPlane(0xFF901E); //Establecemos un color de fondo,. vlfGuiSetModelSystem(); //Establecemos las olas del XMB siguiendo el modelo de fondo del sistema. vlfGuiSystemSetup(1, 1, 0); //vlfGuiAddClock();// Mostramos reloj en la esquina superior derecha vlfGuiAddGameIcon(&game, 10, 100); vlfGuiAddText(x, y, "Prueba de desplazamiento"); //Barra superior vlfGuiSetTitleBarEx(vlfGuiAddText(0,0,"Prueba de VLF"), vlfGuiAddPictureResource("sysconf_plugin", "tex_bar_init_icon", 4, -2), 1, 0, 0x152654); while(1){ sceCtrlReadBufferPositive(&pad, 1); if(pad.Buttons && up){ y=y+10;} vlfGuiDrawFrame(); //Muestra en pantalla el marco actual. } return 0; }
Por que no nos pegas mejor el
Por que no nos pegas mejor el codigo que has usado para eso? Porque la manera de hacerlo es... pues asi... poniendo dos condiciones para la pulsación de los botones (serian condiciones dobles si no quieres que se sobrepase un límite)
PD: en C en lugar de usar x=x+1, puedes usar x++ que es exactamente lo mismo ;)
PD2: te moví el hilo al foro correcto ;)
EDITADO:
Lo primero que estoy notando es la falta de un screen.flip (necesario para actualizar el estado de la pantalla)
Luego, creo que esto no está correcto:
if(pad.Buttons && up)
Mas bien sería así:
if(pad.Buttons & PSP_CTRL_UP)
Ve probando, haber que sale ;)
El screen.flip, estoy casi
El screen.flip, estoy casi seguro que solo se usa en LUA
Y respecto a lo del doble &, se pude usar & o &&, dado a que en la UNI nos lo han enseñado así.
La scene crece y crece...
Ehmm...
Ehmm, por lo que veo, usas vlfGuiAddText() para añadir un texto a la escena. Esto no te devuelve ningún identificador? (Deberás mirarlo en la docu). Si no te devuelve ningún identificador entonces quizás no es posible modificar sus coordenadas. Si te lo devuelve, pos alguna otra función habrá. (O quitar ese texto y ponerlo en cada frame). Si no te devuelve identificador, la única solución posible es crear de nuevo la escena en cada frame.
Y sobre el & y el &&... En serio te dijeron que sirven los dos en la uni? Macho, despide al profesor...
En tu caso concreto, estas comparando "lógicamente" la lectura de controles, que será un número con todos los botones "oreados", con la constante para el botón arriba, que es un número distinto de 0.
Así, si pulsas cualquier boton, pad se hace distinto de 0, primera condicion cumple, && ( y lógico ), UP lo tienes definido como constante, distinta de 0, siempre te cumplirá, es decir, al apretar CUALQUIER botón, esa condición se cumplirá. Tu lo que quieres mirar es si el BIT de ARRIBA está dentro de los controles pulsados actualmente, asi que tendrás que comparar, pero refiriendote a los bits, así que deberás usar & ( y a orden de bits ).
Ejemplo:
operación: && & &
operador1: 0101 0101 0101
operador2: 0010 0010 0100
resultado: ---- 0000 0100
resultado: TRUE FALSE TRUE
Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es
Bueno si, screen.flip() es
Bueno si, screen.flip() es propia de Lua, pero en C tambien hay una función análoga, si mal no recuerdo es flipScreen(), incluida en la librería graphics.h
pero
se refiere a que uses PSP_CTRL_UP porque UP en si no es nada...
He usado un #define, lo que
He usado un #define, lo que pasa es que no lo he pegado en el post