Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2012, 10:20   #1
RockyBalboa
Новичок
Джуниор
 
Регистрация: 16.03.2012
Сообщений: 1
По умолчанию [Си]Функция для воспроизведения аудио файла в фоне

Язык Си.
Привет. Имеется множество - шахматная доска. Множество включает в себя 64 элемента - клетки доски. Клетки имеют
соответствующие названия - они являются строками. В свою очередь, элементы привязаны к числовому идентификатору -
номеру с индексом массива. Именно по нему строки будут изыматься и далее использоваться в программе.
Перед тем, как использовать число для ссылки по указателю на элемент массива, нужно рассчитать его в функции rand().
Вызов функции у меня выглядит следующим образом: lrand=rand() % 64; и выдает псевдослучайное число в диапазоне 0-63.
Далее программой выводится соответствующая строка, предварительно прошедшая обработку через strncpy().
Программа практически завершена и меня устраивает как она работает. Но перед вызовом функции strncpy(), на линии
87 я бы хотел добавить обращение к функции, которая бы воспроизводила аудио-файл. Функция должна быть похожа на printf(),
с форматной строкой+поддержка строковой спецификации преобразования и аргументами после запятой. Тогда бы я вызвал так:
sound_fn("/src/%s", cell[*lrand]); Где "/src/" - это неизменный путь до файлов, а указатель по спецификации передал
бы строку и произошла бы конкатенация внутри форматной строки. Такой трюк позволит мне не переименовывать аудио-файлы,
добавляя в них кавычки, что как-то уж совсем "не по-компьютерщески". Также хотелось бы, чтоб функция использовала штатные
средства ОС Линукс для воспроизведения, тогда бы конечный пользователь не замечал всплывающих аудио/медиаплееров, которые совсем не
нужны. Всё проходило бы в режиме демона. Скрытно. Есть такая функция?
Код:
/*chess.c - Программа по заучиванию нотации шахматной доски*/ 
#include <stdio.h>
#include <string.h>

int main()
{
    int c, i;
    int g = 1;
    int lrand;
    char temp[] = "..";
    char *temp1[1]; 
    
    char *cell[64][1];
    
    srand(time(NULL));
    if (g)
    {
    *cell[0] = "a1.ogg";
    *cell[1] = "a2.ogg";
    *cell[2] = "a3.ogg";
    *cell[3] = "a4.ogg";
    *cell[4] = "a5.ogg";
    *cell[5] = "a6.ogg";
    *cell[6] = "a7.ogg";
    *cell[7] = "a8.ogg";
    *cell[8] = "b1.ogg";
    *cell[9] = "b2.ogg";
    *cell[10] = "b3.ogg";
    *cell[11] = "b4.ogg";
    *cell[12] = "b5.ogg";
    *cell[13] = "b6.ogg";
    *cell[14] = "b7.ogg";
    *cell[15] = "b8.ogg";
    *cell[16] = "c1.ogg";
    *cell[17] = "c2.ogg";
    *cell[18] = "c3.ogg";
    *cell[19] = "c4.ogg";
    *cell[20] = "c5.ogg";
    *cell[21] = "c6.ogg";
    *cell[22] = "c7.ogg";
    *cell[23] = "c8.ogg";
    *cell[24] = "d1.ogg";
    *cell[25] = "d2.ogg";
    *cell[26] = "d3.ogg";
    *cell[27] = "d4.ogg";
    *cell[28] = "d5.ogg";
    *cell[29] = "d6.ogg";
    *cell[30] = "d7.ogg";
    *cell[31] = "d8.ogg";
    *cell[32] = "e1.ogg";
    *cell[33] = "e2.ogg";
    *cell[34] = "e3.ogg";
    *cell[35] = "e4.ogg";
    *cell[36] = "e5.ogg";
    *cell[37] = "e6.ogg";
    *cell[38] = "e7.ogg";
    *cell[39] = "e8.ogg";
    *cell[40] = "f1.ogg";
    *cell[41] = "f2.ogg";
    *cell[42] = "f3.ogg";
    *cell[43] = "f4.ogg";
    *cell[44] = "f5.ogg";
    *cell[45] = "f6.ogg";
    *cell[46] = "f7.ogg";
    *cell[47] = "f8.ogg";
    *cell[48] = "g1.ogg";
    *cell[49] = "g2.ogg";
    *cell[50] = "g3.ogg";
    *cell[51] = "g4.ogg";
    *cell[52] = "g5.ogg";
    *cell[53] = "g6.ogg";
    *cell[54] = "g7.ogg";
    *cell[55] = "g8.ogg";
    *cell[56] = "h1.ogg";
    *cell[57] = "h2.ogg";
    *cell[58] = "h3.ogg";
    *cell[59] = "h4.ogg";
    *cell[60] = "h5.ogg";
    *cell[61] = "h6.ogg";
    *cell[62] = "h7.ogg";
    *cell[63] = "h8.ogg";
    }
	 
    for (i = 0; i<999; i++)
    {
	lrand = rand() % 64;
	/*play_sound_here*/
	*temp1 = strncpy(temp, *cell[lrand], 2);
	printf("%s\n", *temp1);
	if ((c = getchar()) != EOF)
	    ;
	
    }
	 
    return 0;
}
RockyBalboa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При использование Transparentcolor для картинки картинка которая находиться на заднем фоне не видна Hunter_bog Мультимедиа в Delphi 2 21.01.2012 02:22
Повторение воспроизведения музыкального файла JonMagon Помощь студентам 3 13.05.2011 10:05
Как TMediaPlayer замедлять или убыстрять скорость воспроизведения Avi файла? nick17 Мультимедиа в Delphi 2 28.01.2011 12:08
Компоненты для воспроизведения звука saggy Мультимедиа в Delphi 6 08.08.2010 11:26
требуется программа для воспроизведения анимационных сэмплов.. serg136 Фриланс 1 12.05.2010 08:22