end;
Эта процедура случайным образом выбирает вопрос. Затем выполняется проверка: не задавался ли этот вопрос ранее. Если мы нашли вопрос, который еще не был задан, то задаем его и помечаем как уже заданный, чтобы не задавать его больше в текущей сессии.
Процедура verno:
procedure TForm1.verno();
begin
if an1.Checked then
if yes = an1.Caption then balls:= balls + 1;
if an2.Checked then
if yes = an2.Caption then balls:= balls + 1;
if an3.Checked then
if yes = an3.Caption then balls:= balls + 1;
if an4.Checked then
if yes = an4.Caption then balls:= balls + 1;
end;
Здесь мы сравниваем правильный ответ с вариантом, который дал пользователь, и в случае правильного ответа пополняем счетчик правильных ответов.
Процедура vars:
procedure TForm1.vars(var variant: integer);
begin
//вызываем процедуру выбора случайного вопроса question_select();
case variant of
1:
begin
Win:= TIniFile.Create(dir2); //открываем ini-файл
//считываем вопрос
Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);
//считываем правильный вариант ответа
an1.Caption:= Win.ReadString('A', IntToStr(a), an1.Caption);
//считываем три неверных варианта к данному вопросу
an2.Caption:= Win.ReadString('W1', IntToStr(a), an2.Caption);
an3.Caption:= Win.ReadString('W2', IntToStr(a), an3.Caption);
an4.Caption:= Win.ReadString('W3', IntToStr(a), an4.Caption);
Win.Free; //освобождаем ini-файл
//помечаем первый вариант как правильный
yes:= an1.Caption;
end;
2:
begin
Win:= TIniFile.Create(dir2);
Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);
an2.Caption:= Win.Readstring('A', IntToStr(a), an2.Caption);
an1.Caption:= Win.Readstring('W1', IntToStr(a), an1.Caption);
an3.Caption:= Win.ReadString('W2', IntToStr(a), an3.Caption);
an4.Caption:= Win.ReadString('W3', IntToStr(a), an4.Caption);
Win.Free;
yes: = an2.Caption;
end;
3:
begin
Win:= TIniFile.Create(dir2);
Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);
an3.Caption:= Win.ReadString('A', IntToStr(a), an3.Caption);
an2.Caption:= Win.ReadString('W1', IntToStr(a), an2.Caption);
an1.Caption:= Win.ReadString('W2', IntToStr(a), an1.Caption);
an4.Caption:= Win.ReadString('W3', IntToStr(a), an4.Caption);
Win.Free;
yes:= an3.Caption;
end;
4:
begin
Win:= TIniFile.Create(dir2);
Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);
an4.Caption:= Win.ReadString('A', IntToStr(a), an4.Caption);
an2.Caption:= Win.ReadString('Wl', IntToStr(a), an2.Caption);
an3.Caption:= Win.ReadString('W2', IntToStr(a), an3.Caption);
an1.Caption:= Win.ReadString('W3', IntToStr(a), an1.Caption);
Win.Free;
yes:= an4.Caption;
end;
end;
end;
Здесь мы вначале запускаем процедуру выбора вопроса. Потом проверяем: какой вариант ответа является правильным. Затем считываем вопрос и варианты ответов к нему. Сортируем и отображаем все это на форме.
Обработчик события создания главной формы будет выглядеть следующим образом:
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
//получаем каталог, в котором находится наша программа
dir:= GetCurrentDir;
ss:= dir + '\comp.ini'; //путь к базе вопросов
zz:= ss;
start(); //начинаем тест
end;
Теперь создадим обработчик события главной формы OnDestroy (возникает при выходе из программы):
procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteFile('c:\base.bsd'); //удаляем расшифрованную базу
end;
Теперь обрабатываем команды меню. Обработчик события OnClick для пункта Игра→Заново:
procedure TForm1.N1Click(Sender: TObject);
begin
Randomize;
ss:= zz;
start(); //начало теста
end;
Поскольку у нас весь основной код вынесен в процедуры, теперь достаточно только вызвать процедуру начала игры.
Обработчик события OnClick для пункта меню Игра→Загрузить базу:
procedure TForm1.N2Click(Sender: TObject);
begin
Randomize;
//начинаем обзор с текущего каталога
Open1.InitialDir:= GetCurrentDir;
if not Open1.Execute then ShowMessage('Вы не выбрали файл!')
else begin
ss:= Open1.FileName; //открываем выбранный файл
zz:= ss; //запоминаем путь к базе
start(); //начинаем тест
end;
end;
Здесь мы предлагаем пользователю выбрать через диалоговое окно обзора ini– или любой другой файл, в котором содержатся зашифрованные вопросы и варианты ответов. Когда пользователь выбрал файл, мы запускаем процедуру start и, тем самым, начинаем тест.
Обработчик события OnClick для пункта меню Игра→Выход: