![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сцены [Delphi]
Vin © (2003-01-12 15:04:00)Как разбивать игру на сцены (при создании игры с использованием DelphiX)?
cyborg (2003-01-16 00:22:00) [1]Забыл вставить цикл:
Quit:=False; //Выход из игры
Repeat
Case CurrentScene of
1 : Title;
2 : Records;
...
End;
Until Quit=True;
pasha676 Сцена бывает ещё и театральная :).
pasha676 (2003-01-15 11:02:00) [2]А я почему то думал, что сцена - это термин 3Д. То есть пространство в котором расположены 3Д объекты.
Vin (2003-01-14 13:35:00) [3]Огромное спасибо всем.
Darthman (2003-01-14 12:49:00) [4]Ага, только помни: где можно обойтись без цикла, обойдись без цикла :) тем более вложенного.
Есть еще один вариант:
Создешь перечисляемый тип (так проще для восприятия, а скорость одинковая);
cyborg (2003-01-14 12:10:00) [5]Каждая сцена - отдельная процедура.
Например сцена заставки, титры, рекорды, сама игра - получилось четыре сцены. Делаешь соответствующие процедуры, которые отрисовывают свою сцену и обрабатывают нажатия клавишь, анимацию и т.д. Заведи переменную текущей сцены, например CurrentScene. В самой программе структура примерно такая:
TYPES
...
CONST
...
VAR
...
Procedures & Functions
...
Procedure Title;
begin
end;
Procedure Records;
Begin
End;
...и прочие...
BEGIN
Инициализация видео, звука и загрузка первичных данных,
т.е. тех, которые используются во всей игре.
CurrentScene:=1;
Case CurrentSceneof
1 : Title;
2 : Records;
...
End;
Освобождение всех ресурсов, данных
и прочие завершающие действия
END.
Вот примерный скелет.
Совет: активно используй IF CASE WHILE REPEAT FORи прочие подобные операторы - это основа всех программ.
Владимир Васильев (2003-01-14 10:27:00) [6]По этой теме есть отличная статья "Using States in Your Game" на http://www.alistairkeys.co.uk/states.shtml
Реализацию OOП подхода можно также посмотреть на примере UnTitledRTS : http://www.gamedev.narod.ru/FullPackUnRTS.zip
Карлсон (2003-01-13 18:56:00) [7]знаете, я тоже к начинающим отношусь, но вот не уметь логически мыслить и пытаться программировать.....
гм...
вообще по собственному опыту, сначала надо весь фак облазить и поисковики, а только потом задавать вопрос.
извиняюсь за флейм.
Vin (2003-01-13 18:49:00) [8]За совет конечно, спасибо, но вот глумиться над чьим-то незнанием - некрасиво. Потому-то и создан этот форум, чтоб передавался опыт от мастеров к начинающим. Я-то как раз к начинающим и отношусь.
Карлсон (2003-01-13 18:27:00) [9]допустим вы объявляете класс:
TMonster = class(TImageSprite)
у класса есть конструктор
constructor Create(AParent: TSprite); override;
далее, когда описываете конструктор спрайта, просто проверяете:
constructor TMonster.Create(AParent: TSprite);
begin
if GameMod=12 then
begin
inherited Create(AParent);
end;
end;
вот и все.
также советую просто хоть немного думать...
Vin (2003-01-13 17:54:00) [10]Можно поподробней, как именно нужно дать задачу отрисовывать опред. набор спрайтов в сцене?
Карлсон (2003-01-12 15:32:00) [11]заводите переменную типа integer.
в событии таймера пишем, что если эта переменная равна допустим 1, тогда отрисовываем такой-то набор спрайтов, если она равна 2, то другой и т.п.