Сегодня: 22.05.2024г. 01:09
http://professional-pc.ucoz.ru/
Навигация
Рубрики
Категории
OC и Программное обеспечение [16]
Программирование [29]
Игры PC [11]
Интернет [13]
Железо [8]
Delphi [31]
Windows [57]
Прочее [0]
Мини-чат
 
300

Открыть большой чат в окне
в окне сайта
Реклама
Разместить кнопку
Разместить кнопку
Разместить кнопку
Создаем RPG игру: Создание квестов (Часть 3)

Снова возвращаюсь к циклу статей о создании 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 будет отвечать чисто за квесты. Ну на этом все. Надеюсь мне удастся дополнить цикл еще парочкой статей. 


Помогли ли вам наши статьи?
Всего ответов: 465


Источник:
Категория: Программирование | Добавил: BRESS (21.10.2011) | Автор: EW
Просмотров: 973 | Комментарии: 1 | Теги: | Рейтинг: 4.5/2
>Всего комментариев>: 1
1 Дивиджей  
0
Мне все очень понравилось ... статьи написаны отлично, всё для новичков!

Авторизация
Опрос
Ваш возраст
Всего ответов: 47
Online
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Статистика


CY-PR.com
© 2024 Professional-PC.Ucoz..Ru