Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Função para escrever como máquina de dactilografia.


geovanepc

Pergunta

Algum colega já implementou esse código?

Ex:

Texto: "Batatinha quando nasce, esparrama pelo chão, o Bilitocera quando dorme, põe a mão na Bíblia do Delphi pra quando acordar, estudar de novo!"

Bom, gostaria que uma frase como esta, fosse sendo digitada automaticamente em um Edit, Label ou Memo,

de maneira que o intervalo entre uma letra e outra variasse com um Random. Pra ficar mais idêntico.

Tipo: Digita um pouco, pára um pouquinho e continua. Intervalos pequenos.

Desde já agradeço.

Um forte abraço à todos.

Editado por geovanepc
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

amigo, voce vai precisar dos seguintes componentes:

1 Button para acionar a rotina

1 Memo para mostrar o texto que esta sendo digitado

1 MediaPlayer para tocar o som no autofalante do pc

OBS: pesquise na internet onde tem o som da tecla de uma maquina de escrever e faça o download para a sua maquina

montagem da rotina

1- defina uma variavel string e atribua a mensagem de texto

2- defina uma variavel integer para pegar o tamanho do texto

3- limpe o memo

4- defina do MediaPlayer o FileName - caminho onde esta o arquivo de som

5- defina a propriedade AutoOpen do MediaPlayer para True

6- use um comando FOR para fazer um loop onde cada caracter do texto sera adicionado ao memo

7- use o comando Sleep para definir o tempo que leverá para o memo receber o proximo caracter

8- use o comando Memo1.Refresh para atualizar os caracteres no memo

9- na sequencia de um comando Play ( MediaPlayer ) para executar o som

10- ao finalizar o FOR voce para a execução do som

OBS: tente fazer ... no maximo usara 15 linhas de comando

se não conseguir, depois passo o rotina pronta para voce

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Nada como um bom desafio mental, muito embora seja simples, mais tá valendo.

Tava com um pouco de pressa, então não encontrei o som pronto, daí baixei

um programinha que gera sons de máquina de escrever pelo teclado.

Confira:

http://www.baixaki.com.br/download/clickey.htm

Depois utilizei outro programa para capturar o som gerado, chamado:

Audacity - Utilizo pra gravar sons, inclusive de rádio online.

Converti o som para o formato WAV.

Nas propriedades do MediaPlayer, configurar:

MediaPlayer1.AutoOpen = true.

MediaPlayer1.FileName = 'C:\Teste\Som do teclado.wav'. // Som que o MediaPlayer vai tocar.

Coloquei um TIMER pra simular uma digitação pausada, tipo humana.

Timer1.enable = true;

Timer1.interval = 100.

É só ir testando os tempos e configurar do jeito que achar melhor.

Depois foi só implementar o código:

//---------------------------------------------------------------------------------------------------//
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MPlayer, StdCtrls, Buttons, ExtCtrls, StrUtils;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
BitBtn1: TBitBtn;
MediaPlayer1: TMediaPlayer;
Memo1: TMemo;
Timer1: TTimer;
procedure BitBtn1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
tempo: integer = 100;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
texto: string;
tamanho, x: integer;
begin
texto := Edit1.Text;
Memo1.Lines.Clear;
tamanho := Length(texto);
for x := 1 to tamanho do
begin
Memo1.Lines.Text := Memo1.Lines.Text + AnsiMidStr(texto, x, 1);
Mediaplayer1.Play;
Application.ProcessMessages;
// Sleep(100);
Sleep(tempo);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
tempo := random(500);
end;
end.

//---------------------------------------------------------------------------------------------------//

Depois da dica do professor Jhonas, aí ficou fácil!

Se não tiver mais nada a acrescentar, pode fechar o tópico.

Valeu professor.

Desde já agradeço.

Um forte abraço à todos.

Editado por geovanepc
Link para o comentário
Compartilhar em outros sites

  • 0

ok amigo.... já que conseguiu, vou passar outra forma de fazer

voce pode obter esse som e outros nesse link

http://www.findsounds.com/ISAPI/search.dll?keywords=typewriter

esse é o som de apenas uma tecla

http://www.soundjay.com/communication/typewriter-key-1.wav

esse é o som de varias teclas

http://www.ringelkater.de/Sounds/2geraeusche_gegenst/typewr11.wav

esse é o código mais simples

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MPlayer, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
MediaPlayer1: TMediaPlayer;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
VAR texto : string; i, tx : integer;
begin

Texto:= 'Batatinha quando nasce, esparrama pelo chão, '+
'o Bilitocera quando dorme, põe a mão na Bíblia do Delphi '+
' pra quando acordar, estudar de novo!';

tx := length(Texto); // pega o amanho do texto
memo1.Clear;

MediaPlayer1.FileName := 'C:\MAQUINA\typewr11.wav';
MediaPlayer1.AutoOpen := TRUE;

for i := 1 to tx do
begin
sleep(150);
memo1.Lines.Text := memo1.Lines.Text + texto;
memo1.refresh;
MediaPlayer1.Play;
end;
MediaPlayer1.Stop;

end;

end.

===============================================================================

nesse voce vai notar que, existe o som da folha sendo colocada na maquina

depois a mensagem é teclada e aparece no memo

ao chegar ao fim de uma linha digitada, ocorre o som do sininho indicando uma mudança de linha

ao chegar ao final o som das teclas é desligado

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MPlayer, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
MediaPlayer1: TMediaPlayer;
MediaPlayer2: TMediaPlayer;
MediaPlayer3: TMediaPlayer;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
VAR texto : string; i, tx : integer;
begin
MediaPlayer3.FileName := 'C:\MAQUINA\TYPO.wav'; // efiando a folha na maquina
MediaPlayer3.AutoOpen := TRUE;
MediaPlayer3.Play;
sleep(1000);

//'1234567890123456789012345678901234567890123456789012345'
Texto:= 'Batatinha quando nasce, esparrama pelo chão, o '+
'Bilitocera quando dorme, põe a mão na Bíblia do Delphi '+
' pra quando acordar, estudar de novo!';

tx := length(Texto); // pega o amanho do texto
memo1.Clear;

MediaPlayer1.FileName := 'C:\MAQUINA\tape.wav'; // som das teclas
MediaPlayer1.AutoOpen := TRUE;

for i := 1 to tx do
begin
if i = 120 then
begin
MediaPlayer1.Stop;
MediaPlayer2.FileName := 'C:\MAQUINA\ding.wav'; // som do sininho ao fim da linha
MediaPlayer2.AutoOpen := TRUE;
MediaPlayer2.Play;
end;
sleep(150);
memo1.Lines.Text := memo1.Lines.Text + texto;
memo1.refresh;
MediaPlayer1.Play;
end;
MediaPlayer1.Stop;

end;

end.

OBS: veja que usei 3 MediaPlayers para que um seja sobreposto a outro na execução

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...