Розробка програми-емулятора "Фортепіано"

Оформлення зручного, зрозумілого інтерфейсу та створення малюнку, на якому відображались клавіші фортепіано. Відтворення звуку при натисненні відповідної клавіші, а також замальовування тієї частини екрану, що відповідала натиснутій клавіші на клавіатурі.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 11.10.2013
Размер файла 560,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВРСИТЕТ УКРАЇНИ

«КИЇВСЬКИЙ ПОЛІТЕХНЧНИЙ ІНСТИТУТ»

Інтситут прикладного системного аналізу

Кафедра математичних методів системного аналізу

КУРСОВИЙ ПРОЕКТ

зЗ дисципліни: “ПРОГРАМУВАННЯ ТА АЛГОРИТМІЧНІ МОВИ”

на тему: “Розробка програми-емулятора фортепіано”

Перевірив: Кузнєцова Наталія Володимирівна

Виконав Щука Роман

Київ - 2012

Зміст

Вступ

1. Основна частина

1.1 Постановка задачі

1.2 Метод розв'язку задачі

1.3 Опис алгоритму

1.4 Опис програми

1.5 Опис інтерфейсу

Висновки

Список використаної літератури

Додаток

Вступ

В роботі реалізовано програму-емулятор "Фортепіано". Для відтворення звуку в даному проекті використовуються перша та друга октави. Кожна нота визначається своєю «персональною» частотою, що вимірюється в герцах. В ході розробки програмного продукту було розглянуто декілька аналогів емуляторів. Однією з найбільших переваг даного емулятора «Фортепіано» є зручний та зрозумілий для користувача інтерфейс та простота використання.

Розроблена програма являє собою емулятор фортепіано. Даний програмний продукт створений на мові програмування Pascal, зокрема в середовищах ABCPascal, TurboPascal, BorlandPascal 7.0. При розробці програми також використовувався емулятор операційної системи DOS з метою покращення роботи відеорежиму Pascal. Для коректного використання програми слід використовувати операційну систему Windows 98, 2000, XP, 8

1. Основна частина

1.1 Постановка задачі

В даному проекті було поставлено декілька задач. Постановка першого завдання заключалась в оформленні зручного та зрозумілого інтерфейсу та в створенні малюнку , на якому відображались клавіші фортепіано. Наступною задачею стало відтворення звуку при натисненні відповідної клавіші, а також замальовування тієї частини екрану (клавіші фортепіано), що відповідала натиснутій клавіші на клавіатурі. Зокрема автор вирішив задачу запису програної користувачем мелодії з можливістю її подальшого відтворення та виведення на екран відповідних клавіш, натиснутих в процесі запису. Розробник також реалізував задачу виведення на екран нот згідно з міжнародними позначеннями. При вирішенні описаних вище задач автор намагався створити максимально просту програму для використання користувачем будь-якого віку не залежно від наявності музичної освіти.

1.2 Метод розв'язку задачі

Для розв'язку вищесказаних задач розробник створив окремий модуль та вбудовані до нього процедури. Розроблений модуль був призначений для оформлення зовнішнього вигляду окремих блоків програми в режимах гри, запису та відтворення. Модуль містить ряд процедур, за допомогою яких розробник виконав поставленні задачі. Кожна процедура має окреме призначення. Розроблені процедури передбачають створення зображення клавіш фортепіано на екрані у відповідних режимах; встановлення «персональної» частоти (в герцах) для кожної клавіші, виведення звуку через динаміки та зміну забарвлення тієї частини екрану, що відповідає натиснутій клавіші під час її натискання на клавіатурі; створення окремих текстових файлів, в які записується мелодія в режимі запису, а також виведення натиснутих користувачем клавіш та назв нот на екран під дошкою фортепіано в режимах виведення та відтворення.

1.3 Опис алгоритму

На рисунку 2.1 зображено структурну блок-схему роботи програми

Рис. 1.1

1.4 Опис головних констант, типів, процедур та функцій і їх змінних

Константи

NORM = 0 - нормальний колір фону (чорний)

CHANGE = 9 - змінений (колір поточного пункту меню) фон.

