| 
 SDL & Event - zaero -  24.01.2006 02:35
 
 Swat, мне нужна помощь. Как получить событие на SDL ? Вот пример. Мне в нем надо чтоб при стыке двух обьектов например вылазила картинка... И еще как узнать координаты обьекта?
 
 
 
Код:
 -- The question about event to Swat by zaero
 function mySDL_init_video()
 SDL.SDL_BlitSurface = SDL.SDL_UpperBlit;
 --Инициализируем SDL
 SDL.SDL_Init(SDL.SDL_INIT_VIDEO);
 --Закрываем графику DreamShell
 --DS.ds_draw_shutdown();
 --Устанавливаем видеорежим в 640x480 16 bit
 flags = SDL.bit_or(SDL.SDL_HWSURFACE, SDL.SDL_DOUBLEBUF);
 screen = SDL.SDL_SetVideoMode(640,480,16,flags);
 end
 
 function myPause_and_DS_init_video()
 --Пауза в 3 секунды
 SDL.SDL_Delay(3000);
 --Инициализируем назад графику DreamShell
 --DS.ds_draw_init();
 end
 
 function myMove_general()
 mySDL_init_video() --инициализируем SDL и выставляем видео режим
 function myMove(n,d)
 if n<500 then
 --- движение по горизонтали
 SDL.SDL_drawCircle_TG(screen, n, 240, 10, 255, 0, SDL.SDL_TG_ANTIALIAS);
 SDL.SDL_drawCircle_TG(screen, n-30, 240, 10, 0, 0, SDL.SDL_TG_ANTIALIAS);
 -- движение по вертикали
 SDL.SDL_drawCircle_TG(screen, 480, n-240, 10, -255, 0, SDL.SDL_TG_ANTIALIAS);
 SDL.SDL_drawCircle_TG(screen, 480, n-270, 10, 0, 0, SDL.SDL_TG_ANTIALIAS);
 SDL.SDL_Delay(100); -- Задаем скорость перемещения
 SDL.SDL_Flip(screen);
 end
 end;
 
 function myMove_value()
 for i=1, 500, 30 do
 n=i
 myMove(n) -- Вызываем функцию и передаем ей параметры
 end end;
 
 myMove_value() -- Вызываем функцию
 myPause_and_DS_init_video() -- пауза на 3 секунды
 end
 
 myMove_general()
 
 
 SDL & Event - SWAT -  24.01.2006 18:28
 
 Чет понаписал нифига не понять, одно в другом...
 Я немного исправил...
 И какого объекта ты хочеш узнать коордитаны?
 Если вот у этих кружков которые ты тут рисуеш... так ты же им сам задаеш координаты, ты их просто запоминай где нибудь и будеш знать где и что в данный момент находится...
 И из этих же сохраненных координат ты и будеш проверять состыковались они или нет, чтобы нарисовать картинку.
 Создай функцию которая этим будет заниматься и вставь ее в главный цикл.
 
 
 
Код:
 function mySDL_init_video()SDL.SDL_BlitSurface = SDL.SDL_UpperBlit;
 --Инициализируем SDL
 SDL.SDL_Init(SDL.SDL_INIT_VIDEO);
 --Закрываем графику DreamShell
 --DS.ds_draw_shutdown();
 --Устанавливаем видеорежим в 640x480 16 bit
 flags = SDL.bit_or(SDL.SDL_HWSURFACE, SDL.SDL_DOUBLEBUF);
 screen = SDL.SDL_SetVideoMode(640,480,16,flags);
 end
 
 function myPause_and_DS_init_video()
 --Пауза в 3 секунды
 SDL.SDL_Delay(3000);
 --Инициализируем назад графику DreamShell
 --DS.ds_draw_init();
 end
 
 
 function myMove(n)
 if n < 500 then
 --- движение по горизонтали
 SDL.SDL_drawCircle_TG(screen, n, 240, 10, 255, 0, SDL.SDL_TG_ANTIALIAS);
 SDL.SDL_drawCircle_TG(screen, n-30, 240, 10, 0, 0, SDL.SDL_TG_ANTIALIAS);
 -- движение по вертикали
 SDL.SDL_drawCircle_TG(screen, 480, n-240, 10, -255, 0, SDL.SDL_TG_ANTIALIAS);
 SDL.SDL_drawCircle_TG(screen, 480, n-270, 10, 0, 0, SDL.SDL_TG_ANTIALIAS);
 SDL.SDL_Delay(100); -- Задаем скорость перемещения
 SDL.SDL_Flip(screen);
 end
 end
 
 
 function myMove_general()
 mySDL_init_video() --инициализируем SDL и выставляем видео режим
 end
 
 
 function myMove_value()
 for i=1, 500, 30 do
 myMove(i) -- Вызываем функцию и передаем ей параметры
 end
 end
 
 
 myMove_general()
 myMove_value() -- Вызываем функцию
 myPause_and_DS_init_video() -- пауза на 3 секунд
 Да и у тебя и так заканчивается цикл когда 2 кружка стыкуются:))))
 Рисуй картинку после этого и все гггггг
 
 
 SDL & Event - zaero -  25.01.2006 02:19
 
 Я уже и сам разобрался =)) Спасибо... =)
 
 Тут другой вопрос. Не могу заставить SDL проигрывать музыку... Вот мой исходник:
 
 
 
