Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сцены [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, то другой и т.п.


Наверх

Титульная страница Поиск, карта сайта Написать письмо