hoy os voy a poner un ejemplo de como acceder al ir y mover un cursor por la pantalla
vamos a usar la libreria GRRLIB.h y la wpad.h
libreria GRRLIB
font5.h de la libreria GRRLIB
un cursor.h creado con el conversor de png a .h de la libreria GRRLIB
os pego el código aquí comentadito con todo el detalle que se me ha ocurrido podía hacer falta, si hay dudas ya sabéis, podéis preguntar, pero no esperéis respuestas muy desarrolladas que yo también estoy empezando
- Código: Seleccionar todo
//includes varios
#include <stdlib.h>
#include <ogcsys.h>
//include para el wiimote
#include <wiiuse/wpad.h>
//include del grrlib
#include "GRRLIB.h"
//algunos graficos y fonts
#include "../gfx/cursor.h"
#include "../fonts/font5.h"
//inicializamos el buffer del grrlib
extern u16 *GRRLIB_buffer;
//int main(int argc, char **argv) {
int main() {
//asignacion e inicio de variables
u32 tipo;
int ypos =0;
int xpos =0;
float angulo =0;
//asignacion de los diferentes datos del mando a wiimote
WPADData *wiimote;
//asignamos memoria para el buffer
GRRLIB_buffer=(u16 *)malloc(640*480*2);
//inicializamos el video y el grrlib_video
VIDEO_Init();
GRRLIB_InitVideo ();
//inicializamos los mandos y selecionamos el formato de los datos del mando 0
WPAD_Init();
WPAD_SetDataFormat(0, WPAD_FMT_BTNS_ACC_IR);
//inicializamos el grrlib
GRRLIB_Start();
//rellenamos toda la pantalla de color azul en el buffer
//la borramos xD
GRRLIB_FillScreen(0x00f0);
//pasamos el buffer a la pantalla
GRRLIB_Render();
//esperamos el sincronismo
VIDEO_WaitVSync();
while(1) { //bucle principal
GRRLIB_FillScreen(0x00f0); //borramos el buffer
WPAD_ScanPads(); //miramos los valores de los wiimotes
if(WPAD_Probe(0, &tipo) == WPAD_ERR_NONE) { // si el wiimote 0 no tiene errores seguimos
wiimote = WPAD_Data(0); //asignamos los datos del wiimote 0
if(wiimote->ir.valid) //comprobamos que el puntero es valido
{
ypos = wiimote->ir.y; //asignamos la posicion y
xpos = wiimote->ir.x; //asignamos la posicion x
angulo = wiimote->ir.angle / 180 * 3.1415; //calculamos el angulo / 180 * PI
// pintamos en la posicionx, posicion y del ancho del cursor, del alto del cursor, el cursor , el angulo de inclinacion y el alpha
GRRLIB_DrawImg( xpos, ypos, cursor_width, cursor_high,cursor_img, angulo,1 );
}
else { //si el puntero no es valido muestra apunta a la pantalla xD
GRRLIB_Print (230,300,font5_char_width,font5_char_high,"apunta a la pantalla",font5);
}
//salir del programa si se pulsa el boton Home
if(wiimote->btns_h & WPAD_BUTTON_HOME)
{
GRRLIB_FillScreen(0x0000); //borramos el buffer ahora en negro ;)
//imprime el mensaje al buffer
GRRLIB_Print (280,200,font5_char_width,font5_char_high,"saliendo",font5);
//saca el buffer por pantalla
GRRLIB_Render ();
//sale al HBC
exit(0);
}
}
else { //si el wiimote tiene errores puede ser que no este sincronizado, muestra mensaje
GRRLIB_Print (65,300,font5_char_width,font5_char_high,"puede que el mando este apagado o no esta sincronizado",font5);
}
GRRLIB_Render (); //sacca el buffer a pantalla
VIDEO_WaitVSync(); //espera al sincronismo de refresco
}
return 0; //si llegara hasta aqui saldria devolviendo 0, cosa que dudo xD
}
lo dicho no vale pegar y copiar en otros programas, al menos estudiarlo y modificarlo a vuestro gusto, pero no me seáis tan garrulos de copiar y pegar y no dar créditos del creador original
lo dicho los creditos de mi ejemplo
a los creadores de las librerias GRRLIB, wiiuse, libogc
a los creadores del devkitpro
a wanin , marcan y demás personajillos que no conozco y deberían de estar aquí
un saludo
PD:
El codigo anterior es en su totalidad de mi puño y letra, habiendo estudiado los ejemplos que venian con el devkitpro.
si no sois capaces de compilarlo, lo decis por aqui y vemos que ocurre y si no proximamente os adjunto todos los files necesarios, pero si realmente estais intentando aprender deverias tener los minimos recursos para conseguir lo que hace falta
![guiñando [ginyo]](./images/smilies/nuevos/guinyo_ani1.gif)
Edito para añadiros un fichero adjunto en el cual esta, la fuente5 ligeramente modificada para que salga en blanco sobre cualquier fondo y el cursor que he usado yo.
no seais muy criticos con el cursor, jajaja, al rotarlo se nota mucho el pixelado, pero vamos como dije es un ejemplo... no vale copiar y pegar
la fuente si, ya que no es mia, pertenece a las fuentes del GRRLIB.c pero lo modifique a blanca en vez de negra y el fondo se pinta transparente ....
La original es Negra con fondo blanco....





si se te mueve mucho el cursor temblará