
- •Министерство образования Республики Беларусь уо «Полоцкий государственный университет»
- •Курсовой проект
- •Новополоцк, 2012 содержание
- •1. Постановка целей и задач приложения 6
- •2. Разработка интерфейса и тестирование программы 8
- •Введение
- •1. Постановка целей и задач приложения
- •2. Разработка интерфейса и тестирование программы
- •2.1 Разработка интерфейса
- •2.1. Тестирование приложение
- •3.Реализация приложения
- •Список используемой литературы
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 и далее просто выбрать нужный цвет.
ЗАКЛЮЧЕНИЕ
В ходе проделанной работы была разработана программа «Клавиатурный тренажер».
Пользователи, освоившие этот тренажер в совершенстве могут спокойно приступать к непосредственному изучение слепого десятипальцевого метода печати.
Разработка данного приложения позволила мне более детально ознакомиться с некоторыми процедурами делфи, с которыми я был мало знаком ранее.
Реализованное приложение выполняет все действия, предусмотренные заданием курсового проекта. Разработанное приложение не является готовым коммерческим продуктом, но является хорошим практическим заданием для освоения относительно быстрого набора текста на клавиатуре, что собственно и является целью выполнения данного курсового проекта.