Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   timer y sonidos (https://www.clubdelphi.com/foros/showthread.php?t=66454)

jandj 20-02-2010 22:52:49

timer y sonidos
 
saludos, el problema es el siguiente, estoy tratando de reproducir un sonido que diga una letra del abecedario, luego al precionar la letra si es correcto el programa reproducira un sonido diciendo que es correcto de lo contrario reproducirra otro sonido diciendo incorrecto. este es un ejemplo de lo que hecho.

primero el programa pregunta si tienes la respuesta:
Código Delphi [-]
procedure TForm1.Timer2Timer(Sender: TObject);
begin
sndPlaySound('C:\JProyect\JWordGuess\sonidos\tienelarespuesta.wav',SND_NODEFAULT or SND_SYNC or SND_LOOP);
sndPlaySound(nil,0);
timer2.enabled:=false;
end;


segundo el programa reproduce el sonido de la respuesta esperando que se precione la tecla correcta o incorrecta:
Código Delphi [-]
procedure TForm1.Timer3Timer(Sender: TObject);
begin
a:=random(1);
if a = 0 then
sndPlaySound('C:\JProyect\JWordGuess\sonidos\A.wav',SND_NODEFAULT or SND_SYNC or SND_LOOP);
sndPlaySound(nil,0);
//timerb.Enabled:=true;
timer3.enabled:=false;
timer3.Interval:=4000;
end;


tercero tengo este codigo en un edit:
Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case a of
0:
begin
if (key = 'A') or (key = 'a') then
begin
sndPlaySound('C:\JProyect\JWordGuess\sonidos\correcto.wav',SND_NODEFAULT or SND_SYNC or SND_LOOP);
sndPlaySound(nil,0);
timer3.Enabled:=false;
timerb.Enabled:=true;
b:=random(1);
exit;
end
else
sndPlaySound('C:\JProyect\JWordGuess\sonidos\incorrecto.wav',SND_NODEFAULT or SND_SYNC or SND_LOOP);
sndPlaySound(nil,0);
a:=random(1);
timer3.Enabled:=false;
timerb.Enabled:=true;
exit;
end;
end;

case b of
0:
begin
if (key = 'B') or (key = 'b') then
begin
sndPlaySound('C:\JProyect\JWordGuess\sonidos\correcto.wav',SND_NODEFAULT or SND_SYNC or SND_LOOP);
sndPlaySound(nil,0);
timer3.Enabled:=true;
timerb.Enabled:=false;
a:=random(1);
exit;
end
else
sndPlaySound('C:\JProyect\JWordGuess\sonidos\incorrecto.wav',SND_NODEFAULT or SND_SYNC or SND_LOOP);
sndPlaySound(nil,0);
timer3.Enabled:=true;
timerb.Enabled:=false;
b:=random(1);
end;
end;
end;


y este otro en el evento onchange del edit:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
IF Length(Edit1.Text) = 1 then
edit1.SelectAll;
end;


en este codigo estaba pensando poner la letras por separado cada una en un timer direfrente, pero como quiera, el problema mayor lo tengo cuando preciono las teclas siempre dice que es correcto se que es por que estan programadas las teclas a y b. por ejemplo si el programa pregunta si tengo la respuesta, luego dice le respuesta por ejemplo dice (a) y yo preciono (b) tambien dice que es correcto. por favor necesito su ayuda.

DriverOp 21-02-2010 01:36:22

La verdad que no entiendo la lógica de tu código.

Por ejemplo esta línea:

Código Delphi [-]
b:=Random(1);

Solo elije entre un solo número, el cero. Si querías que generara el 0 o el 1 tendrías que haber puesto:

Código Delphi [-]
b:=Random(2);

De todas formas eso es irrelevante porque si tu intención es generar una letra al azar lo correcto sería:
Código Delphi [-]
Letra:=chr(Random(26)+65);
Siendo 'Letra' de tipo char.

jandj 22-02-2010 22:29:52

Solucionado
 
Saludos! he resuelto el problema, pero de una manera no muy agradable tuve que usar un componente timer por letras, ordenarlas y quitar el random, y asignarle un numero a cada letra y para resetearlas letras le asignaba cero. ha y para la respuesta de driverOP puse a:=random(1) para reducir las posibilidades de que salgan mas numero, en ese ejemplo estaba probando solo con dos letras por separado y por eso hay un a:=random(1) y otro b:=random(1) voy a tratar de hacer el programa con letras al azar, nuevamente, si tengo problemas! nuevamante les dejare saber, bueno gracias driverOP por hacerme entrar en dudas...


La franja horaria es GMT +2. Ahora son las 19:53:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi