Генерируется случайное слово |
Ожидание ввода текста |
Процедура нажатия клавиши “enter” |
Таймер выключен |
Рис. 4 Блок-схема процедуры TimerTimer
Исполняемый файл программы «Научись печатать» имеет название PEZATAITE.EXE. Его работоспособность не зависит от расположения на диске. Необходимо, чтобы файлы, прилагающиеся к программе, находились в указанных каталогах. Наименования файлов входящих в проект и краткая информация об их содержании отображены в таблице 2.
Таблица 2
Наименование | Обозначение | Примечание |
pezataite.dof | Файл параметров проекта | Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы |
pezataite.dpr | Файл проекта | Связывает все файлы, из которых состоит приложение |
pezataite.cfg | Файл, содержащий настройки проекта | Содержит информацию о том, какие окна открыты и в каких позициях они расположены. |
pezataite.res | Файл ресурсов | Содержит пиктограммы, графические изображения |
Unit1.pas | Файл программного модуля для формы Form1 | Определяет функциональность формы Form1 |
Unit1.dfm | Файл формы Form1 | Содержит список свойств всех компонентов, включённых в форму Form1 |
Unit1.dcu | Объектный файл для Unit1.pas | Откомпилированная версия Unit1.pas |
fonovi.bmp budilnik.bmp | Файлы рисунков программы | Загружаются во время работы программы |
Текст программы для формы – Form1[2]:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel; // для вывода случайно сгенерированных слов
Edit1: TEdit; // для ввода текста с клавиатуры
Button1: TButton; // завершение работы с программой
Label2: TLabel; // вывод количества правильно набранных слов
MainMenu1: TMainMenu; // меню работы программы на время
N1: TMenuItem; // выпадающий список
Timer1: TTimer; // временной таймер
N2: TMenuItem; // тест на время для новичков
N3: TMenuItem; // тест на время – средняя скорость
N4: TMenuItem; // тест на время для профессионалов
Button2: TButton; // сброс значений
Label3: TLabel; // комментарий
Panel1: TPanel; // контейнер
Image1: TImage; // окно для загрузки картинок
Panel2: TPanel; // контейнер
Label4: TLabel; // вывод отсчета обратного времени
Timer2: TTimer;
// при появлении формы выводится случайно сгенерированное слово
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObect); // обр. кнопки "завершить"
procedure Timer1Timer(Sender: TObject); // обр. таймер
// обр. Нажатия клавиши "enter"
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure N2Click(Sender: TObject); //
procedure N3Click(Sender: TObject); // три положения скорости таймера
procedure N4Click(Sender: TObject); //
procedure Button2Click(Sender: TObject); // обр. Кнопки сброс
procedure Timer2Timer(Sender: TObject); // отсчет обратного времени
private
{ Private declarations }
public
{ Public declarations }
end;
// объявление глобальных переменных и констант
var
Form1: TForm1;
// переменные для подсчета кол-ва выведенных слов, правильных ответов
// и для оператора выбора генерации случайных слов
vremi,o,k,t, x:integer;
m:string; // присваивается значение текста введенного пользователем
// именованные константы для генератора случайных слов
const
prob='диван';
f='кровать';
n='картина';
h='стенка';
u='солнышко';
y='компьютер';
l='принтер';
d='ковер';
r='пожар';
qq='игрушка';
ww='дверь;
ee='плита';
rr='книга';
tt='уроки';
yy='кактус';
uu='дискотека';
ii='кухня';
oo='сосна';
pp='зеркало';
aa='куртка';
ss='173042';
dd='935862';
ff='0.4789';
gg='1,9,53';
hh='с:\юзер';
jj='(2359)' ;
kk='2*7=14';
ll='сколько?';
zz='12+965';
xx='500-25';
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); // процедура создания формы
begin
image1.Picture.LoadFromFile ('fonovi.wmf') ; // загружаем картинку
randomize; //вывоз проц. ген. Чисел
k:=1; t:=0; // счетчик слов – сгенерированных и правильно набранных
x:=random (30)+1; //генерируем случ. числа
case x of // выбор случайного слова из предложенных
1: label1.Caption := prob;
2:label1.Caption:= h ;
3:label1.Caption:= u;
4: label1.Caption:= f;
5:label1.Caption:= y;
6:label1.Caption:= l;
7:label1.Caption:= d;
8:label1.Caption:= n;
9:label1.Caption:= r;
10:label1.Caption:=qq ;
11:label1.Caption:= ww;
12:label1.Caption:= ee;
13:label1.Caption:=rr ;
14:label1.Caption:=tt ;
15:label1.Caption:=yy ;
16:label1.Caption:=uu ;
17:label1.Caption:=ii ;
18:label1.Caption:= oo;
19:label1.Caption:=pp;
20:label1.Caption:=aa;
21:label1.Caption:=ss;
22:label1.Caption:=dd;
23:label1.Caption:=ff;
24:label1.Caption:=gg;
25:label1.Caption:=hh;
26:label1.Caption:=jj;
27:label1.Caption:=kk;
28:label1.Caption:=ll;
29:label1.Caption:=zz;
30:label1.Caption:=xx;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Close; // закрытие приложения
end;
procedure TForm1.Timer1Timer(Sender: TObject); // обр. таймера
begin
k:=1; // счетчику случ. слов присвоили 1
o:=k ; // заменяем переменную счетчика к на 0
randomize; // вызов проц. ген. чисел
x:=random (30)+1; // генерируем случ. числа
case x of // выбор случайного слова из предложенных
1: label1.Caption := prob;
2:label1.Caption:= h ;
3:label1.Caption:= u;
4: label1.Caption:= f;
5:label1.Caption:= y;
6:label1.Caption:= l;
7:label1.Caption:= d;
8:label1.Caption:= n;
9:label1.Caption:= r;
10:label1.Caption:=qq ;
11:label1.Caption:= ww;
12:label1.Caption:= ee;
13:label1.Caption:=rr ;
14:label1.Caption:=tt ;
15:label1.Caption:=yy ;
16:label1.Caption:=uu ;
17:label1.Caption:=ii ;
18:label1.Caption:= oo;
19:label1.Caption:=pp;
20:label1.Caption:=aa;
21:label1.Caption:=ss;
22:label1.Caption:=dd;
23:label1.Caption:=ff;
24:label1.Caption:=gg;
25:label1.Caption:=hh;
26:label1.Caption:=jj;
27:label1.Caption:=kk;
28:label1.Caption:=ll;
29:label1.Caption:=zz;
30:label1.Caption:=xx;
end;
m:=edit1.Text; // присваиваем введенное пользователем текстовое значение
// сравниваем текст с константой
// при равенстве счетчику правильных слов
// присваиваем +1
if m=prob then t:=t+1;
if m=f then t:=t+1 ;
if m=n then t:=t+1 ;
if m=h then t:=t+1 ;
if m= u then t:=t+1 ;
if m= y then t:=t+1 ;
if m= l then t:=t+1 ;
if m= d then t:=t+1 ;
if m=r then t:=t+1;
if m= qq then t:=t+1;
if m= ww then t:=t+1;
if m=ee then t:=t+1;
if m=rr then t:=t+1;
if m=tt then t:=t+1;
if m=yy then t:=t+1;
if m= uu then t:=t+1;
if m=ii then t:=t+1;
if m= oo then t:=t+1;
if m= pp then t:=t+1;
if m=aa then t:=t+1;
if m=ss then t:=t+1;
if m=dd then t:=t+1;
if m=ff then t:=t+1;
if m=gg then t:=t+1;
if m=hh then t:=t+1;
if m=jj then t:=t+1;
if m=kk then t:=t+1;
if m=ll then t:=t+1;
if m=zz then t:=t+1;
if m=xx then t:=t+1;
o:=o+1; // счетчику случ. слов присвоили 1
if o=2 then // если сумма счетчика достигла 2
begin
timer1.enabled:=false; // останавливаем таймер
edit1.Visible:=false; // делаем недоступным текстовое окно
image1.Picture.LoadFromFile ('fonovi.wmf') ; // загружаем картинку
// если счетчик правильных слов превысил 20 выводим сообщение пользователю
if t>20 then label2.Caption:='блестяще количество набранных слов ='+ inttostr (t)+'переходите';
// если нет, то выводим другое сообщение
label2.Caption:='количество набранных слов = ' +inttostr (t) + ' из 20 ';
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = chr(VK_RETURN) then //если нажата клавиша "enter "
begin
m:=edit1.Text; // присваиваем введенное слово пользователем текстовое значение
// сравниваем текст с константой
// при равенстве счетчику правильных слов
// присваиваем +1
if m=prob then t:=t+1;
if m=f then t:=t+1 ;
if m=n then t:=t+1 ;
if m=h then t:=t+1 ;
if m= u then t:=t+1 ;
if m= y then t:=t+1 ;
if m= l then t:=t+1 ;
if m= d then t:=t+1 ;
if m= r then t:=t+1;
if m= qq then t:=t+1;
if m= ww then t:=t+1;
if m=ee then t:=t+1;
if m=rr then t:=t+1;
if m=tt then t:=t+1;
if m=yy then t:=t+1;
if m= uu then t:=t+1;
if m=ii then t:=t+1;
if m= oo then t:=t+1;
if m= pp then t:=t+1;
if m= aa then t:=t+1;
if m=ss then t:=t+1;
if m=dd then t:=t+1;
if m=ff then t:=t+1;
if m=gg then t:=t+1;
if m=hh then t:=t+1;
if m=jj then t:=t+1;
if m=kk then t:=t+1;
if m=ll then t:=t+1;
if m=zz then t:=t+1;
if m=xx then t:=t+1;
k:=k+1; // счетчику случ. слов присвоили 1
edit1.Text:=''; // очистим текстовое окно
edit1.SetFocus; // сделаем активным текстовое окно
x:=random (30)+1; // генерируем случ. числа
case x of // выбор случайного слова из предложенных
1: label1.Caption := prob;
2:label1.Caption:= h ;
3:label1.Caption:= u;
4: label1.Caption:= f;
5:label1.Caption:= y;
6:label1.Caption:= l;
7:label1.Caption:= d;
8:label1.Caption:= n;
9:label1.Caption:= r;
10:label1.Caption:=qq ;
11:label1.Caption:= ww;
12:label1.Caption:= ee;
13:label1.Caption:=rr ;
14:label1.Caption:=tt ;
15:label1.Caption:=yy ;
16:label1.Caption:=uu ;
17:label1.Caption:=ii ;