
Chegou a hora de fazer os programas interagirem com o DS, obedecerem comandos. A primeira coisa é entender os comandos que a PAlib tem para fazer isso.
O objeto Pad é o encarregado de ler os comandos dos controles do DS. O formato é Pad.Ação.Botão
- Ação pode ser Held ou Newpress
- Botão pode ser Up, Down, Left, Right, A, B, X, Y, L, R, Start ou Select
Para verificar se a seta para a esquerda está sendo pressionada, usa-se if (Pad.Held.Left) { ...
E assim por diante.
Vamos analizar, então o programa do cálculo das cores:
- Fazer um programa que utilize os botões Left, Right, A, B, L e R para alterar os valores de Red, Green e Blue das cores, calculando o valor decimal resultante e mostrar os valores individuais, o resultante e desenhar um quadrado na tela com a cor calculada
- Fórmula: RGB podem variar cada um entre 0 e 31. O valor resultante é composto de 16 bits. O bit mais significativo sempre é 1, os 5 seguintes são o azul, os 5 seguintes o verde e os últimos 5 são o vermelho. Então a fórmula é 32768+azul*1024+verde*32+vermelho.
// Includes
#include
// Function: main()
int main(int argc, char ** argv)
{
u8 vermelho=0;
u8 verde=0;
u8 azul=0;
u16 soma=0;
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
PA_Init16bitBg(1,0);
PA_InitText(0,0);
PA_SetTextCol(0,31,31,31);
// Infinite loop to keep the program running
while (1)
{
PA_Draw16bitRect(1,0,0,255,191,soma);
PA_OutputSimpleText(0,0,0,"B / A => Vermelho");
PA_OutputSimpleText(0,0,1,"Esq / Dir => Verde");
PA_OutputSimpleText(0,0,2,"L / R => Azul");
PA_OutputText(0,0,4,"Vermelho: %d ",vermelho);
PA_OutputText(0,0,5,"Verde : %d ",verde);
PA_OutputText(0,0,6,"Azul : %d ",azul);
PA_OutputText(0,0,7,"16 bits : %d ",soma);
if (Pad.Newpress.B&&vermelho>0) { vermelho--; }
if (Pad.Newpress.A&&vermelho<31) { vermelho++; }
if (Pad.Newpress.Left&&verde>0) { verde--; }
if (Pad.Newpress.Right&&verde<31) { verde++; }
if (Pad.Newpress.L&&azul>0) { azul--; }
if (Pad.Newpress.R&&azul<31) { azul++; }
soma=32768+azul*1024+verde*32+vermelho;
PA_WaitForVBL();
}
return 0;
} // End of main()
Um comentário:
formidável, e bem simples. O divertido é imaginar que no pc são várias teclas, mas estar fazendo um aplicativo para um hardware com tão poucos botões. Legal.
Postar um comentário