Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.025 c
4-84846
sucer
2003-04-17 17:12
2003.06.26
Проблема с HOOK


1-84396
Charly
2003-06-09 14:42
2003.06.26
Мышь - управление с клавиатуры


1-84170
yaJohn
2003-06-11 11:27
2003.06.26
Алгоритм сравнения текстов


1-84152
McSimm2
2003-06-11 10:33
2003.06.26
Плавный переход цвета из одного в другой


14-84711
gn
2003-06-04 07:03
2003.06.26
голасование





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский