Чтение онлайн

на главную

Жанры

Delphi. Учимся на примерах

Парижский Сергей Михайлович

Шрифт:

//случайное число от 1 до 4

 vars(vopr); {передаем число процедуре vars, которая сортирует варианты ответов}

end;

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

Первое, что мы считываем, — это общее количество вопросов в базе.

Теперь очередь процедуры question_select:

procedure TForm1.question_seleсt;

label ran; //метка ran для быстрого перехода

begin

 Randomize;

ran:

 a:=Random(n); //выбираем случайный вопрос из базы

 //проверяем: не задавали ли мы этот вопрос ранее

 for i:=1 to n do

if mass[i] = a then goto ran;

 for i:=1 to n do

if mass[i] = 0 then begin

mass[i]:= а; {записываем номер вопроса, чтобы не задавать его больше }

Break;

end;

 //сбрасываем флажки со всех вариантов ответов

 an1.Checked:= False;

 an2.Checked:= False;

 an3.Checked:= False;

 an4.Checked:= False;

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);

Поделиться:
Популярные книги

Идеальный мир для Лекаря 15

Сапфир Олег
15. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 15

Младший сын князя

Ткачев Андрей Сергеевич
1. Аналитик
Фантастика:
фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Младший сын князя

Попала, или Кто кого

Юнина Наталья
Любовные романы:
современные любовные романы
5.88
рейтинг книги
Попала, или Кто кого

Имперец. Том 4

Романов Михаил Яковлевич
3. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 4

Проданная Истинная. Месть по-драконьи

Белова Екатерина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Проданная Истинная. Месть по-драконьи

Газлайтер. Том 5

Володин Григорий
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Приручитель женщин-монстров. Том 2

Дорничев Дмитрий
2. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 2

Путь Шедара

Кораблев Родион
4. Другая сторона
Фантастика:
боевая фантастика
6.83
рейтинг книги
Путь Шедара

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Возрождение Феникса. Том 1

Володин Григорий Григорьевич
1. Возрождение Феникса
Фантастика:
фэнтези
попаданцы
альтернативная история
6.79
рейтинг книги
Возрождение Феникса. Том 1

Я все еще не князь. Книга XV

Дрейк Сириус
15. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я все еще не князь. Книга XV

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Черный Маг Императора 6

Герда Александр
6. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
7.00
рейтинг книги
Черный Маг Императора 6

В теле пацана

Павлов Игорь Васильевич
1. Великое плато Вита
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
В теле пацана