|
2D-программирование Вопросы, касающиеся двумерного программирования |
21.09.2005, 17:08
|
#16
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
А можете вставить свои - мои на данном этапе много весят, и поэтому передать их проблематично!Вставьте любые другие модели, я думаю у Вас много различных заготовок
|
(Offline)
|
|
21.09.2005, 20:32
|
#17
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
чесно сказать... очень сложно разобраться в коде, я не знаю какого размера объекты и где они должны стоять... короче для меня было проще написать свою маленькую реализацию подгрузки файлов игр, смотри аттач.
код главного меню:
; делаем файл первой игры как функцию
; ПРИМЕЧАНИЕ: в файле game1.bb должна отсутствовать команда END,
; иначе мы не сможем вернуться в главное меню
function game1()
include "game1.bb"
end Function
; делаем файл второй игры как функцию
; ПРИМЕЧАНИЕ: в файле game2.bb должна отсутствовать команда END,
; иначе мы не сможем вернуться в главное меню
function game2()
Include "game2.bb"
End Function
; теперь функция меню
Function mainmenu%()
определяем граф.режим и выставляем буфер
graphics3d 800,600,32,2
setbuffer BackBuffer()
; загружаем и устанавливаем шрифт
font=LoadFont("Arial",20,True,False,False)
SetFont font
; цикл меню
Repeat
; проверяем если мышка внутри первого пункта
If MouseX()>250 And MouseY()>100 And MouseX()<550 And MouseY()<150
; изменяем его цвет
Color 100,255,100
; а если еще и кнопка нажата, то запускаем игру1
If MouseDown(1)
game1():return 1:exit
; выходим из функции меню вернув положительное значение
EndIf
Else
Color 255,100,100
EndIf
; рисуем сам квадрат первого пункта меню
Rect 250,100,300,50,1
; точно так-же для второго пункта меню
If MouseX()>250 And MouseY()>250 And MouseX()<550 And MouseY()<300
Color 100,255,100
If MouseDown(1)
game2():return 1:exit
EndIf
Else
Color 255,100,100
EndIf
Rect 250,250,300,50,1
; и так-же для третьего пункта
If MouseX()>250 And MouseY()>400 And MouseX()<550 And MouseY()<450
If MouseDown(1)
; только тут нам ничего запускать не нужно, нужно только вернуть ложь
return 0:exit
EndIf
Color 100,255,100
Else
Color 255,100,100
EndIf
Rect 250,400,300,50,1
; выводим надписи меню на экран
Color 255,255,255
Text 350,117,"First game"
Text 342,267,"Second game"
Text 385,417,"Exit"
; еще если нажата ESC, то возвращаем ложь и выходим
If KeyHit(1) Then Return 0:exit
Flip
Forever
end function
; теперь главный цикл программы,
; запускаем меню пока оно не возвратит ложь, как только ложь, так сразу END
while mainmenu()
wend
end
теперь маленько поподробнее, зачем такой гемор с функцией меню спросите вы, ответ прост, функция Graphics3d очищает мир полностью, удаляет все объекты и текстуры из памяти... и чтоб это все всегда подгружалось нужно делать такую меню-функцию (не тащить-же все объекты меню (если меню 3Д например) через всю игру)
надеюсь, что тебе это поможет в твоей проблеме
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
21.09.2005, 23:52
|
#18
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Большое спасибо, я вроде разобрался
|
(Offline)
|
|
22.09.2005, 00:23
|
#19
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ну exit после return писать совсем не нужно.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
13.10.2005, 14:48
|
#20
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Это опять я
Собрался наконец, сделать альфа-версию так сказать, а для этого мне надо все скомпоновать в один файл, теоретически я все понял, что нужно сделать(Ваши объяснения на 2х страницах не прошли даром ), а вот на практике опять проблемы, я прописываю, чтобы подгружалась игра,вроде все нормально, но как только запускаю - выводит ошибку, что мол в файле который я подгружаю находяться глобальные переменные и функции, так вот вопрос, как их объявить в "главном файле" и где именно?
И еще один вопрос, мне надо, чтобы воспроизводился файл:intro.mpg как правильно об этом сказать Блитцу? )
|
(Offline)
|
|
13.10.2005, 18:30
|
#21
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
на счет видео (цитата из старого форума):
Видео проигрывается следующим обрзом:
;устанавливаем графический режим и выставляем текущим невидимый банк памяти
Graphics 640,480
SetBuffer BackBuffer()
;грузим наш фильм (путь ессно можно указать и без диска)
movie=OpenMovie("1.avi")
;запускаем цикл до нажатия ESC
Repeat
;выводим очередной кадр нашего видео
DrawMovie movie,100,100,MovieWidth(movie),MovieHeight(movie)
;переключаем банки видеопамяти, чтоб увидеть что туда нарисовала DrawMovie
Flip
Until KeyHit(1)
;закрываем видео
CloseMovie (movie)
;конец программы
end
некоторые замечания:
В функцию DrawMovie передаются пять параметров:
1. Идентификатор фильма (возвращается функцией OpenMovie)
2. X Координата левого верхнего угла просматриваемого видео
3. Y Координата левого верхнего угла просматриваемого видео
4. Ширина видео, можно установить в ручную тогда оно будет сжато или растянуто или-же можно использовать функцию MovieWidth для определения ширины видео.
5. Высота видео, точно так-же как и в ширине только функция соответственно по другому называется MovieHeight
Особенность: если в нашем случае попробовать затормозить главный цикл (написать в нем пустой цикл например), то получится отставание видео от звука... получается так, что при первом вызове функции DrawMovie она нарисует нам первый кадр нашего видео и запустит звук... звук будет воспроизводиться так, как он записан в файле а видео, по кадрам, в соответствии со следующим вызовом функции. Это нужно учитывать...
|
надеюсь тебе поможет...
что насчет меню, то попробуй выложить свои наработки, мы к сожалению не можем представить что там и как не видя кода...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
13.10.2005, 20:42
|
#22
|
Знающий
Регистрация: 07.09.2005
Сообщений: 238
Написано 2 полезных сообщений (для 2 пользователей)
|
ТО Dizels
посмотрел скиношты на вашем сайте форсинг, понравилось, давай скорее альфу выкладывай )
|
(Offline)
|
|
13.10.2005, 23:38
|
#23
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
To SubZer0: написал письмо на e-mail, надеюсь ответишь.
To axel186: спасибо за проявленный интерес!Скоро должен буду выложить!
|
(Offline)
|
|
15.10.2005, 04:18
|
#24
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Originally posted by Dizels@Oct 13 2005, 09:38 PM
To SubZer0: написал письмо на e-mail.....
|
Да, получил я письмо... посидел... посмотрел... подумал...
тут надо наверное весь код переписывать...
тут нужно соблюдать несколько правил:
1. Внутри функции нельзя определить функцию, пусть тебе любители функций и ненавистники ГОТО, говорят что что угодно, но здесь это не ООП. Здесь все функции должны лежать в главном файле.
2. Внутри функции нельзя определить глобальную переменную, все глобальные переменные должны быть объявлены в главном файле.
3. Команда Graphics3D очищает мир полностью, удаляет все загруженные объекты и картинки (текстуры)...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
08.11.2005, 11:53
|
#25
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
ОК, с меню я вроде разобрался, спасибо, а вот с проигрыванием заставки - проблемы - пишет Function not found в строке:
movie=OpenMovie("1.mpeg")
Что делать?
|
(Offline)
|
|
08.11.2005, 18:50
|
#26
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Originally posted by Dizels@Nov 8 2005, 10:53 AM
ОК, с меню я вроде разобрался, спасибо, а вот с проигрыванием заставки - проблемы - пишет Function not found в строке:
movie=OpenMovie("1.mpeg")
Что делать?
|
Возможно ( вероятно даже) у тебя старая версия Blitz.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
08.11.2005, 19:18
|
#27
|
|
или блиц иногда так лагает - перезапусти камп
или лагает visual ide - переделай файл комманд
или protean тоже так лагет
|
|
|
08.11.2005, 21:25
|
#28
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
IDE V1.66 - Linker V1.64 - Runtime V1.66
C нее можно запустить?У меня другой нет!но вроде и эта не плохо работает и меня пока устраивает, есть еще обновлениее до 1,88 но оно после переустановки системы не хочет запускаться, ошибку выбает
|
(Offline)
|
|
08.11.2005, 22:08
|
#29
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Originally posted by Dizels@Nov 8 2005, 08:25 PM
IDE V1.66 - Linker V1.64 - Runtime V1.66
C нее можно запустить?У меня другой нет!но вроде и эта не плохо работает и меня пока устраивает, есть еще обновлениее до 1,88 но оно после переустановки системы не хочет запускаться, ошибку выбает
|
ОГО :o
вот это антиквариат. Обновляй.
Что интересно - хелп новый, а компилер старый, обычно, встречал наоборот.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:32.
|