Постановка задачи. Играющему предлагаются загадки и несколько отгадок к каждой загадке, среди которых одна правильная. Играющий выбирает отгадку, а программа выдает результат: верно или неверно.
Реализация. Напишите несколько загадок в текстовом файле, например, как было показано на рис. 42. Напишите соответствующие отгадки (файл ‘Отгадки. txt’ на рис. 43). В этом проекте на каждую загадку приведено три отгадки, из которых одна верная.
Рис. 43. Файл с отгадками
Положите на форму два компонента TListBox, надписи TLabel для подсказок, TEdit для вывода отгадок к выбранной загадке и три компонента TRadioButton. При создании формы загрузите файлы с загадками в ListBox1, это видимый список, а файл с отгадками загрузите в невидимый список ListBox2.
Опишите глобальные переменные:
const n=10;
type mas=array[0..n-1]of integer;
var itog : integer; // Число правильных угадываний
nomer : integer; // Номер выбранной загадки
otvet : mas; // Массив для хранения правильных отгадок
Обработчик события OnCreate формы имеет следующий код:
procedure TForm2.FormCreate(Sender: TObject);
var f:textfile;
k:integer;
begin
ListBox1.Items.LoadFromFile('Загадки.txt');
ListBox2.Items.LoadFromFile('Отгадки.txt');
Listbox2.Visible:=false;
nomer:=0;
itog:=0;
assignfile(f,'Прав_отгадки.txt');
reset(f);
k:=0;
while (not eof(f)) and (k<n) do
begin
readln(f,otvet[k]);
k:=k+1;
end;
closefile(f);
end;
Чтобы выбрать загадку, кликнете мышью на ней. Событие OnMouseDown на списке ListBox1 имеет такой код:
// Соответствующая строка с отгадками копируется в окно редактора
Edit1.Text:=Listbox2.Items[nomer];
end;
end;
end;
Осталось выбрать отгадку и сравнить с правильным ответом. Откройте события компонента RadioButton1 и найдите событие OnClick. Справа кликните на стрелочку и в выпадающем списке выберите RadioButtonClick, а затем сделайте двойной клик. Delphi автоматически создаст в тексте модуля процедуру TForm2.RadioButtonClick(Sender: TObject) – обработчик данного события. Аналогичные действия надо проделать с каждым компонентом RadioButton2 и RadioButton3. Обработчик будем одним и тем же для всех трех переключателей. Параметр Sender – один из компонентов RadioButton.