Снова возвращаюсь к циклу статей о создании RPG игры в Delphi и вот на носу последняя стадия: создание квестов. Над первым квестом я решил сильно не замарачиваться. Нужно будет просто дойти до замка, который мы нарисовали в прошлый раз. Никаких сложностей возникнуть не должно.
Напомню что замок расположен по координатам (64, 0). Значит игрок должен дойти до этого места и все! Но для дальнейшей игры нужно дать возможность все же закончить квест, а так же выполнять одновременно хотя бы 2 задания. Задача немного усложняется. Мы начинаем путаться в глобальных переменных... но на помощь приходит массив. Просто пронумеруем задания для каждой "ячейки" массива:
... var Form1: TForm1; attak : boolean; mission: array [1..10] of boolean; //Предположим, что у нас будет //всего 10 квестов ...
Мы имеем 10 доступных миссий. Теперь нужно при создании правильно указать, какие из них будут активны. Работаем с процедурой FormCreate:
procedure TForm1.FormCreate(Sender: TObject); var num:integer; //создание переменной для цикла begin attak:=false; for num:=2 to 10 do //цикл в результате которого mission[num]:=false; //от 2 до 10 ячейка массива будет равна False mission[1]:=true; //Первое задание равно True end;
Теперь нужно вывести текущее задание на экран. Кидаем Label1 на форму:
Для удобства создаем еще один Timer - Timer2 и прописываем для события Timer2Timer код:
procedure TForm1.Timer2Timer(Sender: TObject); begin if mission[1]=true then begin label1.Caption:='Доберитесь до замка'; //Вывод текущей миссии if (Image1.Left=64) and (Image1.Top=0) then //Условия выполнения миссии mission[1]:=false; end else Label1.Caption:='Все задания выполнены'; //Если задание неактивно end;
Выходит Timer2 будет отвечать чисто за квесты. Ну на этом все. Надеюсь мне удастся дополнить цикл еще парочкой статей.
Источник: |