Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Написал игрушечную программу На языке "Си" надо добавит звук. Как это сделать?

Jamal_Malik Гуру (2707), на голосовании 1 день назад
#include<stdio.h>
#include<time.h>
#include"unistd.h"
int main()
{
int a,b,c,d,e;
while (1){
printf("Для того что бы Активировать Ракету нажмите на цифру 6\n");
scanf("%d",&a);
if(a==6)
{
printf("Сколько количеств Ракет вам необходимо что бы уничтожить врага ?\n");
scanf("%d",&c);
b = 1;
while(b <= c){
sleep(1);
printf("\rГотовы к бою САРМАТ%d ?\n",b );

b++; }
sleep(1);
printf("Все Ракеты готвы к бою и ждут вашу Команнду!!!\n Для запуска нажмите на 1\n");
scanf("%d",&d);
if(d==1)
{
e = 1;
while (e<5){
sleep(1);
printf ("\rСтарт начнется через четыре секунд %d",e);
fflush (stdout);
e++;
}
sleep(1);
printf(" Пуск \n??????");
// ("\nВОТ СЮДА НАДО ЛЕПИТ ЗВУК wav");
//fflush (stdout);

}
return b;
}
else{
printf("Другое...\n");
}
}
}
Голосование за лучший ответ
D P Мудрец (17838) 1 месяц назад
Проще всего найти уже готовый консольный проигрыватель (типа play, mplayer, ffplay) и запускать его в нужный момент с указанием звукового файла для проигрывания (что-то типа system("/path/to/play rocket_sound.mp3");).
В нормальной ОС доступна замечательная функция fork, которая порождает процесс-потомок. Чтобы звук и все остальное воспроизводилось одновременно, можно было бы форкнуть процесс в точке, когда вам надо воспроизвести звук и потом из процесса-потомка запустить при помощи одной из команд семейства exec наш проигрыватель с нужным вам фалом звука ракеты. В Windows функция fork() недоступна, для запуска нового процесса вам придется написать пару экранов кода.
Либо можно запускать звук в отдельном потоке, для этого вам необходимо почитать про POSIX Threads, в частности про
 #include <pthread.h> 

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);

Compile and link with -pthread.
В современном Си++ работать с потоками проще, чем в Си, поэтому, если будет желание запускать проигрыватель из отдельного потока, имеет смысл всерьез подумать о переходе с Си на Си++.
Похожие вопросы