Код:
 --sound test
 -- Инициализируем Аудио
 if SDL.SDL_Init(SDL.SDL_INIT_AUDIO) == -1 then
 print("SDL_Init:%\n",SDL.SDL_GetError())
 end
 
 -- Открывем аудио поток
 if SDL.Mix_OpenAudio(44100, 16, 2, 1024) < 0 then
 printf("Error initializing SDL_mixer: %s\n", SDL.Mix_GetError());
 end;
 
 -- грузим нашь файл *.WAV
 sound1 = SDL.Mix_LoadWAV_RW(SDL.SDL_RWFromFile("1.wav","rb"),1);
 
 function PlaySound(sound1)
 SDL.Mix_PlayChannelTimed(3,sound1,1,10)
 end
 
 function PlayMusic (file,chanel)
 music = SDL.Mix_LoadMUS (file);
 SDL.Mix_PlayMusic (music, chanel);
 end
 
 PlaySound(sound1)
 PlayMusic (sound1, -1)
 Ввобщем не хочит и все! Ни фун-я PlaySound() ни PlayMusic() нихрена не проигрывает!!! В чем моя ошибка?
 
 
 SDL & Event - SWAT -  27.01.2006 21:43
 
 Ошибочки конечно есть...
 Но вот я тоже сделал и в DSS не хотит петь... попробуй в DS и не делай слишком высокого качества файл, делай как в дефолт указано...
 
 
 
Код:
 initf = SDL.bit_or(SDL.SDL_INIT_VIDEO, SDL.SDL_INIT_AUDIO);vflags = SDL.bit_or(SDL.SDL_HWSURFACE, SDL.SDL_DOUBLEBUF);
 
 if SDL.SDL_Init(initf) == -1 then
 print("SDL_Init_error: ",SDL.SDL_GetError())
 end
 
 screen = SDL.SDL_SetVideoMode(640,480,16,vflags);
 
 -- if SDL.Mix_OpenAudio(11025, 8, 1, 512) < 0 then
 if SDL.Mix_OpenAudio(SDL.MIX_DEFAULT_FREQUENCY, SDL.MIX_DEFAULT_FORMAT, SDL.MIX_DEFAULT_CHANNELS, 512) < 0 then
 print("Warning: Couldn't set 11025 Hz 8-bit audio\n- Reason: ", SDL_GetError());
 end
 
 print("Loading music.wav ...");
 local Mix_Chunk = SDL.Mix_LoadWAV_RW(SDL.SDL_RWFromFile("music.wav", "rb"), 1);
 SDL.Mix_VolumeChunk(Mix_Chunk, 128);
 
 print("Play music...");
 local Channel = SDL.Mix_PlayChannelTimed(-1, Mix_Chunk, 5, -1);
 print("Played on channel:", Channel);
 print("Close audio...");
 SDL.Mix_FreeChunk(Mix_Chunk);
 SDL.Mix_CloseAudio();
 print("Bye");
 
 
 SDL & Event - zaero -  28.01.2006 02:29
 
 Спасибо... =) Хорошо учту.... Спасиб что сказал =)
 
 
 
 
 |