Delphi. Учимся на примерах - [24]

Шрифт
Интервал

Процедура 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 для пункта меню Игра→Выход:

>procedure TForm1.N4Click(Sender: TObject);

>begin

> Halt; //выход из программы

>end;

Теперь обработаем щелчок мышью на панели p1:

>procedure TForm1.p1Click(Sender: TObject);

>begin

> Label1.Caption:= 'Второй вопрос:';

> verno(); //принимаем вариант ответа

> p1.Visible:= False; //убираем первую панель

> р2.Visible:=True; //активизируем вторую панель

> vopr:= Random(4) +1; //выбираем случайный вариант ответа

> vars(vopr); //задаем вопрос

>end;

Здесь мы вначале изменяем заголовок на "Второй вопрос:", после чего принимаем вариант ответа, выбранный пользователем, вызывая процедуру verno.

Затем готовим форму ко второму вопросу: прячем первую панель и выводим вторую. Вызываем процедуру vars, которая выбирает вопрос и отображает его вместе с вариантами ответа.

Обработаем щелчок мышью на второй панели:

>procedure TForm1.p2Click(Sender: TObject);

>begin

> Label1.Caption:= 'Третий вопрос:';

> verno();

> p2.Visible:= False;

> p3.Visible:= True;

> vopr:= Random(4) + 1;


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.