|
2D-программирование Вопросы, касающиеся двумерного программирования |
02.05.2006, 21:50
|
#46
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
понял! Буду пробовать!) если что - напишу сюда)
|
(Offline)
|
|
07.05.2006, 11:43
|
#47
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Function fnMenuGame()
Repeat
mhit1= MouseHit(1)
mhit2= MouseHit(2)
EnterKey = KeyHit(28)
Delay 2
Text 0,320,"Проверка"
Flip
Until enterkey
End Function
Воткнул это в код, но цикл игры как бы продолжается, то есть например если включить ИИ, нажать esc
If KeyHit(1) fnMenuGame()
это у меня в цикле игры
ТО ии, почему-то продолжает деятельность, да и бомба взорвется, хотя визуально все "останавливается, конечно
|
(Offline)
|
|
07.05.2006, 14:34
|
#48
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Вероятно все события у тебя происходят по времени - следовательно всё "просиженное" в меню время будет учтено и обработано сразу же после возврата в игру.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
07.05.2006, 14:51
|
#49
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
да! Мне SBJoker предложил сделать так:
В цикле:
If KeyHit(1) Then
fnMenuGame
time#=MilliSecs()-period#
End If
и все остановилось)
|
(Offline)
|
|
07.05.2006, 17:57
|
#50
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
при нажатии ескейп - ВЫХОДИ из цикла игры совсем !
а не пытайся внутри цикла меню запускать (это сделать можно - но тебе проще выйти)
__________________
|
(Offline)
|
|
07.05.2006, 19:51
|
#51
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
А как совмем выйти? Я же хочу потом еще продолжить игру...
|
(Offline)
|
|
07.05.2006, 19:52
|
#52
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
А как выйти совсем? Я же хочу еще и продолжить игру!
Это будет реально?
|
(Offline)
|
|
07.05.2006, 22:46
|
#53
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Елки палки.
ну элементарно же, переменную заведи и отслеживай состояние: зашел в меню из игры - одно значение. зашел не из игры - другое.
Другую переменную выхода из меню: возврат или начало новой игры.
Если ты такой фигни придумать сам не можешь - что дальше будет ?
__________________
|
(Offline)
|
|
07.05.2006, 22:50
|
#54
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
2tormoz:
причём тут это?
Его решение - запоминать состояние времени для необходимых объектов и восстанавливать его при выходе из меню.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
08.05.2006, 02:12
|
#55
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Кстати насчет переменных это идея...может они понадобятся?
А то у меня ошибка:
Function fnMenuGame()
ButtonReturn_to_game=LoadImage ("graphics\Return_to_game.png")
Repeat
Cls
mhit1= MouseHit(1)
mhit2= MouseHit(2)
EnterKey = KeyHit(28)
DrawImage ButtonReturn_to_game ,300,100
Delay 2
If KeyHit(1)=1
ClearWorld()
Graphics 640,480,16,2
SetBuffer BackBuffer()
loadimages()
fnmainmenu()
End If
Flip
Until enterkey
End Function
Если из этого меню выйти в главное, а потом в игру, то дебаггер будет ругаться, что
DrawImage ButtonReturn_to_game ,300,100
Не сущесвует этого имеджа!
Хотя как видно из кода, я каждый раз при входе в функию, гружу этот имеждж...странно, да?
никто не знает, почему такой косяк? и как его исправить?
|
(Offline)
|
|
08.05.2006, 02:35
|
#56
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Графику инициализируй один раз !
До входа в меню:
.точка входа при смене разрешения
инит графика
. точка входа после основного цикла
лоад ресурсы меню
меню
освобождаем ресурсы меню
проверяем выход из меню переменную)
если игра - грузим ресурсы игры
если возврат в игру - не грузим
если выход из игры то ЕНД
если меняли разрешение в меню то ставим флаг(переменную) и гоу на начало
основной цикл
игра
выход из цикла
возврат в точку меню
=========
Для нормального завершения при повторной инициализации графики создай функцию очистки типов и переменных (которые нужно очистить)
Delete Each MyType - очищает весь тип MyType
__________________
|
(Offline)
|
|
08.05.2006, 11:55
|
#57
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
2Tormoz!
наверное ты не совсем разобрался с принципом работы:
1. Инициализирует графику 640 на 480 (работает главное меню)
2. Выбираем одни из 3х режимов, пишем их в файл.
* Если нажали начать новую игру:
1. Удалить все 2D картинки (проваерял лично! Утечек нет!)
2) ClearWorld
3)Инициализирует графику
4)Вызвать функцию, где все объекты игры грузятся (там у меня 3 функции)
5) если нажали esc - начать игровое меню (ну это вы знаете из приведенного здесь кода)
* если вышли совсем, то (2 раза esc)
ClearWorld()
Graphics 640,480,16,2
SetBuffer BackBuffer()
loadimages() - те, которые касаются главного меню
fnmainmenu() - само меню
Но почему-то после такого "полного" выхода, при входе в игру сразу же сробатывает fnMenuGame(), и ругается, что не может нарисовать этот долбанный имедж Хотя по идеи он должен срабатывать по нажатии, esc, разумеется!
|
(Offline)
|
|
08.05.2006, 17:06
|
#58
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Делай как я написал - схема отлажена временем.
__________________
|
(Offline)
|
|
08.05.2006, 21:22
|
#59
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Но я не совсем понял как по вашей схеме делать!?
Как я могу 1 раз инициализировать графику, если в меню она 640 на 480, а в игре - опционально!
?
|
(Offline)
|
|
08.05.2006, 21:56
|
#60
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Думаю для самой игры надо сделать новое упрощенное меню дабы не менять разрешение экрана во время игры.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:38.
|