forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Проблема с меню (http://forum.boolean.name/showthread.php?t=100)

Dizels 18.09.2005 23:10

Вот код меню:
Код:

Function knopka(x1,x2,y1,y2,vImage);nujno v opredelenii funktsii sozdat' peremennuyu dlya kartinki
If MouseX()>x1 And MouseX()<x2 And MouseY()>y1 And MouseY()<y2 Then
DrawImage vImage,x1,y1
Return True
EndIf
End Function

Function DrawMenu(n)
DrawImage mainpict,0,0

DrawImage newg,450,300
DrawImage options,450,340
DrawImage quit,450,380

If n=1 Then
If knopka(450,590,300,330,newg2)=True Then
If MouseDown(1) Then
poloz=1

newgAlt=True;nuzhno po-drugomu nazvat' peremennuyu, potomuchto v "newg" u tebya uzhe est' kartinka
EndIf
EndIf

Если здесь не хватает какой-то части кода для понимания можете посмотреть здесь - www.forcing.nm.ru в разделе статьи

Так вот, нужно, чтобы при нажатии кнопки загрузался блицовский файл с самой игрой

SubZer0 18.09.2005 23:22

а зачем тебе такое??? это ведь будет возможно только на этапе тестирования игры, скомпилировать ты такой процесс не сможешь, другое дело если бы все бб-модули были скомпилированы в один файл (типа Include или вручную все в один файл запихать) и при нажатии на элемент меню передавалось бы управление соответствующей гаме (вызывалась функция определенной гамы)... :)

jimon 18.09.2005 23:32

Код:

Function knopka(x1,x2,y1,y2,vImage);nujno v opredelenii funktsii sozdat' peremennuyu dlya kartinki
If MouseX()>x1 And MouseX()<x2 And MouseY()>y1 And MouseY()<y2 Then
DrawImage vImage,x1,y1
..........................................
вот здесь грузи че хочеш и как хочеш
..........................................
Return True
EndIf
End Function


ps. :))

SubZer0 18.09.2005 23:38

Цитата:

Originally posted by jimon@Sep 18 2005, 09:32 PM
Код:

Function knopka(x1,x2,y1,y2,vImage);nujno v opredelenii funktsii sozdat' peremennuyu dlya kartinki
If MouseX()>x1 And MouseX()<x2 And MouseY()>y1 And MouseY()<y2 Then
DrawImage vImage,x1,y1
..........................................
вот здесь грузи че хочеш и как хочеш
..........................................
Return True
EndIf
End Function


ps. :))

Jimon! по логике вопрос был "как", а не "в какое место кода запихать процедуру загрузки"... (или мне так только показалось)... можно было написать процедуру загрузки, только мы еще не знаем что грузить, скомпиленный файл или ББ...

и по поводу твоего примера. а зачем по твоему функция knopka возвращает true в случае нажатия?? тогда стоило сделать вызов процедуры и проверять если она вернула true то грузить... :)

Dizels 19.09.2005 13:41

Цитата:

Originally posted by jimon@Sep 18 2005, 09:32 PM
Код:

Function knopka(x1,x2,y1,y2,vImage);nujno v opredelenii funktsii sozdat' peremennuyu dlya kartinki
If MouseX()>x1 And MouseX()<x2 And MouseY()>y1 And MouseY()<y2 Then
DrawImage vImage,x1,y1
..........................................
вот здесь грузи че хочеш и как хочеш
..........................................
Return True
EndIf
End Function


ps. :))

Где грузить - я знаю, а вот как грузить?
Теперь отвечу на вопрос SubZer0: грузить надо файл *.bb а потом я уже сделаю отдельный файл для компиляции(по этому вопросу я вас потом еще помучаю) ;)

SubZer0 19.09.2005 14:59

Цитата:

Originally posted by Dizels@Sep 19 2005, 11:41 AM
грузить надо файл *.bb а потом я уже сделаю отдельный файл для компиляции(по этому вопросу я вас потом еще помучаю) ;)
заранее хочу извиниться, поскольку знаю, что человек обижается если ему не даешь то, что он хочет...

а теперь ответ: такой процесс практически невозможен, такой команды нет... можно только если написать свой компилятор...

поподробнее:

