Kezdőoldal » Számítástechnika » Programozás » FREEPASCAL Zongora, hogyan...

FREEPASCAL Zongora, hogyan oldjam meg?

Figyelt kérdés

Addig eljutottam,hogy minden egyes lenyomott billentyűre más más hangot adjon,de a feladat az,hogy ha pl. a helyett A-t nyomok,akkor hosszan szóljon.Tudtok segíteni? Itt a kódom:


program zongora;

uses crt;

var r:word;

t:word;

ch:char;


BEGIN


r:=0;

repeat


if keypressed then begin

ch:=readkey;


case ch of

'a': r:=278;

's': r:=293;

'd': r:=330;

'f': r:=371;

'g': r:=418;

'h': r:=440;

'j': r:=495;

'k': r:=557;

'l': r:=600;

'p': r:=0;



end;


sound(r);



delay(350);


nosound;



end;



until ch='o';

readln;



end.


Köszi



2017. márc. 28. 21:02
1 2
 1/11 anonim ***** válasza:
39%
'A'
2017. márc. 28. 21:06
Hasznos számodra ez a válasz?
 2/11 coopper ***** válasza:
66%

Szia.


Vezess még be egy változót ami a hang hosszát határozza meg. Aztán a Case sekcióban (vagy egy IF-fel, ha az jobban megfelel) ezt a változót "felül birálod", valahogy igy :

.

.

HangHossz:=350;

.

.

Case ch of

'a':r:=278;

.

.

'A':r:=278;

end;

if ('A'<=ch) and (ch<='Z' ) then HangHossz:=700;

sound (r);

Delay (HangHossz);

.

.

Sok sikert.

Üdv.

2017. márc. 28. 21:30
Hasznos számodra ez a válasz?
 3/11 SimkoL ***** válasza:
73%

program zongora;


uses Crt;


var

gombok: set of Char = ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'P'];

r, duration: Word;

ch: Char;

begin

r := 0;

repeat

if KeyPressed then

begin

duration := 350;

ch := ReadKey;

if UpCase(ch) in gombok then

begin

case ch of

'a', 'A': r := 278;

's', 'S': r := 293;

'd', 'D': r := 330;

'f', 'F': r := 371;

'g', 'G': r := 418;

'h', 'H': r := 440;

'j', 'J': r := 495;

'k', 'K': r := 557;

'l', 'L': r := 600;

'p', 'P': r := 0;

end; // case

Sound(r);

if ch in gombok then duration := duration * 2;

Delay(duration);

NoSound;

end; // if Keypressed

end; // if UpCase

until ch = 'o';

end.


Off:

Megszületett ma délelőtt az ötödik unokám, nem tudjátok elvenni a kedvem semmivel, még ha le is pontoztok a megoldásért. :)

2017. márc. 28. 21:55
Hasznos számodra ez a válasz?
 4/11 sharkxxx ***** válasza:
100%

FreePascal-lal Windwos-ban futó programokat is lehet készíteni. Úgyhogy azt is meg lehet oldani, hogy olyan hosszan szóljon a hang, amilyen hosszan tartják a billentyűt.


Létre hozunk egy Windows-os ablakot, és a WM_KEYDOWN és a WM_KEYUP eseményébe beírjuk a Sound és NoSound parancsokat.


[link]

2017. márc. 29. 09:53
Hasznos számodra ez a válasz?
 5/11 SimkoL ***** válasza:
66%
És miért küzdjön a WIN API-val amikor a Lazarus készen kínál sok mindent ? A Pascal-t sem érti annyira, de nem gond, hogy tanuljon kommentezd meg bőven a küldött kódodat mert egy újonc-nak szerintem nagyon 'kínai'.
2017. márc. 29. 12:23
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:

Hálás vagyok a segítségeketkért,mindenkinek.Igen,csak most ismerkedem a Pascallal csak...egyelőre ez is elég,később mehet a windowsos is.:)



Gratulálok az unokádhoz!

2017. márc. 29. 13:17
 7/11 anonim ***** válasza:
100%

[link]


Hogy jól temperált legyen! :)

2017. márc. 29. 13:32
Hasznos számodra ez a válasz?
 8/11 SimkoL ***** válasza:
100%

Ha bármi gondod van a Pascal-lal, Lazarus-szal, Delphi-vel keress meg akár privátban is, szívesen segítek. Április közepétől kb. a végéig nem leszek elérhető, mert költözünk és ahová megyünk ott még nem tudom mennyi alatt kötik be a netet.

Off: A gratulációt köszönöm, igaz csak az unokám anyja az én érdemem :)

2017. márc. 29. 13:33
Hasznos számodra ez a válasz?
 9/11 SimkoL ***** válasza:
100%
SziSzilvi95: Anno valahol olvastam, mikor zenével is foglalkoztam, hogy a normál zenei A nem tökéletes 440 Hz-en, a vájtfülüek picit feljebb - pár Hz - tartják 'ideálisnak'.
2017. márc. 29. 13:39
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:
100%
#9 Jelenleg a legtöbb helyen 442Hz-re hangolnak, de nem is ez az amin megakadt a szemem, hanem a hangok közötti távolságokon. :) Minden egyes oktávnál a Hz duplázódik.
2017. márc. 29. 13:41
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!