|
2D-программирование Вопросы, касающиеся двумерного программирования |
18.09.2005, 23:10
|
#1
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Вот код меню:
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 в разделе статьи
Так вот, нужно, чтобы при нажатии кнопки загрузался блицовский файл с самой игрой
|
(Offline)
|
|
18.09.2005, 23:22
|
#2
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
а зачем тебе такое??? это ведь будет возможно только на этапе тестирования игры, скомпилировать ты такой процесс не сможешь, другое дело если бы все бб-модули были скомпилированы в один файл (типа Include или вручную все в один файл запихать) и при нажатии на элемент меню передавалось бы управление соответствующей гаме (вызывалась функция определенной гамы)...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
18.09.2005, 23:32
|
#3
|
|
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. )
|
|
|
18.09.2005, 23:38
|
#4
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
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 то грузить...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
19.09.2005, 13:41
|
#5
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
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 а потом я уже сделаю отдельный файл для компиляции(по этому вопросу я вас потом еще помучаю)
|
(Offline)
|
|
19.09.2005, 14:59
|
#6
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Originally posted by Dizels@Sep 19 2005, 11:41 AM
грузить надо файл *.bb а потом я уже сделаю отдельный файл для компиляции(по этому вопросу я вас потом еще помучаю)
|
заранее хочу извиниться, поскольку знаю, что человек обижается если ему не даешь то, что он хочет...
а теперь ответ: такой процесс практически невозможен, такой команды нет... можно только если написать свой компилятор...
поподробнее:
при запуске кода блиц сначала запихает все файлы которые мы пишем Include "" в один, затем проверяет полученный файл на ошибки, если таковые есть, то процесс прерывается, если нет идет компиляция (преобразование нашей программы в машинный код), теперь уже запуск...
теперь смотри: когда ты находишься в игре и нажимаешь кнопку (игра в которой ты находишься уже проверена на ошибки и преобразована в машинный код), теперь нам нужно прицепить ББ-файл, но кто-ж его будет проверять на ошибки и компилировать? такой команды нет, если только написать свой мини движок который будет проверять ошибки и компилировать...
можно подгружать уже готовые EXE, которые уже проверены и откомпилены, НО это будет супер-нерациональный метод, потому, что компилятор Блиц кладет в каждый екзешник основные функции обращения к DirectX и если мы будем подгружать готовый екзешник, то получится что у нас в первом екзешнике эти функции есть и в том который подгружаем тоже есть, а они нам нужны два раза??.. получается нерациональное использование оперативной памяти...
еще раз извиняюсь, обычно мы не отвечаем отрицательно на поставленные вопросы, но в этом случае я не вижу другого решения
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
19.09.2005, 23:11
|
#7
|
|
я чет торможу ?!
ето зачем тебе подгружать 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 файлы вначале основного и будет все
ps. )
|
|
|
19.09.2005, 23:48
|
#8
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Тоесть мне надо все сейчас соединить в один файл? Или как? Подскажите, мне все равно что-куда пихать, лишь бы работало!Поэтому помогите пожалуйста, я так понимаю, мне сейчас надо будет в файл с меню перенести всю игру, так вот вопрос то все равно остаеться: как подгрузить(что конкретно написать)
Простите если непонятно объясняю или надоел.
|
(Offline)
|
|
19.09.2005, 23:56
|
#9
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Выложи конкретно свои файлы в одном аттаче, пл3 - гляну
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
20.09.2005, 08:45
|
#10
|
|
мдя...
у тебя в файле menu.bb есть вот такой код :
function menu()
....
end function
и что же тебе мешает перенести ету функцию в другой файл и ее там юзать ?
|
|
|
20.09.2005, 14:12
|
#11
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
2 Dizels
выложи, плиз, свои наработки, тогда мы точно скажем как и что делать.
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
20.09.2005, 15:33
|
#12
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
(Только теория)
Чтобы проще было работать с меню и прочим, делаешь глобальную переменную состояния игры, типа flagGameStatus. Уже есть? - Отлично.
Вводишь для себя условности относительно этой переменной, например:
если flagGameStatus равен 0 - выход из проги, 1 - главное меню, 2 - игра, 3 - игровое меню, вобщем ясно уже...
Когда твоя функция knopka вернула ИСТИНУ, ты меняешь значение этой переменной.
По значению переменной определяешь что нужно делать (выйти, рисовать меню, крутить игровой цикл и прочее)
Пример:
Запустил свою игру - flagGameStatus = 1 - меню рисуешь
Нажал кнопку Новая игра
{
flagGameStatus = 2
также грузишь первый (или другой) уровень игры, т.е. все что к нему относится
}
В главном цикле проверяешь значение flagGameStatus через IF или SELECT/CASE и делаешь соответствующие полученному значению действия...
|
(Offline)
|
|
21.09.2005, 13:27
|
#13
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Вот мои наработки так сказать.
|
(Offline)
|
|
21.09.2005, 16:06
|
#14
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
И по ходу дела сразу же еще один вопрос, что нужно поменять в моем коде, чтобы игра быстрее грузилась?А то по моему мнению - она долго грузиться - секунд 10, при том, что у меня оперативы - 1ГБ
|
(Offline)
|
|
21.09.2005, 16:49
|
#15
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
к сожалению мы не сможем протестить код без остальных файлов (без моделей и картинок)... сделай, плиз, аттач со всеми ресурсами...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:28.
|