Max_item = 5 - кількість пунктів у меню.

Типи

NOTE = RECORD - Використовується для створення головного меню.

Line = array of NOTE - Використовується для створення полів записів у головному меню, надання початкових координат для виведення тексту та кольору зображення.

FILE_ABC - файл що зберігає записи символьного типу.

Змінні

Menu_selected - відповідає за вибраний пункт меню

Menu_last_selected - відповідає за попередній пункт, що був вибраний

CH - змінна символьного типу.

Процедури

Print - виводить окремий пункт меню.

Вхідні дані: номер пункту меню, який треба вивести.

PrintMenu - виводить все меню.

Fill_in - заповнює меню, надаючи координати виведення та колір фону.

Paint - малює фортепіано.

Sound_let - виводить звук при натисненні відповідної клавіші.

Вхідні дані: координати натиснутої клавіші, частота звуку, символ, що відповідає клавіші на клавіатурі.

Sound_let1 - виводить звук при натисканні відповідної клавіші (як і попередня процедура), однак довжина звуку вдвічі коротша.

Вхідні дані: координати натиснутої клавіші, частота звуку, символ, що відповідає клавіші на клавіатурі.

WriteToFile - записує символи у файл.

Вхідні дані: Два текстові файли, призначенні для запису символів, що відповідають натисненим клавішам на клавіатурі та виведення на екран відповідних символів.

OutFromFile - читає символи з файлу

Вхідні дані: Два текстові файли, призначенні для запису символів, що відповідають натисненим клавішам на клавіатурі та виведення на екран відповідних символів.

Select1 - використовується для режиму простої гри.

Select2 - в режимі «запис» викликає процедуру WriteToFile.

Select3 - виводить символи з файла на екран.

Select4 - читає з файлу букви, що відповідають нотам та виводить на екран.

Вхідні дані: Два текстові файли, призначенні для запису символів, що відповідають натисненим клавішам на клавіатурі та виведення на екран відповідних символів.

1.5 Опис інтерфейсу

В даному програмному продукті було створено зручний для користувача інтерфейс. Інтерфейс програми інтуїтивно зрозумілий. Пересування в меню виконується за допомогою клавіатури. Використовуються клавіші «стрілка вверх», «стрілка вниз» та клавіша “Enter”. На рисунку 2.2 зображено вигляд головного меню при завантаженні програми.

Рис. 1.2

Користувачу пропонується вибрати, те що йому потрібно за допомогою стрілок вниз/вверх та клавіші Enter.

Start - Режим простої гри.

Record melody - Записує мелодію в окремий файл.

Out last melody - Виводить останню записану мелодію.

Play last melody - Відтворює останню записану мелодію.

Exit - вийти з гри

На рисунку 1.3 показано вікно режиму простої гри на фортепіано.

Рис. 1.3

На рис. 1.4 показано виведення останньої записаної мелодії в двох режимах. Перший - назва кнопки на клавіатурі. Другий - назва ноти.

інтерфейс клавіша фортепіано екран

Рис. 1.4

Режим виведення та відтворення останньої записаної мелодії (рис 1. 5)

Рис 1. 5

Висновки

В данному проекті реалізовано програму-емулятор «Фортепіано». В ході роботи автор отримав досвід роботи з графікою на мові Паскаль, навчився працювати з текстами в середовищі мови програмування, що є неоціненним вкладом та незамінним досвідом в кар'єрі майбутнього програміста. Отже, цей курсовий проект суттєво підвищив рівень програмування автора, покращив навички системного підходу розв'язування поставленої задачі та поповнив знання автора для роботи в середовищах BorlandPascal, ABCPascal, TurboPascal.

До переваг емулятора «Фортепіано» можна віднести малі системні вимоги, просте використання програми, досить знучний та зрозумілий інтерфейс гри, що дозволить з легкістю грати та записувати мелодії користувачам будь-якого віку не залежно від наявності музичної освіти та досвіду роботи з персональним комп'ютером.

