Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

Сцены   Найти похожие ветки 

 
Vin   (2003-01-12 15:04) [0]

Как разбивать игру на сцены (при создании игры с использованием DelphiX)?


 
Карлсон ©   (2003-01-12 15:32) [1]

заводите переменную типа integer.
в событии таймера пишем, что если эта переменная равна допустим 1, тогда отрисовываем такой-то набор спрайтов, если она равна 2, то другой и т.п.


 
Vin   (2003-01-13 17:54) [2]

Можно поподробней, как именно нужно дать задачу отрисовывать опред. набор спрайтов в сцене?


 
Карлсон ©   (2003-01-13 18:27) [3]

допустим вы объявляете класс:
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 18:49) [4]

За совет конечно, спасибо, но вот глумиться над чьим-то незнанием - некрасиво. Потому-то и создан этот форум, чтоб передавался опыт от мастеров к начинающим. Я-то как раз к начинающим и отношусь.


 
Карлсон ©   (2003-01-13 18:56) [5]

знаете, я тоже к начинающим отношусь, но вот не уметь логически мыслить и пытаться программировать.....
гм...
вообще по собственному опыту, сначала надо весь фак облазить и поисковики, а только потом задавать вопрос.
извиняюсь за флейм.


 
Владимир Васильев ©   (2003-01-14 10:27) [6]

По этой теме есть отличная статья "Using States in Your Game" на http://www.alistairkeys.co.uk/states.shtml

Реализацию OOП подхода можно также посмотреть на примере UnTitledRTS : http://www.gamedev.narod.ru/FullPackUnRTS.zip


 
cyborg ©   (2003-01-14 12:10) [7]

Каждая сцена - отдельная процедура.

Например сцена заставки, титры, рекорды, сама игра - получилось четыре сцены. Делаешь соответствующие процедуры, которые отрисовывают свою сцену и обрабатывают нажатия клавишь, анимацию и т.д. Заведи переменную текущей сцены, например CurrentScene. В самой программе структура примерно такая:

TYPES
...
CONST
...
VAR
...
Procedures & Functions
...
Procedure Title;
begin
end;
Procedure Records;
Begin
End;
...и прочие...
BEGIN
Инициализация видео, звука и загрузка первичных данных,
т.е. тех, которые используются во всей игре.
CurrentScene:=1;
Case CurrentScene of
1 : Title;
2 : Records;
...
End;

Освобождение всех ресурсов, данных
и прочие завершающие действия
END.


Вот примерный скелет.

Совет: активно используй IF CASE WHILE REPEAT FOR и прочие подобные операторы - это основа всех программ.


 
Darthman   (2003-01-14 12:49) [8]

Ага, только помни: где можно обойтись без цикла, обойдись без цикла :) тем более вложенного.

Есть еще один вариант:
Создешь перечисляемый тип (так проще для восприятия, а скорость одинковая);



 
Vin   (2003-01-14 13:35) [9]

Огромное спасибо всем.


 
pasha676   (2003-01-15 11:02) [10]

А я почему то думал, что сцена - это термин 3Д. То есть пространство в котором расположены 3Д объекты.


 
cyborg ©   (2003-01-16 00:22) [11]

Забыл вставить цикл:

Quit:=False; //Выход из игры
Repeat
Case CurrentScene of
1 : Title;
2 : Records;
...
End;
Until Quit=True;




pasha676 Сцена бывает ещё и театральная :).



Страницы: 1 вся ветка

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-84113
Vital
2003-06-10 18:49
2003.06.26
Вопрос по QuickReport (вопрос новичка)


14-84762
sagchat
2003-06-04 13:44
2003.06.26
CD-ROM LG 52x


14-84636
sly fox
2003-06-10 08:34
2003.06.26
Где взять готовые отчеты?


7-84805
buba
2003-04-20 11:34
2003.06.26
Как сделать так что бы мой текстовый редактор открывал ........


3-83931
st-av
2003-06-03 19:56
2003.06.26
DBGrid и DBLookupComboBox в одной упряжке