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=4554)

AndruXa 24.09.2007 15:55

От меню к геймоверу
 
Чет я не понял прикола в блице:4to: У меня код состоит из 3 частей(лейблов) .startmenu: .game: .endmenu: поочередно расположенных в коде

в .startmenu: написано If нажата маус(1) then goto .game:
а в .game: написано if life=0 then goto .endmenu:
В случае из меню в игру все окей
а из игры в геймовер пишет ошибку в строке if life=0 then goto .endmenu:
типа лейбл не рабочий. Объясните пожалста в чем разница:4to:

dimanche13 24.09.2007 16:17

Re: От меню к геймоверу
 
goto Класс! Посмотри у импера в подписи. А вообще я тебе скажу попробуй обойтись без гото.

IGR 24.09.2007 16:52

Re: От меню к геймоверу
 
в даном случее юзай CASE !!
select gamemode
case startmenu
...
case game
...
case endmenu
...
end select

в каждом из них прописуй то что тебе нужно !!

Chrono Syndrome 24.09.2007 17:24

Re: От меню к геймоверу
 
Цитата:

goto Класс!
Ну, с ними надо просто знать меру).

AndruXa 24.09.2007 18:04

Re: От меню к геймоверу
 
А как - же без лейблов произвести очистку игры при выходе в гейм овер. Надо будит все переменные и объекты удолять а если их около 80 штук??????? Гораздо проще очистить лейбл просто

Horror 24.09.2007 18:26

Re: От меню к геймоверу
 
Гото это оттой)

напиши функцию DelObJects() в которой удалешьь все объекты
а там удали объекты
потом Покажи надпись Геймовер

Цитата:

А как - же без лейблов произвести очистку игры при выходе в гейм овер. Надо будит все переменные и объекты удолять а если их около 80 штук??????? Гораздо проще очистить лейбл просто
чето не понял) а если ты на метку перейдешь)
а объекты уже загружены! то как ты перейдя на метку удалишь объекты?

jimon 24.09.2007 18:28

Re: От меню к геймоверу
 
AndruXa
локальные переменые сами удалятся
обьекты надо предварительно удалить типа DeleteEntity и тд (уже не помню какие именно)
и все

просто goto щитается дурным тоном в программировании

AndruXa 24.09.2007 18:41

Re: От меню к геймоверу
 
Цитата:

просто goto щитается дурным тоном в программировании
А есть какое-нибудь объяснение этому, он глючит, или что????7

Данил 24.09.2007 18:51

Re: От меню к геймоверу
 
Просто это зло... :)

moka 24.09.2007 19:08

Re: От меню к геймоверу
 
Обычно в школах, за него ставят минусы, т.к. это якобы плохая манера кодинга, я же его юзаю редко, когда без него никак просто, но всегда можно буз него обойтись. Да и хз почему его не любят =)

jimon 24.09.2007 19:11

Re: От меню к геймоверу
 
в двух словах : goto нарушает читабельность кода :)
в принципе оно не тормозит, но потом в 95% случаев приходится
в тупую переписывать код из-за goto

Данил 24.09.2007 19:13

Re: От меню к геймоверу
 
НЕдавно копался в школьных компах.. и нашел QBASIC.. и там было куча примеров.. и очень большая куча GOTO.. это ужс.. так и не смог разобратся , что к чему..

AndruXa 24.09.2007 20:07

Re: От меню к геймоверу
 
Ладно, ладно убедили, не буду использовать гото.:@ Может кто подскажет, как создать функцию очистки. Надо удалять объекты, ф-ции(если да, то какие, отвечающие за цикл или за инициализацию графики или и те и другие), переменные, или все вместе взятое.
И на скоко я понимаю исп. команду delete:)

ЛысыЙ_Чук-Иванчук 24.09.2007 22:03

Re: От меню к геймоверу
 
Проще все в функциях!!!
И в нужный момент объновълять нужные функциии!!!

JoKeR_13 28.09.2007 12:53

Re: От меню к геймоверу
 
при использовании GOTO тяжело отлажевать код (сечь скочки), хотя на асемблере без ентого гото ни как

HolyDel 28.09.2007 22:40

Re: От меню к геймоверу
 
Пиши все ф функциях.
всымсле ети особые режимы

Bagration 17.10.2007 19:20

Re: От меню к геймоверу
 
У меня вопрос к спецам, как сделать что при переходе из меню в игру все файли меню (изображение фона, кнопки) удалялись, но потом что бы при переходе из игры в меню они как бы обратно подгружались
Архитектура кода у меня такая:
Код:

