49091 (608919), страница 2
Текст из файла (страница 2)
Следующий оператор процедуры выбирает случайные значения и присваивает их вспомогательной переменной X. Эти действия, производятся с помощью функции Random. Дольше вступает в дело оператор выбора по случайному числу, которое присваивается переменной X, он выбирает слово, которое будет выводиться на экран. Для того чтобы сделать программу более коммуникабельной вставим в форму компонент Tpanel, поверх него растянем другой компонент Imagel, для вывода графики. С помощью процедуры image1.Picture.LoadFromFile ('fonovi.wmf') картинку, предварительно скопировав рисунок формата ‘wmf’ в текущий каталог проекта .
Создание формы |
Счетчики К:=1 Т:=0 |
Генерируем случайное слово |
З |
Рис. 3 Блок-схема процедуры FormCreate
При закрытии окна программы обрабатывается событие FormClose, которая закрывает форму программы.
Компоненты Label1 и Label2 служат для вывода информации пользователю.
Компонент Label3 содержит комментарий к текстовому окну Edit1.
Компонент Edit1 служит для ввода текстовой информации, и содержит
событие «Edit1 KeyPress». Внутри этой процедуры мы выполняем следующие действия. После ввода текста и нажатия клавиши «enter» набранный пользователем текст сравнивается со словами, которые выдает на форму генератор случайных слов. Если одно из слов совпадает с набранным в текстовом окне пользователем, то счетчику правильных ответов присваивается 1, если – нет, счетчик остается без изменения. Дальше производится проверка условия счетчика случайных слов. Если слов на форме было выведено К=30, то выдаются результаты тестирования. Причем, если пользователь набрал правильных слов более 20, ему будет предложено перейти на следующий уровень сложности. Если на форму выведено случайных слов менее 30, то слово генерируется снова. После чего программа ожидает ввода текста и нажатия клавиши «enter», т. е. повторение процедуры.
Нажата клавиша « |
Получаем текстовую переменную «M» |
С |
нет
Да
Г | Счетчику правильных ответов – T:=t+1 |
нет
да
Вывод результатов тестирования T |
Рис. 4 Блок-схема процедуры TForm1.Edit1KeyPress
К
огда пользователь нажимает на кнопку «сброс», то обрабатывается событие нажатия этой кнопки в процедуре Button2Click. В этой процедуре задаются начальные значения всех переменных программы, останавливаются таймеры, очищаются окна ввода и вывода. Так как в программе две картинки которые загружаются в одно окно, то при нажатии кнопки «сброс» снова будет загружаться картинка с файла ‘fonovi’ как и при появлении формы.
2.2.1. Тестирование на время
После выбора пользователем уровня сложности из пункта меню «на время» запускается таймер, для каждого уровня сложности установлен определенный интервал времени. Первым делом счетчиком К – количество сгенерированных слов и Т - количество правильных слов присваиваются начальные значения. После чего, как и в процедуре FormCreate генерируется случайное число и выбирается слово с помощью оператора выбора. Далее пользователь вводит текст слова и нажимает клавишу «enter» включается в работу событие «Edit1 KeyPress», которое повторяется до тех пор, пока у свойства interval таймера не закончится время. После окончания времени на экран выводятся результаты тестирования. При наборе правильных слов более 20 программа предлагает Вам перейти на следующий уровень сложности. Для того чтобы пользователь знал, сколько осталось времени до окончания теста помещаем на форму компонент Tpanel 2, который служит контейнером для других компонентов на него помещаем компонент Timer 2 и компонент Label 4. С помощью этих компонентов организован отсчет обратного времени до окончания теста. Также при выборе любого теста из выпадающего меню «на время» меняется фоновая картинка, загружается картинка часов в окно для картинок.
Таймер включен |
Генерируется случайное слово |
О |
П |
Таймер выключен |
Рис. 4 Блок-схема процедуры TimerTimer
-
2.3 Спецификация программы
Исполняемый файл программы «Научись печатать» имеет название 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 | Файлы рисунков программы | Загружаются во время работы программы |
-
2.4 Текст программы
Текст программы для формы – Form10:
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;
// переменные для подсчета кол-ва выведенных слов, правильных ответов