Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Записка Романов 11-ТОМ.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
210.94 Кб
Скачать

3.Реализация приложения

Для осуществления работы программы мною был разработан следующий алгоритм:

begin

if MediaPlayer1.FileName <> '' then

MediaPlayer1.Play;

Form1.Focused;

Panel2.Visible := true;

Panel2.Top := 0;

Randomize;

Panel2.Caption := Chr(Random(26)+97) ;

count := 0;

uncount := 0;

x := 1;

Label1.Caption := 'Level ' + IntToStr(x);

Timer1.Enabled := true;

End.

begin

showmessage(‘Вы нажали неверную клавишу’)

Panel2.Top := Panel1.Height

Label1.Caption := 'Level ' + IntToStr(x)

Timer1.Interval := Timer1.Interval - 25

Timer1.Interval := 100

Timer1.Interval := Timer1.Interval - 250

После разработки алгоритма работы приложения и размещения в окне стартовой формы всех требуемых для нашего приложения компонентов, нужно поработать с текстом программы.

Итак, в Листинге 3.1 указан результат работы с процедурой FormKeyPress.

Листинг 3.1 – работа с процедурой FormKeyPress

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

begin

if Panel2.Caption <> key then

showmessage(‘Вы нажали неверную кнопку’);

if Panel2.Caption = key then

begin

Inc(count);

Panel2.Top := Panel1.Height;

end;

if count = x * 3 then

begin

Inc(x);

Label1.Caption := 'Level ' + IntToStr(x);

if Timer1.Interval <= 250 then Timer1.Interval := Timer1.Interval - 25

else

if Timer1.Interval <= 100 then Timer1.Interval := 100

else

Timer1.Interval := Timer1.Interval - 250;

end;

end;

Сперва указываем следующее: если пользователь нажал клавишу, которая не соответствует текущему изображению на Panel2, то ему выдаётся

информация об ошибке – в противном случаем требуемое условие выполняется и Panel2 перемещается в самый верх Panel1.

После каждых трёх правильно нажатых клавиш уровень увеличивается на 1.

Подробная работа процедуры Timer.Interval описана в алгоритме работы программы.

Компонент Button1Click предназначен для начала работы. В программе его следовало бы поместить перед описанием процедуры FormKeyPress для логичности, хотя на работу самого приложения это никак влияет.

Листинг 3.2 – работа с процедурой Button1Click

procedure TForm1.Button1Click(Sender: TObject);

begin

if MediaPlayer1.FileName <> '' then

MediaPlayer1.Play;

Form1.Focused;

Panel2.Visible := true;

Panel2.Top := 0;

Randomize;

Panel2.Caption := Chr(Random(26)+97) ;

count := 0;

uncount := 0;

x := 1;

Label1.Caption := 'Level ' + IntToStr(x);

Timer1.Enabled := true;

end;

После активации Button1Click автоматически начинает работу

компонент MediaPlayer( в частности начинает проигрываться музыкальная композиция). «Panel2.Visible := true;» - значит, что при начале работы

программы на панеле отображаются буквы. «Panel2.Top := 0;» значит, что

панель с изображением буквы не заполняется по верху в Panel2.

Функция randomize инициализирует генератор случайных символов некоторым случайным символом. «Panel2.Caption := Chr(Random(26)+97) ;» - на панеле появляются произвольные латинские буквы.

Переменная x является результатом нажатия клавиши соответствующую изображенной букве на панели.

Timer1.Enabled := true; - означает, что после начала работы приложения наш таймер также начинает работать.

Листинг 3.3 – работа с процедурой Button2Click

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Close;

end;

Процедура Button2Click предназначена для завершения работы приложения. Краткий текст этой процедуры описан в Листинге 3.3.

Листинг 3.4 – работа с процедурой MediaPlayerNotify

procedure TForm1.MediaPlayer1Notify(Sender: TObject);

begin

with MediaPlayer1 do

if NotifyValue = nvSuccessful then

begin

Notify := True;

Play;

end;

end;

Процедура Notify используется в нашем случае для бесконечного воспроизведения музыкального файла до момента, пока пользователь завершит работу с приложением. Полный текст процедуры MediaPlayerNotify

Указан в Листинге 3.4 выше.

Листинг 3.5 – работа с процедурой Timer1Timer

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Randomize;

if Panel1.Height > Panel2.Top then

Panel2.Top := Panel2.Top + 20

else

begin

Randomize;

Panel2.Caption := Chr(Random(26)+97);

Panel2.Left := Random(Panel1.Width - Panel2.Width);

Panel2.Top := 0;

Inc(uncount);

end;

end;

В Листинге 3.5 подробным образом описана работа процедуры Timer1Timer.

В var переменным x, count(выполнение условия) и uncount (невыполнение условия) присваиваем integer.

Также в окне редактора свойств объектов MediaPlayer свойство visible рекомендуется изменить в положение false (как изображено на рисунке 3.1)

Рисунок 3.1

А в окне редактора свойств объектов нашей формы свойство KeyPreview требуется изменить в положение True (рисунок 3.2). Это требуется делать если мы работаем с передачей кода клавиши в какую-либо процедуру в делфи (как в нашем случае).

Рисунок 3.2

Рисунок 3.3

Исключительно ради визуализации можно изменить цветовую окраску некоторых компонентов. Я решил изменить цвет панелей нашей основной формы. Чтобы это осуществить требуется в окне редактора свойств объектов

(смотреть рисунок 3.3) кликнуть по Color и далее просто выбрать нужный цвет.

ЗАКЛЮЧЕНИЕ

В ходе проделанной работы была разработана программа «Клавиатурный тренажер».

Пользователи, освоившие этот тренажер в совершенстве могут спокойно приступать к непосредственному изучение слепого десятипальцевого метода печати.

Разработка данного приложения позволила мне более детально ознакомиться с некоторыми процедурами делфи, с которыми я был мало знаком ранее.

Реализованное приложение выполняет все действия, предусмотренные заданием курсового проекта. Разработанное приложение не является готовым коммерческим продуктом, но является хорошим практическим заданием для освоения относительно быстрого набора текста на клавиатуре, что собственно и является целью выполнения данного курсового проекта.