Ir ao conteúdo

Exemplos do uso do comando Keypressed


Simon Viegas

Posts recomendados

  • Membro VIP
Postado

Criei esse tópico para demonstrar o uso do comando KeyPressed, assim como sugerido em outro tópico...

Vamos lá:

Eu não sei as especificações exatas desse comando, mas vou arriscar a dar uns pitacos...

KeyPressed é um comando que pertence a unit CRT (ou WinCRT). Funciona basicamnete retornado se alguam tecla foi precionada ou não... Neste caso ela é um função booleana, ou seja, retorna true ou false.. true para "sim" e false para não.

OBSERVAÇÕES QUE OBSERVEI QUE PODEM SER OBSERVADAS

- Faz mais sentido usar-lo dentro de um loop;

- Sempre é iniciado como false, caso uma tecla seja precionada ele passa para true;

- Ele não interrompe a sequência do programa. Funciona como uma variável, ou seja, só traz o valor true ou false nele mesmo...

- Quando está como true, o KeyPressed vai continuar sendo true até que seja usando um comando de leitura, como ReadLN ou ReadKey... daí ele volta a ser false novamente.

Exemplos de uso:

EXEMPLO 1

Mudança de cores

program keypressed_demo1;
{mudar de cor a cada tecla pressionada}

uses
crt; {necessario para usar o clresc e o keypressed}
var
//cont :byte; {contador de mudancas}
cont :integer; {contador de mudancas} //só troquei para integer, para evitar conflito com o PascalZim
begin
clrscr;
while cont<=10 do
begin
if KeyPressed then {se pressionou alguma tecla}
begin
TextColor(Random(15)+1); {existem 16 cores basicas de 0 a 15, 0=preto}
Inc(cont); {o mesmo que cont:=cont+1}
ReadKey; {usado para "resetar" o KeyPressed}
end;
WriteLN('Forum Clube do Hardware ',Random(10),Random(10),Random(10) );
{fica imprimindo este texto}
end;
end.

EXEMPLO 2

Algo parecido com a tela de Matrix (^_^)

program keypressed_demo2;
{programa fica imprimindo numeros aletorios um atras do outro}

uses
crt; {necessario para usar o clresc e o keypressed}
var
cont :word;

begin
TextColor(10);
while not keypressed do
begin
Write(chr(Random(126-32)+1+32)); {imprime caracteres randomicos}
Inc(cont); {o mesmo que cont:=cont+1}
end;
end.

(*
EXPLICACAO SOBRE COMO IMPRIMIR OS CARACTERES

- Baseado na tabela de caracteres do pascal (tabela ASCII) foi visto que os
caracteres que podem ser impressos vão de 32 a 126;
Logo temos 126-32 caracteres possiveis. Como o Random gera de 0 a X-1 de-
vemos adicionar 1 ao numero gerado (a tabela comeca do 1). Como os 32 pri-
meiros NAO sao validos adiconamos mais 32...

*)

Comentários são bem vindos..

UPDATE

Aqui um exemplo com MENU

program keypressed_demo1;
{menu de opções}

uses
crt; {necessario para usar o clresc e o keypressed}
var
opcao :char;

begin
clrscr;
WriteLN('(Digite a sua opcao');
Write('=> '); {só imprime uma setinha}
while opcao<>'S' do
begin
{imprie uma animacao de uma barra girando}
GotoXY(4,WhereY); Write('/'); {WhereY = posicao linha atual}
GotoXY(4,WhereY); Write('-');
GotoXY(4,WhereY); Write('\');
GotoXY(4,WhereY); Write('|');
if KeyPressed then {se uma tecla for precionada}
begin
GotoXY(1,WhereY); DelLine; Write('=> '); {delline = deletar linha}
opcao:=ReadKey;
opcao:=UpCase(opcao); {upcase = tornar maiusculo}
WriteLN(opcao);
case opcao of
'1' :begin

end;
'2' :begin

end;
'3' :begin

end;
'S' :begin
WriteLN('TCHAAAU');
ReadKey;
end;
end; {fim case}
end;
end;
end.

Abraços

  • 3 anos depois...
Visitante: Gmaster
 
Postado

program keypressed_demo1;
{mudar de cor a cada tecla pressionada}

uses
crt; {necessario para usar o clresc e o keypressed}
var
cont :byte; {contador de mudancas}

begin
clrscr;
while cont<=10 do
begin
if KeyPressed then {se pressionou alguma tecla}
begin
TextColor(Random(15)+1); {existem 16 cores basicas de 0 a 15, 0=preto}
Inc(cont); {o mesmo que cont:=cont+1}
ReadKey; {usado para "resetar" o KeyPressed}
end;
WriteLN('Forum Clube do Hardware ',Random(10),Random(10),Random(10) );
{fica imprimindo este texto}
end;
end.

__________________________________________________________________________

Nesse programa a variavel cont recebe Byte , mas no meu compilador dá um erro com esse byte !

O indentificador byte não foi declarado no escopo para a funçao program

ps: eu uso o pascalzim

__________________________________________________________________________

eu sei que esse topico é antigo mas eu estou realmente com duvidas ...

  • Membro VIP
Postado


{mudar de cor a cada tecla pressionada}

uses
crt; {necessario para usar o clresc e o keypressed}
var
cont :byte; {contador de mudancas}

begin
clrscr;
while cont<=10 do
begin
if KeyPressed then {se pressionou alguma tecla}
begin
TextColor(Random(15)+1); {existem 16 cores basicas de 0 a 15, 0=preto}
Inc(cont); {o mesmo que cont:=cont+1}
ReadKey; {usado para "resetar" o KeyPressed}
end;
WriteLN('Forum Clube do Hardware ',Random(10),Random(10),Random(10) );
{fica imprimindo este texto}
end;
end.
program keypressed_demo1;

__________________________________________________________________________

Nesse programa a variavel cont recebe Byte , mas no meu compilador dá um erro com esse byte !

O indentificador byte não foi declarado no escopo para a funçao program

ps: eu uso o pascalzim

__________________________________________________________________________

eu sei que esse topico é antigo mas eu estou realmente com duvidas ...

Olá,

Troque para integer...

Tentando explicar

O byte é um tipo numérico, como o integer, real, word etc... Cada tipo numérico tem as suas características. O byte poderíamos dizer que é o mais "simples" deles... ele ocupa somente 8 bits de memória, mas a sua faixa vai somente de 0 a 255, o que seria suficiente para o programa supracitado. Como o então PascalZim não está dando suporte, simplesmente use integer.

A byte is an unsigned integer in the range of 0 .. 255. A byte is 8 bits long. A byte and a char are the same thing, except a byte can only be referred to as a numeric type, while a char can be used as a character, or as part of a string type, and cannot be used in an arithmetic expression.

Fonte: http://wiki.freepascal.org/Byte

UPDATE 19/08/2013

Aproveitei e troquei no código original para integer.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!