63 lines
1.9 KiB
ObjectPascal
63 lines
1.9 KiB
ObjectPascal
|
|
uses GraphWPF,Controls,Sounds;
|
|||
|
|
|
|||
|
|
function Оценка(ВерныхОтветов: integer): integer;
|
|||
|
|
begin
|
|||
|
|
case ВерныхОтветов of
|
|||
|
|
10, 9: Оценка := 5;
|
|||
|
|
8, 7: Оценка := 4;
|
|||
|
|
4..6: Оценка := 3;
|
|||
|
|
else Оценка := 2;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
begin
|
|||
|
|
Window.Title := 'Проверка таблицы умножения';
|
|||
|
|
Font.Size := 60;
|
|||
|
|
var l := LeftPanel(200);
|
|||
|
|
l.FontSize := 16;
|
|||
|
|
var sb := StatusBar;
|
|||
|
|
|
|||
|
|
var Результат := IntegerBox('Введите ответ:',0,100);
|
|||
|
|
var b := Button('Ответить');
|
|||
|
|
var КоличествоОтветов := IntegerBlock('Ответов:');
|
|||
|
|
var ВерныхОтветов := IntegerBlock('Верных ответов:');
|
|||
|
|
|
|||
|
|
var ТестОкончен := procedure → begin
|
|||
|
|
MessageBox.Show('Тест окончен.'+#10#10+'Верных ответов: ' +
|
|||
|
|
ВерныхОтветов.Value + #10#10 + 'Оценка: ' + Оценка(ВерныхОтветов));
|
|||
|
|
// Переход к следующему тесту
|
|||
|
|
ВерныхОтветов := 0;
|
|||
|
|
КоличествоОтветов := 0;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
var x, y: integer; // сомножители
|
|||
|
|
|
|||
|
|
var НарисоватьТест := procedure → begin
|
|||
|
|
Window.Clear;
|
|||
|
|
DrawText(GraphWindow.ClientRect,$'{x} × {y} = ?');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
var СледующийВопрос := procedure → begin
|
|||
|
|
(x, y) := Random2(2, 9);
|
|||
|
|
НарисоватьТест;
|
|||
|
|
end;
|
|||
|
|
СледующийВопрос;
|
|||
|
|
|
|||
|
|
b.Click := procedure → begin
|
|||
|
|
if x * y = Результат then
|
|||
|
|
begin
|
|||
|
|
sb.Text := 'Верно!';
|
|||
|
|
ВерныхОтветов += 1;
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
sb.Text := 'Неверно :(';
|
|||
|
|
end;
|
|||
|
|
КоличествоОтветов += 1;
|
|||
|
|
Результат := 0;
|
|||
|
|
if КоличествоОтветов = 10 then // Конец опроса
|
|||
|
|
ТестОкончен;
|
|||
|
|
СледующийВопрос;
|
|||
|
|
end;
|
|||
|
|
OnResize := НарисоватьТест;
|
|||
|
|
end.
|