Repeat
If gamemode=1 Then ; а gamemode изначально равен одному то есть меню

                main_menu_fone() ;это функция загрузки изображения фона
               
                knopka_exit() ;функция кнопки выхода
                knopka_credits() ;кнопки авторы
                knopka_options() ;кнопки настройки
                knopka_game() ;кнопки начать игра, в этой функции при нажатии на лев.кнопку мишы переходит в gamemode=2 то есть в игру и удалить файлы фона и кнопок
                cursor() ;загрузка курсора
                hot_keys() ; а это горячие клавиши
End If
If gamemode=2 Then ;это как раз после нажатия на кнопку начать игру в меню
                GUI() ;это экранная рамка
                gui_knop() ;это кнопка нажав на которую можна перейти обратно в gamemode=1 то есть в меню
                cursor() ;загрузка курсора
End If
        Flip
       
Until KeyDown(56) And KeyDown(62)
End

У меня есть функция которая удаляет все файлы , она вызывается при нажатии на Начать игру.
Если не удалять файлы после перехода то все тип-топ, можна из меню в игру и обратно хоть до посинения переходить.
Заранее благодарен за ответ.

H@NON 17.10.2007 19:29

Re: От меню к геймоверу
 
Корочь, сделай загрузку ресурсов меню в отдельной функции. И так же в отдельной функции выгрузку меню. Потом тебе остается сделать так:

If knopkaload=true then LoadMenu(): gamemode=1
If knopkadelete=true then DeleteMenu() : gamemenu=2

tormoz 17.10.2007 21:37

Re: От меню к геймоверу
 
Проще скрыть все объекты меню.
при загрузке меню размещать где нить низЭнько-низЭнько, чтобы гарантированно было ниже уровня

Bagration 17.10.2007 23:24

Re: От меню к геймоверу
 
Цитата:

Сообщение от tormoz
Проще скрыть все объекты меню.
при загрузке меню размещать где нить низЭнько-низЭнько, чтобы гарантированно было ниже уровня

А поподробней? Или это щутка?
Лично мне совет Ханона понравился, юзаю его, спасибо. :super:

H@NON 17.10.2007 23:31

Re: От меню к геймоверу
 
Про...
Цитата:

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

dimanche13 17.10.2007 23:40

Re: От меню к геймоверу
 
tormoz - шутит. Это крокодилы летают низнько-низэнько )))

HolyDel 17.10.2007 23:50

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

ЛысыЙ_Чук-Иванчук 18.10.2007 09:38

Re: От меню к геймоверу
 
я так и делаю, у меня мир динамично выгружается и подргужается в зависемосте где находится камера, и еще при вызове менюхи- просто отключаю обновление всех функций игровой логики.

Bagration 21.10.2007 22:35

Re: От меню к геймоверу
 
Цитата:

Сообщение от H@NON
Корочь, сделай загрузку ресурсов меню в отдельной функции. И так же в отдельной функции выгрузку меню. Потом тебе остается сделать так:

If knopkaload=true then LoadMenu(): gamemode=1
If knopkadelete=true then DeleteMenu() : gamemenu=2

Хм, чето у мя никак не получается сделать подгрузку имеджов из функции, скажем у мя есть фунция load():
Код:

Function load()
fone=LoadImage("interface\Main_Menu\Fon\fon.jpg")
menu_knop=LoadAnimImage ("interface\Main_Menu\buttons\button.jpg",257,47,0,2)
resize()
End Function

Потом эту функцию я вставляю в блок с меню:
Код:

If gamemode=1 Then ;esli gamemode=1 (menu) to
        load()
        main_menu_fone() ;gruzit' funkciu fona
        knopka_exit() ;i knopku vixoda
        knopka_credits() ;i knopku avtory
        knopka_options() ;i knopku options
        knopka_game() ;funkcia knopki igra
        menu_knop_text()
        cursor() ;i cursor
        hot_keys() ;funkcia goriachix klavish
End If

Но увы все равно пишет что ИМедж не найдет :( Я специально вначале инициализации графики не загружал имеджи через Global, потому что я хочу чтобы любая графика, любой шрифт подгружался тока тогда когда это нужно а не все сразу в начале. Например нажал юзер кнопку в меню Авторы, то подгрузиться фон меню авторов creditsfone=loadimage (""). Удалять я понел как, просто создаешь функцию с командами FreeImage и при определенном действии активируется данная функция, а вот с подгрузкой... :( Ну надеюсь я прально изьяснился.
Заранее спасибо за ответ! :)

H@NON 23.10.2007 14:05

Re: От меню к геймоверу
 
объяви переменные fone и menu_knop как глобальные, чтоб они имели доступ ко всем частям программы, а не только к функции load(), это должно помочь. Если не помогло, то смотри в дебаге на строчку на которой выскочила ошибка и перебирай каждый символ в ней=). Такую же аналогию проведи и с остальными переменными. Лучше всего все переменные которые используются в разных функциях обзывать в начале программы как глобальные, тогда их легче будет найти и исправить.


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

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