До недоліків програми можна віднести відсутність можливості збереження кількох мелодій одночасно, відсутність паузи та розпізнання довжини звуку в режимі відтворення, а також незручне розташування «ігрової палітри» у зв'язку з недостатньою вмістимістю клавіш на клавіатурі.

Список використаної літератури

1. Немнюгин С.А. Программирование на языке высокого уровня - Ученик для ВУЗов. 2-е издание, -СПб.:Питер, 2004.-544с.:ил.

2. Меженый О.А. TurboPascal Самоучитель - М. : Издательский дом «Вильямс», 2006 - 336с.: ил.

3. А.И.Марченко, Л.А.Марченко Программирование в среде Turbo Pascal 7.0. 7-ое изд. - К.: ВЕК+, 2003. - 464с., ил.

Додаток

Лістинг програми

program main_menu;

uses

crt,KURS2;

type

note = record {tip dl9 menu}

x,y : integer;

post : string;

color : byte;

end;

Line = array [1..5] of note;

var array1 : line;

i,x,y : integer;

ch : char;

menu_selected, menu_last_selected : word;

const

norm = 0;

change = 9;

max_item = 5;

procedure print (i : integer); {procedura vuvoda pynkta men'y}

begin

with array1[i] do

begin

TextAttr := 15+16*color;

gotoxy(x,y);

write(post);

end;

end;

procedure PrintMenu; {vuvodit vse pynktu men'y}

var i : integer;

begin

for i := 1 to max_item do

print(i);

end;

procedure fill_in; {zapoln9et pynktu men'y}

var

number : string;

begin

for i := 1 to max_item do

begin

with array1[i] do

begin

x := 35;

y := 9 + i;

color := norm;

end;

end;

array1[1].color := change;

array1[1].post := ' START ';

array1[2].post := ' RECORD MELODY ';

array1[3].post := ' OUT LAST MELODY ';

array1[4].post := 'PLAY LAST MELODY ';

array1[5].post := ' EXIT ';

end;

begin

textbackground(0);

clrscr;

menu_selected := 1;

menu_last_selected := 1;

fill_in;

print(1);

print(2);

print(3);

print(4);

print(5);

while KeyPressed do Ch := ReadKey;

repeat

ch := readkey;

case Ch of

#80: begin

menu_last_selected := menu_selected;

if menu_selected = max_item

then

menu_selected := 1 {men9et cvet men'y}

else

menu_selected := menu_selected + 1;

end;

#72: begin

menu_last_selected := menu_selected;

if menu_selected = 1

then

menu_selected := max_item

else

menu_selected := menu_selected - 1;

end;

#13: begin

if menu_selected = 1 then

begin

paint; {sm. modyl'}

select1; {sm. modyl'}

PrintMenu; {sm. modyl'}

end;

if menu_selected = 2 then

begin

paint;

select2; {sm. modyl'}

PrintMenu;

end;

if menu_selected = 3 then

begin

paint;

select3; {sm. modyl'}

PrintMenu;

end;

if menu_selected = 4 then

begin

paint;

select4(ABC1); {sm. modyl'}

PrintMenu;

end;

if menu_selected = 5 then

break;

end;

end;

array1[menu_last_selected].color := norm;

array1[menu_selected].color := change;

print(menu_selected);

print(menu_last_selected);

until false;

end.

unit KURS2;

interface

uses

crt,graph;

type

let = array [1..1000] of char;

File_ABC = file of char;

var

graphdriver,graphmode : integer;

i,g : integer;

ch : char;

mas1,mas2 : let;

k1,k2 : integer;

ABC1,ABC2 : File_ABC;

const

y_down = 100;

procedure sound_let(x,y,s: integer; ch1 : char);

procedure sound_let1(x,y,s: integer; ch1 : char);

procedure paint;

procedure select1;

procedure select2;

procedure select3;

procedure select4 (var ABC1 : File_ABC);

procedure WriteToFile (var ABC1,ABC2 : File_ABC);

procedure OutFromFile (var ABC1,ABC2 : File_ABC);

implementation

procedure select3; {vuvodit simvolu iz faila na ekran}

begin

SetTextStyle(DefaultFont,HorizDir,1);

OutFromFile(ABC1,ABC2);

SetTextStyle(DefaultFont,HorizDir,2);

select1;

end;

procedure OutFromFile (var ABC1,ABC2 : File_ABC);

{chitaet simvolu iz faila}

var g : integer;

ch : char;

begin

g := 50;

assign(ABC1,'FILE1.txt');

reset(ABC1);

while not eof(ABC1) do

begin

read(ABC1,ch);

OutTextXY(g,200,ch);

g := g + 15;

end;

close(ABC1);

g := 50;

assign(ABC2,'FILE2.txt');

reset(ABC2);

while not eof(ABC2) do

begin

read(ABC2,ch);

if ch = '#' then g := g - 7;

OutTextXY(g,250,ch);

g := g + 15;

end;

close(ABC2);

end;

procedure select4 (var ABC1 : File_ABC);

{chitaet iz faila bykvu, kotorue sootvetstvujut notam}

var g : integer;

ch : char;

begin

g := 50;

assign(ABC1,'FILE1.txt');

reset(ABC1);

{ assign(ABC2,'FILEKURS2.txt');

reset(ABC2);}

while not eof(ABC1) do

begin

read(ABC1,ch);

case ch of

'Z' :

begin

sound_let1(42,78,261, 'Z');

OutTextXY(g,200,ch);

end;

'S':

begin

sound_let1(60,54,277,'S');

OutTextXY(g,200,ch);

end;

'X':

begin

sound_let1(84,78,293,'X');

OutTextXY(g,200,ch);

end;

'D':

begin

sound_let1(108,54,311,'D');

OutTextXY(g,200,ch);

end;

'C':

begin

sound_let1(126,78,329,'C');

OutTextXY(g,200,ch);

end;

'V':

begin

sound_let1(162,78,349,'V');

OutTextXY(g,200,ch);

end;

'G':

begin

sound_let1(180,54,369,'G');

OutTextXY(g,200,ch);

end;

'B':

begin

sound_let1(204,78,392,'B');

OutTextXY(g,200,ch);

end;

'H':

begin

sound_let1(228,54,415,'H');

OutTextXY(g,200,ch);

end;

'N':

begin

sound_let1(252,78,440,'N');

OutTextXY(g,200,ch);

end;

'J':

begin

sound_let1(276,54,466,'J');

OutTextXY(g,200,ch);

end;

'M':

begin

sound_let1(294,78,493,'M');

OutTextXY(g,200,ch);

end;

'Q':

begin

sound_let1(42+288,78,523, 'Q');

OutTextXY(g,200,ch);

end;

'2':

begin

sound_let1(60+288,54,554,'2');

OutTextXY(g,200,ch);

end;

'W':

begin

sound_let1(288+84,78,587,'W');

OutTextXY(g,200,ch);

end;

'3':

begin

sound_let1(288+108,54,622,'3');

OutTextXY(g,200,ch);

end;

'E':

begin

sound_let1(126+288,78,659,'E');

OutTextXY(g,200,ch);

end;

'R':

begin

sound_let1(162+288,78,698,'R');

OutTextXY(g,200,ch);

end;

'5':

begin

sound_let1(288+180,54,739,'5');

OutTextXY(g,200,ch);

end;

'T':

begin

sound_let1(288+204,78,784,'T');

OutTextXY(g,200,ch);

end;

'6':

begin

sound_let1(288+228,54,830,'6');

OutTextXY(g,200,ch);

end;

'Y':

begin

sound_let1(288+252,78,880,'Y');

OutTextXY(g,200,ch);

end;

'7':

begin

sound_let1(288+276,54,932,'7');

OutTextXY(g,200,ch);

end;

'U':

begin

sound_let1(288+294,78,987,'U');

OutTextXY(g,200,ch);

end;

end;

g := g + 15;

end;

close(ABC1);

select1;

end;

procedure sound_let(x,y,s: integer; ch1 : char);

{vudaet zvyk pri nazhatii sootvetstvennoy klaviwi

dlinnui zvyk}

begin

SetColor(Red);

OutTextXY(x,y,ch1);

sound(s);

delay(100);

nosound;

SetColor(Green);

OutTextXY(x,y,ch1);

end;

procedure sound_let1(x,y,s: integer; ch1 : char);

{vudaet zvyk pri nazhatii sootvetstvennoy klaviwi

dlinnui zvyk}

begin

SetColor(Red);

OutTextXY(x,y,ch1);

sound(s);

delay(220);

nosound;

SetColor(Green);

OutTextXY(x,y,ch1);

end;

procedure WriteToFile (var ABC1,ABC2 : File_ABC); {zapisuvaet v fail notu}

var i,j : integer;

begin

assign(ABC1,'FILE1.txt');

rewrite(ABC1);

for i := 0 to k1 do

write(ABC1,mas1[i]);

Close(ABC1);

assign(ABC2,'FILE2.txt');

rewrite(ABC2);

for i := 0 to k2 do

write(ABC2,mas2[i]);

Close(ABC2);

end;

procedure paint; {risyet dosky fortepiano}

begin

GraphDriver := Detect;

Initgraph(GraphDriver,GraphMode,'D:\BP\BIN\BGI');

Clrscr;

SetColor(White);

SetLineStyle(SolidLn,0,ThickWidth);

SetFillStyle(SolidFill,White);

Rectangle(30,0,606,y_down);

FloodFill(100,80,White);

SetColor(Black);

SetFillStyle(SolidFill,Black);

i := 54;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

i := i + 48;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

i := i + 72;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

i := i + 48;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

i := i + 48;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

i := i + 72;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

i := i + 48;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

i := i + 72;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

i := i + 48;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

i := i + 48;

Rectangle(i,0,i+24,75);

FloodFill(i+5,5,Black);

Line(30,0,30,100);

Line(150,0,150,100);

Line(318,0,318,100);

Line(438,0,438,100);

Line(606,0,606,100);

Line(30,100,606,100);

i := 66;

repeat

Line(i,100,i,75);

Line(i + 48,100,i + 48,75);

g := i + 120;

Line(g,100,g,75);

Line(g + 48,100,g + 48,75);

Line(g + 96,100,g + 96,75);

i := i + 288;

until i > 400;

SetColor(Green);

SetTextStyle(DefaultFont,HorizDir,2);

OutTextXY(42,78,'Z');

OutTextXY(84,78,'X');

OutTextXY(126,78,'C');

OutTextXY(162,78,'V');

OutTextXY(204,78,'B');

OutTextXY(252,78,'N');

OutTextXY(294,78,'M');

OutTextXY(60,54,'S');

OutTextXY(108,54,'D');

OutTextXY(180,54,'G');

OutTextXY(228,54,'H');

OutTextXY(276,54,'J');

OutTextXY(42+288,78,'Q');

OutTextXY(84+288,78,'W');

OutTextXY(126+288,78,'E');

OutTextXY(162+288,78,'R');

OutTextXY(204+288,78,'T');

OutTextXY(252+288,78,'Y');

OutTextXY(294+288,78,'U');

OutTextXY(60+288,54,'2');

OutTextXY(108+288,54,'3');

OutTextXY(180+288,54,'5');

OutTextXY(228+288,54,'6');

OutTextXY(276+288,54,'7');

SetTextStyle(DefaultFont,HorizDir,1);

OutTextXY(400,300,'ESC - Exit');

SetTextStyle(DefaultFont,HorizDir,2);

end;

procedure select1; {prosta9 igra na fortepiano}

begin

repeat

while keypressed do ch := readkey;

ch := ReadKey;

case ch of

'z':

begin

sound_let(42,78,261, 'Z');

end;

's':

begin

sound_let(60,54,277,'S');

end;

'x':

begin

sound_let(84,78,293,'X');

end;

'd':

begin

sound_let(108,54,311,'D');

end;

'c':

begin

sound_let(126,78,329,'C');

end;

'v':

begin

sound_let(162,78,349,'V');

end;

'g':

begin

sound_let(180,54,369,'G');

end;

'b':

begin

sound_let(204,78,392,'B');

end;

'h':

begin

sound_let(228,54,415,'H');

end;

'n':

begin

sound_let(252,78,440,'N');

end;

'j':

begin

sound_let(276,54,466,'J');

end;

'm':

begin

sound_let(294,78,493,'M');

end;

'q':

begin

sound_let(42+288,78,523, 'Q');

end;

'2':

begin

sound_let(60+288,54,554,'2');

end;

'w':

begin

sound_let(288+84,78,587,'W');

end;

'3':

begin

sound_let(288+108,54,622,'3');

end;

'e':

begin

sound_let(126+288,78,659,'E');

end;

'r':

begin

sound_let(162+288,78,698,'R');

end;

'5':

begin

sound_let(288+180,54,739,'5');

end;

't':

begin

sound_let(288+204,78,784,'T');

end;

'6':

begin

sound_let(288+228,54,830,'6');

end;

'y':

begin

sound_let(288+252,78,880,'Y');

end;

'7':

begin

sound_let(288+276,54,932,'7');

end;

'u':

begin

sound_let(288+294,78,987,'U');

end;

end;

until ch = #27;

closegraph;

end;

procedure select2; {pri nazhatii klaviwi zapisyet v fail}

var i,j : integer;

begin

for i := 1 to k1 do

mas1[i] := ' ';

k1 := 0;

for i := 1 to k2 do

mas2[i] := ' ';

k2 := 0;

repeat

while keypressed do ch := readkey;

ch := ReadKey;

case ch of

'z':

begin

sound_let(42,78,261, 'Z');

mas1[k1] := 'Z';

mas2[k2] := 'C';

k1 := k1 + 1;

k2 := k2 + 1;

end;

's':

begin

sound_let(60,54,277,'S');

mas1[k1] := 'S';

mas2[k2] := 'C';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

'x':

begin

sound_let(84,78,293,'X');

mas1[k1] := 'X';

mas2[k2] := 'D';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'd':

begin

sound_let(108,54,311,'D');

mas1[k1] := 'D';

mas2[k2] := 'D';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

'c':

begin

sound_let(126,78,329,'C');

mas1[k1] := 'C';

mas2[k2] := 'E';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'v':

begin

sound_let(162,78,349,'V');

mas1[k1] := 'V';

mas2[k2] := 'F';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'g':

begin

sound_let(180,54,369,'G');

mas1[k1] := 'G';

mas2[k2] := 'F';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

'b':

begin

sound_let(204,78,392,'B');

mas1[k1] := 'B';

mas2[k2] := 'G';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'h':

begin

sound_let(228,54,415,'H');

mas1[k1] := 'H';

mas2[k2] := 'G';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

'n':

begin

sound_let(252,78,440,'N');

mas1[k1] := 'N';

mas2[k2] := 'A';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'j':

begin

sound_let(276,54,466,'J');

mas1[k1] := 'J';

mas2[k2] := 'A';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

'm':

begin

sound_let(294,78,493,'M');

mas1[k1] := 'M';

mas2[k2] := 'B';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'q':

begin

sound_let(42+288,78,523, 'Q');

mas1[k1] := 'Q';

mas2[k2] := 'C';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'2':

begin

sound_let(60+288,54,554,'2');

mas1[k1] := '2';

mas2[k2] := 'C';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

'w':

begin

sound_let(288+84,78,587,'W');

mas1[k1] := 'W';

mas2[k2] := 'D';

k1 := k1 + 1;

K2 := k2 + 1;

end;

'3':

begin

sound_let(288+108,54,622,'3');

mas1[k1] := '3';

mas2[k2] := 'D';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

'e':

begin

sound_let(126+288,78,659,'E');

mas1[k1] := 'E';

mas2[k2] := 'E';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'r':

begin

sound_let(162+288,78,698,'R');

mas1[k1] := 'R';

mas2[k2] := 'F';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'5':

begin

sound_let(288+180,54,739,'5');

mas1[k1] := '5';

mas2[k2] := 'F';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

't':

begin

sound_let(288+204,78,784,'T');

mas1[k1] := 'T';

mas2[k2] := 'G';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'6':

begin

sound_let(288+228,54,830,'6');

mas1[k1] := '6';

mas2[k2] := 'G';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

'y':

begin

sound_let(288+252,78,880,'Y');

mas1[k1] := 'Y';

mas2[k2] := 'A';

k1 := k1 + 1;

k2 := k2 + 1;

end;

'7':

begin

sound_let(288+276,54,932,'7');

mas1[k1] := '7';

mas2[k2] := 'A';

k1 := k1 + 1;

K2 := k2 + 1;

mas2[k2] := '#';

k2 := k2 + 1;

end;

'u':

begin

sound_let(288+294,78,987,'U');

mas1[k1] := 'U';

mas2[k2] := 'B';

k1 := k1 + 1;

k2 := k2 + 1;

end;

#27:

begin

WriteToFile(ABC1,ABC2);

end;

end;

until ch = #27;

closegraph;

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Створення синтезатора мови за параметром "чіткість". Повний синтез мови за правилами. Обробка вихідного звуку. Опис головного вікна програми. Генерація проміжків між фонемами. Якість звуку та підбір фонем. Відтворення та збереження мови. Системні вимоги.

    курсовая работа [701,8 K], добавлен 27.11.2010

  • Методи поліпшення растрових зображень. Параметри виду, буфер глибини, джерело світла в бібліотеці Opengl. Створення тривимірної фігури та забезпечення її повороту за допомогою Opengl, виконання операції масштабування з використанням клавіші "+" та "-".

    контрольная работа [139,4 K], добавлен 12.09.2009

  • Розробка програми-емулятора для заданої навчальної електронної обчислювальної машини, яка в спрощеному виді відображає структуру реальної машини. Формати представлення інформації та команд. Програмування формул. Циклічна програма з розгалуженням.

    курсовая работа [88,4 K], добавлен 27.08.2012

  • Запуск на виконання програм. Особливості роботи з об’єктами файлової системи. Поняття, сутність і методика користування інформаційними і діалоговими вікнами. Основні "гарячі клавіші" та їх використання. Призначення елементів керування діалоговими вікнами.

    конспект урока [82,8 K], добавлен 03.01.2010

  • Перехід у захищений режим. Програма яка виводить на екран відомості про тип процесора і виводить вміст регістру флагів і іншу інформацію о системі. Завершення циклу чекання натиску клавіші. Масковані і немасковані переривання. Вихід до реального режиму.

    курсовая работа [34,8 K], добавлен 14.02.2009

  • Розробка програми для розрахунку норм вектору. Процедури множення матриці на матрицю, сумування матриць, віднімання векторів. Функція множення матриці на вектор. Обчислення евклідової норми вектора. Створення зручного інтерфейсу для користувача.

    курсовая работа [397,6 K], добавлен 13.03.2011

  • Створення програми, яка друкує в вікно інформацію про натискання клавіш на клавіатурі в таблицю. Функція виведення назви отриманого програмою повідомлення від клавіатури та певних додаткових даних. Обробка інформації, неопрацьованої віконною процедурою.

    лабораторная работа [17,9 K], добавлен 14.05.2011

  • Розробка резидентної програми на асемблері, яка дозволить перехопити зміст текстового та графічного екрану у файл. Виникнення проблеми нереентерабельності ДОС. Визначення поточного режиму екрану і спосіб запису. Графічне заповнення структури BMP файла.

    курсовая работа [13,2 K], добавлен 12.08.2009

  • Програма Txtprint.com для друку на принтері вибіркового тексту з екрану. Обґрунтування вибору принципу розробки та методики побудови системи. Розрахунки та експерементальні матеріали, які підтверджують вірність програмних рішень, текст програми.

    курсовая работа [29,8 K], добавлен 08.08.2009

  • Розробка резидентної програми за допомогою мови асемблер, яка дозволить перехопити зміст текстового та графічного екрану у файл (відповідно TXT і BMP). Вибір та обґрунтування методу розв'язки даної задачі. Алгоритм і реалізація програми, системні вимоги.

    курсовая работа [14,9 K], добавлен 08.08.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.