A procedure menu exibe o título do jogo e mostra diversas opções que podem ser selecionadas pelo jogador utilizando as teclas de setas e pressionando ENTER.
As opções que o jogador pode escolher estão armazenadas em um array de string, que é preenchida logo no início da procedure menu.
As opções que o jogador pode escolher estão armazenadas em um array de string, que é preenchida logo no início da procedure menu.
procedure menu;
var escolha,sair:integer;
opcoes: array[1..5] of string[20];
begin
sair:=0;
opcoes[1]:=' 1 JOGADOR ';
opcoes[2]:=' 2 JOGADORES ';
opcoes[3]:=' RECORDES ';
opcoes[4]:=' INSTRUCOES ';
opcoes[5]:=' FINALIZAR ';
...
O trecho de código abaixo é responsável pela lógica da seleção e da exibição em cor diferente da escolha atual. A opção que está selecionada é exibida com a cor branca (cor=15) e o fundo vermelho escuro (cor=4). As demais opções são exibidas com a cor verde claro (cor=10) e fundo preto (cor=0). A variável inteira "escolha" guarda o valor da opção selecionada.
repeat textbackground(4); textcolor(15); gotoxy(28,10 + (2 * escolha)); write(opcoes[escolha]); enfeite; tecla:=ord(readkey); if tecla=0 then tecla:=ord(readkey)+255; textbackground(0); textcolor(10); gotoxy(28,10 + (2 * escolha)); write(opcoes[escolha]); case tecla of CI1: begin escolha:=escolha-1; if escolha=0 then escolha:=5; end; BA1: begin escolha:=escolha+1; if escolha=6 then escolha:=1; end; ENT: case escolha of 1: begin qjog:=1; sair:=1; end; 2: begin qjog:=2; sair:=1; end; 3: procrecorde; 4: instrucoes ; 5: begin gravarecordes; textcolor(15); textbackground(0); clrscr; halt;
{finaliza o programa}
end; end; end; until tecla=ENT;
No início do bloco "repeat / until" a opção atual é desenhada em destaque e depois a procedure enfeite é chamada. Quando uma tecla for pressionada, a opção atual é redesenhada com a cor padrão igual as demais opções. As únicas teclas que fazem alguma ação no menu são: seta para cima, seta para baixo e tecla ENTER. Os valores dessas teclas estão armazenados nas constantes CI1, BA1 e ENT.
As setas apenas alteram o valor da variável "escolha". Caso a tecla ENTER seja pressionada, será verificada o valor atual da variável "escolha" para decidir o fluxo do programa.
As setas apenas alteram o valor da variável "escolha". Caso a tecla ENTER seja pressionada, será verificada o valor atual da variável "escolha" para decidir o fluxo do programa.