A procedure informa escreve no topo da tela o tempo restante e qual jogador está vencendo. Nas laterais são escritos os nomes e pontos dos jogadores de acordo com a cor de cada jogador como pode ser visto nesta imagem.
Os nomes e os pontos dos jogadores estão armazenados no vetor "extrainfo[]". Este é o código da procedure informa:
procedure informa;
var ind,col:integer;
begin
for ind:=1 to qjog do {nome e ponto do jog}
begin
apagalinha(5);
textcolor(jog[ind].cor);
if ind=1 then
col:=67
else
col:=3;
gotoxy(col,10);
write(extrainfo[ind].nome);
gotoxy(col+2,12);
write(extrainfo[ind].score:3);
end;
textcolor(15);
if qjog=2 then
if extrainfo[1].score = extrainfo[2].score then
msg(' Empate')
else
begin
if extrainfo[1].score > extrainfo[2].score then
ind:=1
else
ind:=2;
msg(extrainfo[ind].nome + ' esta vencendo.');
end;
gotoxy(35,3);
textcolor(15);
if tempo<=10 then textcolor(15+blink);
write('TEMPO: ',tempo:2);
end;
Existe outra procedure chamada mostra que é responsável por exibir na tela os caracteres que representam os jogadores e seus objetos, além das bolas que ameaçam os jogadores. Esta procedure e a procedure informa são chamadas a partir da procedure jogo.
As informações necessárias para a exibição de todos os itens estão nos vetores "jog[]", "obj[]" e "bola[]". Estes vetores são do tipo "geral" como pode ser visto na postagem Definição das variáveis.
As informações necessárias para a exibição de todos os itens estão nos vetores "jog[]", "obj[]" e "bola[]". Estes vetores são do tipo "geral" como pode ser visto na postagem Definição das variáveis.
procedure mostra;
var ind:integer;
begin
for ind:=1 to qjog do
begin
textcolor(jog[ind].cor);
gotoxy(obj[ind].col + difcol, obj[ind].lin + diflin);
write(chr(obj[ind].cara));
gotoxy(jog[ind].col + difcol, jog[ind].lin + diflin);
write(chr(jog[ind].cara));
end;
if qbola > 0 then
for ind:= 1 to qbola do
begin
textcolor(15); {branco}
gotoxy(bola[ind].col + difcol, bola[ind].lin + diflin);
write('0');
end;
end;
A procedure inicia procura uma posição aleatória na fase que não contenha um bloco. Esta procedure utiliza passagem de parâmetros por referência. Isto é feito usando a palavra "var" na frente dos nomes dos parâmetros. Na passagem por referência, as variáveis originais que foram passadas para a procedure tem os seus valores modificados.
procedure inicia(var nlin, ncol:integer);
begin
repeat
nlin := random( altura ) + 1;
ncol := random( largura) + 1;
until mapa[ nlin, ncol ] = 0;
end;
A procedure morte é chamada quando ocorre algum tipo de colisão do jogador. Ela desenha um "*" na posição atual do jogador e exibe uma mensagem no topo da tela com o nome do jogador que explodiu. Depois faz uma pequena pausa e subtrai 5 pontos do jogador.
procedure morte(x:integer);
begin
apagalinha(5);
sound(50);
textcolor(jog[x].cor);
gotoxy(jog[x].col + difcol, jog[x].lin + diflin);
write('*');
msg(extrainfo[x].nome + ' explodiu.');
delay(300);
nosound;
delay(400);
apagalinha(5);
extrainfo[x].score := extrainfo[x].score - 5;
jog[x].direcao := 0;
end;