
while
O while é o primeiro controle de fluxo que iremos executar. A sintaxe dele segue o seguinte padrão:
while (expressão_lógica) { comandos }
while significa "enquanto". Ele é um controle de fluxo do tipo loop (loop significa dar uma volta - por isso a manobra "looping" da aviação tem esse nome, porque o avão dá uma volta no ar). A lógica do while é repetir a execução dos comandos que estão entre chaves enquanto a expressão_lógica for verdadeira. Olhem o exemplo:
x=0;
while (x<10) {
x=x+1;
}
Tradução: x começa com 0. Cada vez que o loop é executado, x é acrescido de 1. Quando x chegar a 10, a expressão_lógica passa a ser falsa e o loop não é mais executado, passando o fluxo para o que vier depois dele.
if
If é um controle de fluxo do tipo decisão. If significa "se". A sua sintaxe é a seguinte:
if (expressão_lógica) { comandos1 } else { comandos2 }
"else { comandos2 }" é opcional, não precisa ser usado sempre que usar um comando if. Else signica "senão". A lógica é a seguinte: se a expressão_lógica for verdadeira, o conjunto de comandos1 é executado, senão o conjunto comandos2 é executado. Por exemplo:
if (x>20) {
a=0;
b=15;
} else {
a=10;
c=30;
}
Tradução: se x for maior que 20, então a passa a valer 0 e b passa a valer 15, senão a passa a valer 10 e c passa a valer 30.
Vamos a um programa exemplo para o DS:
Antes de "PA_Init();" digite o seguinte:
u16 x=0;
u16 y=0;
s8 passox=1;
s8 passoy=1;
u16 xvelho=0;
u16 yvelho=0;
Depois de "PA_InitVBL();", digite o seguinte:
PA_InitText(1,0);
PA_SetTextCol(1,31,31,0);
PA_InitRand();
x=PA_RandMinMax(1,30);
y=PA_RandMinMax(1,22);
Entre as chaves do "while(1)", antes de "PA_WaitForVBL();" , digite o seguinte:
xvelho=x;
yvelho=y;
x=x+passox;
y=y+passoy;
if (x==0) { passox=1; }
if (x==31) { passox=-1; }
if (y==0) { passoy=1; }
if (y==23) { passoy=-1; }
PA_OutputSimpleText(1,x,y,"o");
PA_OutputSimpleText(1,xvelho,yvelho," ");
O que o programa faz:
primeiro, inicializa as variáveis (u16 significa que vai ser um valor numérico de 16 bits sem sinal, podendo variar de 0 a 65535; s8 significa um valor numérico de 8 bits com sinal, podendo variar de -128 a 127). Depois prepara a tela de cima para receber texto na cor amarela, inicializa o gerador de números aleatórios e define o valor aleatório de x e y dentro da área de texto do DS, sem encostar nas bordas (a posição de um caracter de texto pode variar horizontalmente entre 0 e 31 e verticalmente entre 0 e 23).
Dentro do loop while, que é um loop infinito, pois 1 sempre vai ser verdadeiro (lembram? 1 é verdadeiro, 0 é falso), roda os seguintes comandos:
- armazena a posição antiga de x e y em xvelho e yvelho
- soma o passo de x e y a x e y
- verifica se x ou y chegaram a uma borda e inverte o passo de quem chegou
- escreve "o" na posição nova de x e y
- escreve um espaço (tem que digitar um espaço entre " ") na posição antiga de x e y, apagando o "o" que tinha ali.
2 comentários:
hun... e de extra vem um conceito simples para a colisão de um objeto que quica. Legal.
Bem massa!
Vou portar meu jogos pra DS agora.
Vlw cara.
Breve lumines no DS?
Vou tentar...
Postar um comentário