Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 18.09.2005, 17:51   #1
Dizels
 
Сообщений: n/a
Вот у меня вопросик появился - сделать следущим образом:
есть папка - music, в ней храниться определенное количество файлов в .mp3 формате(количество меняеться)Так вот, как сделать, чтобы Блитц открывал все что там есть, и проигрывал в случайном порядке?
 
Ответить с цитированием
Старый 18.09.2005, 18:07   #2
alcosholik
 
Сообщений: n/a
Тебе нужно посмотреть описание использования команды NextFile$ в хелпе или >здесь<.
 
Ответить с цитированием
Старый 18.09.2005, 18:21   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Смущение

SeedRnd(MilliSecs())

Global music_channel%
;Global counter

Function SelectRandMusic(DIR$)
	Local counter%=0
	Local channel
	Local dir_h%=ReadDir(DIR$)
	While True
 *file$=NextFile$(dir_h)
 *If Upper$(Right(file$,3))="MP3"
 *	counter=counter+1
 *EndIf
 *If file$="" Exit
	Wend
	CloseDir dir_h
	Print "files="+counter
	Local iR%=Rand(1,counter%)
	If Not counter Return False
	counter=0
	dir_h%=ReadDir(DIR$)
	While True
 *file$=NextFile$(dir_h)
 *If Upper$(Right(file$,3))="MP3" 
 *	counter=counter+1
 *	If counter%=iR
 * *Print "select - "+IR+" = "+file$
 * *channel=PlayMusic(DIR$+"\"+file$)
 *	Exit
 *	EndIf
 *EndIf
	Wend
	Return channel
End Function

SelectRandMusic("music")
While Not KeyHit(1)
Wend
End
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 20.09.2005, 15:20   #4
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Замечание: если содержимое папки МЬЮЗИК меняется только ДО (после) запуска игры, то лучше сделать массив, в котором хранить ПУТИ к файлам и с ним работать (как путь найти impersonalis разъяснил выше).
А то перебирать ВСЕ файлы поновой, чтоб что-то выбрать....
(Offline)
 
Ответить с цитированием
Старый 20.09.2005, 18:50   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Originally posted by Жека@Sep 20 2005, 01:20 PM
Замечание: если содержимое папки МЬЮЗИК меняется только ДО (после) запуска игры, то лучше сделать массив, в котором хранить ПУТИ к файлам и с ним работать (как путь найти impersonalis разъяснил выше).
А то перебирать ВСЕ файлы поновой, чтоб что-то выбрать....
Не только по причине изменеия кол-ва файлов я использвоал этот алгоритм - кэшировать фоновую музыку это очччень накладно и неоправдано. На то пошло - надо юзать не массив, а типы.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 20.09.2005, 19:12   #6
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Если файлов много, то возможны задержки при вызове функции.
Или нет?
Типы... Массив удобнее: PlayMysic (musicList$(Rand(MAX_KOLVO_MUSIC)))

Пусть Dizels использует типы, или весь твой код, а я буду массив!
(Offline)
 
Ответить с цитированием
Старый 20.09.2005, 21:44   #7
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Как насчет такого варианта.
Позволяет избежать тормозов в главном цикле цикле и знаменитых глюков команды PlayMusic за счет повышения времени загрузки.
Dir$="D:\KrutajaGama\Music" 
CheckDir=ReadDir(Dir$) 
File$="*"
NFiles=0
While File$<>""
   File$=NextFile$(CheckDir) 
   If FileType(Dir$+"\"+File$) = 1 Then NFiles=NFiles+1
Wend
CloseDir CheckDir 

Dim Music(NFiles)

CheckDir=ReadDir(Dir$) 
File$="*"
NFile=0
While File$<>""
   File$=NextFile$(CheckDir) 
   If FileType(Dir$+"\"+File$) = 1 Then Music(NFile)=LoadSound(Dir$+"\"+File$)
Wend
CloseDir CheckDir 

While Not KeyHit(1)
   If ChannelPlaying(ChnlMusic)=0 then ChnlMusic=PlaySound(Music(Rnd(NFiles)))
Wend
End
(Offline)
 
Ответить с цитированием
Старый 20.09.2005, 22:06   #8
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Diplomat, а сколько памяти ест музыка? Столько же, сколько на ХДД? Если у меня 20 треков, то это будет весить около 50-70 мб, и все это в память толкать?!

Не знаю как у вас, а у меня команда ChannelPlaying() тормозит, поэтому я вызываю ее 1 раз за 2-5 секунд, чаще смысла нет.
Тогда все ок, а если каждый раз при проходе цикла звать, то тормозит

Я массив так же "делаю", но вместо хендлов загоняю пути к файлам...
(Offline)
 
Ответить с цитированием
Старый 20.09.2005, 22:21   #9
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
это будет весить около 50-70 мб, и все это в память толкать?!
Да, плата за скорость работы и гарантию отсутствия глюков с PlayMusic на другой машине...
А насчет памяти- то 70 метров- это перегиб. Ну пусть 5 треков МР3- это 50Мб максимум... При обьеме оперативы в 1Гиг (ну или даже 256Мб) это условие перестает играть каку-либо роль...
Другое дело, что длинный трек может грузиться 1-5 секунд, а это уже серьезный недостаток...
(Offline)
 
Ответить с цитированием
Старый 20.09.2005, 22:23   #10
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Originally posted by Жека@Sep 20 2005, 08:06 PM
а сколько памяти ест музыка?
музыка подвергается раскодировке в нормальный для звуковой карты формат, а именно ADPCM wav... и проверить сколько это будет весить можно например виндосовским менеджером задач
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 20.09.2005, 22:33   #11
jimon
 
Сообщений: n/a
видимо воспроизводить потоково несудьба :o
 
Ответить с цитированием
Старый 20.09.2005, 22:47   #12
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Originally posted by jimon@Sep 20 2005, 08:33 PM
видимо воспроизводить потоково несудьба :o
а ты что, хочешь, чтоб игра еще тормозила из-за раскодировки??

по-моему было-бы глупо...
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 20.09.2005, 23:17   #13
jimon
 
Сообщений: n/a
мдя... когда ты слушаеш winamp (или че там еще) и устанавливаеш прогу , сидиш в аське , мучаеш paint то у тебя музычка тормозит ?!

есть такое заветное слово - буферизация

притом я же неговорил декодировать музыку в блице - для етого есть нормальные либы bass.dll например )
 
Ответить с цитированием
Старый 20.09.2005, 23:20   #14
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Originally posted by jimon@Sep 20 2005, 09:17 PM
когда ты слушаеш winamp (или че там еще) и устанавливаеш прогу , сидиш в аське , мучаеш paint то у тебя музычка тормозит ?!
а, ну да, если игрушка у тя такая, что кушает ресурсов меньше чем пайнт, то тогда я молчу...
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 21.09.2005, 08:45   #15
jimon
 
Сообщений: n/a
для раскодировки надо примерно 1-3 метра озу... может даже меньше (смотря какой буфер поставиш)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
моя музыка Coks Личное творчество 0 02.03.2008 12:11


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com