при запуске кода блиц сначала запихает все файлы которые мы пишем Include "" в один, затем проверяет полученный файл на ошибки, если таковые есть, то процесс прерывается, если нет идет компиляция (преобразование нашей программы в машинный код), теперь уже запуск...

теперь смотри: когда ты находишься в игре и нажимаешь кнопку (игра в которой ты находишься уже проверена на ошибки и преобразована в машинный код), теперь нам нужно прицепить ББ-файл, но кто-ж его будет проверять на ошибки и компилировать? такой команды нет, если только написать свой мини движок который будет проверять ошибки и компилировать...

можно подгружать уже готовые EXE, которые уже проверены и откомпилены, НО это будет супер-нерациональный метод, потому, что компилятор Блиц кладет в каждый екзешник основные функции обращения к DirectX и если мы будем подгружать готовый екзешник, то получится что у нас в первом екзешнике эти функции есть и в том который подгружаем тоже есть, а они нам нужны два раза??.. получается нерациональное использование оперативной памяти...

еще раз извиняюсь, обычно мы не отвечаем отрицательно на поставленные вопросы, но в этом случае я не вижу другого решения :sorry: :sorry:

jimon 19.09.2005 23:11

я чет торможу ?!
ето зачем тебе подгружать bb файлы ?
ты хоть представляеш что будет за фича ?!

file aa.bb : "
function error()
runtimeerror ":/"
end function
"

main file : "
if ..=.. then
include "aa.bb"
end if
"

и смотрим как ето превратится после прекомпиляции : "
if ..=.. then
function error()
runtimeerror ":/"
end function
end if
"

так как в нашем случае include окажется внутри функции то получится что функция окажется внутри другой функции и произойдет error :o

просто грузи все bb файлы вначале основного и будет все :ok:

ps. :))

Dizels 19.09.2005 23:48

Тоесть мне надо все сейчас соединить в один файл? Или как? Подскажите, мне все равно что-куда пихать, лишь бы работало!Поэтому помогите пожалуйста, я так понимаю, мне сейчас надо будет в файл с меню перенести всю игру, так вот вопрос то все равно остаеться: как подгрузить(что конкретно написать)
Простите если непонятно объясняю или надоел.

impersonalis 19.09.2005 23:56

Выложи конкретно свои файлы в одном аттаче, пл3 - гляну

jimon 20.09.2005 08:45

мдя...

у тебя в файле menu.bb есть вот такой код :
Код:

function menu()
....
end function

и что же тебе мешает перенести ету функцию в другой файл и ее там юзать ?

SubZer0 20.09.2005 14:12

2 Dizels

выложи, плиз, свои наработки, тогда мы точно скажем как и что делать. :)

Жека 20.09.2005 15:33

(Только теория)

Чтобы проще было работать с меню и прочим, делаешь глобальную переменную состояния игры, типа flagGameStatus. Уже есть? - Отлично.
Вводишь для себя условности относительно этой переменной, например:
если flagGameStatus равен 0 - выход из проги, 1 - главное меню, 2 - игра, 3 - игровое меню, вобщем ясно уже...

Когда твоя функция knopka вернула ИСТИНУ, ты меняешь значение этой переменной.
По значению переменной определяешь что нужно делать (выйти, рисовать меню, крутить игровой цикл и прочее)

Пример:
Запустил свою игру - flagGameStatus = 1 - меню рисуешь
Нажал кнопку Новая игра
{
flagGameStatus = 2
также грузишь первый (или другой) уровень игры, т.е. все что к нему относится
}

В главном цикле проверяешь значение flagGameStatus через IF или SELECT/CASE и делаешь соответствующие полученному значению действия...

Dizels 21.09.2005 13:27

Вложений: 2
Вот мои наработки так сказать.

Dizels 21.09.2005 16:06

И по ходу дела сразу же еще один вопрос, что нужно поменять в моем коде, чтобы игра быстрее грузилась?А то по моему мнению - она долго грузиться - секунд 10, при том, что у меня оперативы - 1ГБ

SubZer0 21.09.2005 16:49

к сожалению мы не сможем протестить код без остальных файлов (без моделей и картинок)... сделай, плиз, аттач со всеми ресурсами... :)


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

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