GroupBox’ами для группировки параметров задания, Button8 – для считывания введенных
параметров задания, WebBrowser1 – для вывода «инструкции», Button32 – для возврата к
RadioButton1 – если количество слагаемых генерируется случайно.
RadioButton2 – если количество слагаемых будет вводить пользователь.
Для улучшения наглядности, если выбран RadioButton1, то SpinEdit3 не отражается на
Для улучшения наглядности, если выбран RadioButton3, то SpinEdit5 и SpinEdit6 не
отображаются, при выборе RadioButton4, SpinEdit5 и SpinEdit6 появляются на экране.
RadioButton6 – если пользователь сам выбирает, какие арифметические операции
арифметических операции: сложение, вычитание, умножение, деление, соответственно. Они
22
RadioButton6 – если выполнение задания ограничено по времени. Если пользователь
выбирает данный переключатель, то на форме становится виден SpinEdit7, который служит
для ввода времени на выполнения задания в секуднах.
RadioButton7 – выполнение задания не ограничено по времени.
GroupBox5 – для выбора способа генерации типа слагаемых.
RadioButton8 – если тип слагаемых выбирается случайно: либо целые, либо дробные.
RadioButton9 – если пользователь сам задает тип слагаемых.
CheckBox5 – слагаемые в выражении будут целые.
CheckBox6 – слагаемые в выражении будут дробные.
SpinEdit6 – для ввода количества знаков дробной части, в случае выбора CheckBox6.
После того, как пользователь задал все требуемые параметры для задания, он должен
нажать кнопку Button8. Процедура Button8Click(Sender: TObject) – считывает введенные
параметры и проверяет их допустимость. Диапазон можно задавать только указанием
сначала левой границы, а затем правой границы диапазона, если пользователь выбрал
RadioButton9, то обязательно должен указать желаемый тип слагаемых, если пользователь
выбрал RadioButton6, то обязательно должен перечислить арифметические операции.
Если пользователь установил не все параметры арифметического выражения, то
открывается диалоговое окно Form2, в текстовом поле которого содержится сообщение об
ошибке заполнения параметров выражения.
В данной процедуре заполняются поля структуры type TTask = record Make : string;
// что делаем(решаем выражение или вставляем недостающий знак); Num : integer; // кол-во
слагаемых; DFrom , DTo : integer;// диапазон; types : string; // тип слагаемых; oper : string ;
// арифм.действия; timer : boolean; // если на время; tim:integer- // для указания времени на
выполнение, Hin : boolean; // подсказка; fract : integer; // кол-во цифр после запятой; M :
integer; end, хранящая параметры задания.
После успешного формирования структуры параметров задания, кадр конструктора
закрывается и начинается выполнение второго этапа игры «вычислить выражение».
Второй этап данного задания представляет собой TabSheet5, с расположенными на
нем компонентами: Label29 – для показа арифметического выражения, которое нужно
решить, LabeledEdit5 для ввода ответа пользователя. Для защиты от ввода недопустимых
значений используется процедура Edit3KeyPress(Sender: TObject; var Key: Char). Edit1 –
поле, в которое выводится правильный ответ сгенерированного выражения.
Кнопка Button9 обрабатывается процедурой Button9Click(Sender: TObject), которая
формирует арифметическое выражение с заданными параметрами - заполняет массивы
случайными числами и знаками возможных арифметических операций. Из полученных
массивов формирует строку выражения. Затем выводит полученную строку в Label29. Если
задание выполняется на время, то включается таймер
На форме также расположена компонента Gauge1: TGauge – индикатор хода
процесса, отображает остаток времени. Компонента Timer1: TTimer – изменяет положение
Gauge1. Timer2: TTimer – отсчитывает время, выделенное для выполнения задания. После
истечения времени, процедура Timer2Timer(Sender: TObject) выводит в поле правильный
ответ, и делает недоступным поле ввода ответа.
Кнопка Button10 обрабатывается процедурой Button10Click(Sender: TObject) – делает
недоступным поле ввода ответа, вызывает функцию Calculate(sMyExpression, T.fract),
которая вычисляет арифметическое выражение, сравнивает возвращаемое данной функцией
значение с ответом пользователя. Результат сравнения выводит в Label1.