Розробка програми-емулятора "Фортепіано"
Оформлення зручного, зрозумілого інтерфейсу та створення малюнку, на якому відображались клавіші фортепіано. Відтворення звуку при натисненні відповідної клавіші, а також замальовування тієї частини екрану, що відповідала натиснутій клавіші на клавіатурі.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 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