forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Общие вопросы:Завершающий этап (http://forum.boolean.name/showthread.php?t=11926)

Blender 15.02.2010 13:15

Общие вопросы:Завершающий этап
 
Вложений: 1
Вот подходя к концу написания игры появился Вопрос:
все видно на картинке..
И еще как между переходом удалить уровень 1 и загрузить уровень 2....

Я вообще не знаю с чего начинать.... игра есть, 4 уровня есть переключаю вот как:
Код:

;===============LOAD FirstLife=======
Include "firslife.bb"
;===============LOAD LEVEL1========
;Include "basicklevel1.bb"
;===============LOAD LEVEL2========
;Include "basicklevel2.bb"
;===============LOAD LEVEL3========
;Include "basicklevel3.bb"

В коде есть и финиш и когда надо пишет "уровень пройдено"...
Но как его и чего... не представляю...
И как паузу делать по нажатию ескейп???
Может кто знает пример...

EvilChaotic 15.02.2010 14:15

Ответ: Общие вопросы:Завершающий этап
 
Цитата:

;===============LOAD FirstLife=======
Include "firslife.bb"
;===============LOAD LEVEL1========
;Include "basicklevel1.bb"
;===============LOAD LEVEL2========
;Include "basicklevel2.bb"
;===============LOAD LEVEL3========
;Include "basicklevel3.bb"
Говнокод детектед.
Должна быть все 1 функция загрузки уровня, для всех уровней.

Blender 15.02.2010 14:28

Ответ: Общие вопросы:Завершающий этап
 
пример можно..??

SBJoker 15.02.2010 14:51

Ответ: Общие вопросы:Завершающий этап
 
Хочу пояснить что команда Include во всех языках работает на стадии компиляции проекта, тупо вклеивая содержимое файла в текущую позицию. В рантайме эта команда не работает т.к. её вообще не будет. И строить логику программы на манипулировании инклудами порочный круг.

Include = Copy&Paste код в текущую позицию.

Blender 15.02.2010 15:03

Ответ: Общие вопросы:Завершающий этап
 
окей
Так правельно: ?

Код:

If level=1 Then
;===============LOAD FirstLife=======********&&&^^%%$$$
CreatePlayer(-310,150,255)
finishX=-310
finishZ=255
CreateWorld("media/levels/first_life.b3d","media/levels/tex/brick8.jpg")
t.tmr=CreateTmr(0,0,45)
Dim cube.bonus(4)
CreateBonus(-130,200,65,0)
CreateBonus(90,200,250,1)
CreateBonus(-120,200,220,2)
CreateBonus(60,200,-30,3)
CreateBonus(-290,200,-130,4)
MegaJump=0
EndIf

If level=2 Then
;===============LOAD LEVEL1==========********&&&^^%%$$$
CreatePlayer(280,250,240)
finishX=280
finishZ=240
CreateWorld("media/levels/basic_level2.b3d","media/levels/tex/brick9.jpg")
t.tmr=CreateTmr(0,0,45)
Dim cube.bonus(4)
CreateBonus(285,200,-220,0)
CreateBonus(120,200,10,1)
CreateBonus(-120,200,220,2)
CreateBonus(-190,200,-220,3)
CreateBonus(180,200,145,4)
MrgaJump=0
EndIf

If level=3 Then
;===============LOAD LEVEL2==========********&&&^^%%$$$
CreatePlayer(350,200,80)
finishX=330
finishZ=75
CreateWorld("media/levels/basic_level1.b3d","media/levels/tex/brick5.jpg")
t.tmr=CreateTmr(0,0,30)
Dim cube.bonus(4)
CreateBonus(330,200,190,0)
CreateBonus(450,200,220,1)
CreateBonus(425,200,545,2)
CreateBonus(320,200,350,3)
CreateBonus(320,200,500,4)
MegaJump=1
EndIf

If level=4 Then
;===============LOAD LEVEL3==========********&&&^^%%$$$
CreatePlayer(-190,250,-50)
finishX=-190
finishZ=-60
CreateWorld("media/levels/basic_level3.b3d","media/levels/tex/brick4.jpg")
t.tmr=CreateTmr(0,0,60)
Dim cube.bonus(4)
CreateBonus(150,200,-50,0)
CreateBonus(190,200,-50,1)
CreateBonus(380,200,-50,2)
CreateBonus(775,200,-50,3)
CreateBonus(310,200,-50,4)
MegaJump=15
End If

;===============================================================================$$MAIN LOOP$$

далее идет цикл...

Harter 15.02.2010 15:08

Ответ: Общие вопросы:Завершающий этап
 
Об организации нужно было думать в самом начале. Есть масса вариантов... Можешь поискать примеры.

Поскольку всё так запущено, можно обойтись функциями LoadLevel(...) и DestroyLevel().
Также предлагаю ввести переменную GameScr и в игровом цикле (надеюсь, таковой имеется) обновлять то, что нужно в зависимости от значения: 0 - меню, 1 - игра и т. д.

Blender 15.02.2010 15:15

Ответ: Общие вопросы:Завершающий этап
 
угу все понятно... только...
вот только этими строчками у меня отличаются уровни
Код:

CreatePlayer(-190,250,-50)
finishX=-190
finishZ=-60
CreateWorld("media/levels/basic_level3.b3d","media/levels/tex/brick4.jpg")
t.tmr=CreateTmr(0,0,60)
Dim cube.bonus(4)
CreateBonus(150,200,-50,0)
CreateBonus(190,200,-50,1)
CreateBonus(380,200,-50,2)
CreateBonus(775,200,-50,3)
CreateBonus(310,200,-50,4)
MegaJump=15

Что мне писать в DestroyLevel()?

Harter 15.02.2010 15:19

Ответ: Общие вопросы:Завершающий этап
 
Цитата:

Сообщение от Blender (Сообщение 137517)
Что мне писать в DestroyLevel()?

Выгружать всё, что касается уровня. Если нужно, разумеется. Например, чтобы при загрузке второго уровня, ресурсы первого уничтожались.

firstvirus 20.02.2010 23:02

Ответ: Общие вопросы:Завершающий этап
 
Цитата:

Сообщение от Blender (Сообщение 137517)
угу все понятно... только...
вот только этими строчками у меня отличаются уровни
Код:

CreatePlayer(-190,250,-50)
finishX=-190
finishZ=-60
CreateWorld("media/levels/basic_level3.b3d","media/levels/tex/brick4.jpg")
t.tmr=CreateTmr(0,0,60)
Dim cube.bonus(4)
CreateBonus(150,200,-50,0)
CreateBonus(190,200,-50,1)
CreateBonus(380,200,-50,2)
CreateBonus(775,200,-50,3)
CreateBonus(310,200,-50,4)
MegaJump=15

Что мне писать в DestroyLevel()?

у тебя не в строчках разница, а в параметрах для функций и переменных. В функции LoadLevel(level%) принимаешь номер уровня и читаешь файл с параметрами для данного уровня или как сделал я. Загоняешь все параметры всех уровней в ini файл и читаешь оттуда. Для работы с ini есть хорошая библиотека INIFilev22. Только получается что тебе придется или тип для уровней организовать или кучку глобальных переменных. В DestroyLevel() просто обнуляй все параметры что ты загружал или удаляй объекты что ты загрузил (world:=nil; :)


Часовой пояс GMT +4, время: 08:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot