Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
30 / 30 / 12
Регистрация: 15.11.2009
Сообщений: 148

playsound(), как сделать фоновую музыку в игре

24.01.2011, 00:07. Показов 4283. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть игра. Есть звуки с использованием Beep()/ Нужна фоновая музыка. Читал что нашел - предлагают создать параллельный поток. Для меня это сложно. Объясните пожалуйста или предложите другой вариант.

Добавлено через 39 минут
Помогите!!

Добавлено через 11 минут
вот такая вот игра
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include <fstream.h>
#define n 15
#define m 30
//#include <stdlib.h>
 
void showscore(int l,char nickname[15])
{
fstream inFile;
inFile.open("C://file.txt");
if(!inFile) {cerr << "\nCouldn't open file, Try again"; return;}
char next;
typedef char stri[25];
stri MasString[4];char temp[25]="";
int i=0;cout<<endl;
cin.get();
while(true){
              inFile.getline(MasString[i],20); 
              next=inFile.peek();
              if (next==EOF) break;
              i++;             
              }
struct BestScores{char mesto[20]; char nick[20];char score[20];} bsc[3];
 
for (int j=0;j<3;j++) 
              {      
              sscanf(MasString[j+1], "%s%s%s", bsc[j].mesto, bsc[j].nick, bsc[j].score);
              if (l>atoi(bsc[j].score))
                 {
                 for(int k=3;k>j+1;k--)
                         {
                         strcpy(temp,MasString[k-1]);
                         temp[0]=(char)(48+k);
                         strcpy(MasString[k],temp);}
                 sprintf(bsc[j].score,"%d",l);
                 strcpy(MasString[j+1],bsc[j].mesto);
                 strcat(MasString[j+1]," ");
                 strcat(MasString[j+1],nickname);
                 strcat(MasString[j+1], " ");
                 strcat(MasString[j+1],bsc[j].score);
                 l=0;
                 }
              }
              fstream datei;
              datei.open("C://file.txt");  
for(int j=0;j<4;j++){cout<<MasString[j]<<endl;datei<<MasString[j]<<endl;}datei.close();
inFile.close();
return ;
};
void gameover(int sco,char nick[15])
{
     system("cls");
     cout<<"GAMEOVER your score "<<sco;showscore(sco,nick);Sleep(2000);system("PAUSE");
     return;
    
};
void Win(int sco,char nick[15],int l)
{cout<<"You WIN!!! your score "<<l*10;showscore(sco,nick); system("PAUSE"); return ;};
void Painting(COORD c,HANDLE h,int *arr[], int *TTL[])
{
   for(int i=0;i<n;i++)
    {
            for(int j=0;j<m;j++)
            {
                    c.X = j;
                    c.Y = i;
                    SetConsoleCursorPosition(h, c);
                    switch (arr[i][j])
                    {
                    case 0:{if(TTL[i][j]>0){TTL[i][j]--;if(TTL[i][j]>0){cout<<"o";}else cout<<" ";break;}break;  }
                    case 1:cout<<(char)4;break;
                    case 2:if(TTL[i][j]>0) TTL[i][j]=0;cout<<"$";break;
                    }
            }
    cout<<endl;
   }
};
void CreateDollar(int *arr[],int *TTL[],int *r1, int *r2)
{
     while((arr[*r1=rand()%(n-1)][*r2=rand()%(m-1)]==1)||(TTL[*r1][*r2])||(arr[*r1][*r2]==3)){;}
     arr[*r1][*r2]=2;
};
void CreateFirstTime(int *arr[],int *TTL[])
{
 for(int i=0;i<n;i++)//zapolnenie massiva i pervi4naya otrisovka
    {
            for(int j=0;j<m;j++)
            {
                    if ((i==n-1)||(i==0)||(j==0)||(j==m-1)) {arr[i][j]=3;cout<<(char)254;TTL[i][j]=-1;} else{
                    arr[i][j]=0;TTL[i][j]=0;cout<<" ";}
            }
            cout<<endl;
    }     
};
void CheckFileScore()
{
fstream ds;
ds.open("C://file.txt");
if(!ds) {
        ds.close();ofstream cr; cr.open("C://file.txt"); 
        cr<<"Best scores:\n1) wasya 2520\n2) ser4ega 120\n3) ser4egaDrunk 110";
        cr.close();
        }
ds.close();
};
void Melody(){Beep (659.26,200);
          Beep (659.26,200);
          Sleep (200);
          Beep (659.26,200);
          Sleep (100);
          Beep (523.26,200);
          Beep (659.26,200);
          Sleep(200);
          Beep (783.98,200);
          Sleep(400);
          Beep (391.99,200);};
 
//INT MAIN INT MAIN INT MAIN INT MAININT MAIN INT MAIN INT MAIN INT MAININT MAIN INT MAIN INT MAIN INT MAIN
 
int main()
{
COORD c;
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
    CheckFileScore();
    srand(time(0));
    int ii=1,ij=1,r1,r2,l=0,sl=250,sco=0,k=0;
    bool music=true;
    char g,oldg='d',nick[15];cout<<"Enter your name\n";cin>>nick; 
    int **arr=new int*[n],**TTL=new int*[n];
    for (int i=0;i<n;i++) {arr[i]=new int[m];TTL[i]=new int[m];}//arr[n][m] arr[i][j]
cout<<"Be careful when you eat, try to do eat from up or from left, else";
cout<<"  you can lose =) Now Put on 'd' or 's' or die immediatly *EVIL*";
g=(char)getch();
system("cls");
CreateFirstTime(arr,TTL);
CreateDollar(arr,TTL,&r1,&r2);
arr[1][1]=1;
while(true){          
if(kbhit() ) g=(char)getch();
    switch(g){
              case('d'):oldg=g;if((TTL[ii][ij+1]==0)){arr[ii][ij]=0;ij++;}else {gameover(sco,nick);return 0;}break;
              case('D'):oldg=g;if((TTL[ii][ij+1]==0)){arr[ii][ij]=0;ij++;}else {gameover(sco,nick);return 0;}break;
              case('a'):oldg=g;if((TTL[ii][ij-1]==0)){arr[ii][ij]=0;ij--;}else {gameover(sco,nick);return 0;}break;
              case('A'):oldg=g;if((TTL[ii][ij-1]==0)){arr[ii][ij]=0;ij--;}else {gameover(sco,nick);return 0;}break;
              case('w'):oldg=g;if((TTL[ii-1][ij]==0)){arr[ii][ij]=0;ii--;}else {gameover(sco,nick);return 0;}break;
              case('W'):oldg=g;if((TTL[ii-1][ij]==0)){arr[ii][ij]=0;ii--;}else {gameover(sco,nick);return 0;}break;
              case('s'):oldg=g;if((TTL[ii+1][ij]==0)){arr[ii][ij]=0;ii++;}else {gameover(sco,nick);return 0;}break;
              case('S'):oldg=g;if((TTL[ii+1][ij]==0)){arr[ii][ij]=0;ii++;}else {gameover(sco,nick);return 0;}break;
              case('M'):music=!music;g=oldg;continue; break;
              case('m'):music=!music;g=oldg;continue;break;
              case('p'): while(!kbhit()) Sleep(100);
              case('P'): while(!kbhit()) Sleep(100);
              default:g=oldg;continue;break;
              }      
              if(music)Beep(100,10);
    arr[ii][ij]=1;TTL[ii][ij]=l+1;
    if (arr[r1][r2]==1){if(music)Beep (200,20);l++;sco+=10*(k+1);CreateDollar(arr,TTL,&r1,&r2);}
    Painting(c,h,arr,TTL);
    cout<<"Score "<<sco;
    if (l==10){if(music)Melody();k++;l=0;sl-=30;if (sl<40) Win(sco,nick,l);}
    cout<<endl<<"Level "<<k+1; 
    cout<<endl<<"Use WASD to move, collect the money, become faster, \nwrite down your name in history!!!";
    cout<<"\n\n\tTo turn Off/On the music press M";
    cout<<"\n\n\tTo pause press P, to play press ANYKEY";
    if(k<5){ if(kbhit()) Sleep(sl-120);else Sleep(sl);} else Sleep(sl);
}
    system("PAUSE");
}
Добавлено через 1 час 27 минут
ну че там, може посоветуете ченить?)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2011, 00:07
Ответы с готовыми решениями:

Как сделать фоновую музыку?
Люди, помогите пожалуйста. Весь интернет перерыл и нашел только один код, который относительно работает, но через несколько секунд...

Как сделать фоновую музыку?
Всем привет. как сделать музыку на фон. Что бы при запуске играла музыка. и еще была кнопка, выключить звук, пауза, и плэй. Помогите...

Как сделать фоновую музыку?
С обычной музыкой проблем нет SoundPlayer SoundPlayer = new SoundPlayer(&quot;Rev.WAV&quot;); SoundPlayer.PlayLooping(); но если...

2
30 / 30 / 12
Регистрация: 15.11.2009
Сообщений: 148
26.01.2011, 17:23  [ТС]
нид хелп

Добавлено через 22 минуты
да ладно вам, неужели никто не занимался написанием игр?
0
 Аватар для dakota412
22 / 22 / 1
Регистрация: 14.02.2010
Сообщений: 50
26.01.2011, 17:46
Не слушайте про параллельный поток. Как я вижу, вы пишите код по windows. А там есть неплохая API функция mciSendString();
Вот пример:
C++
1
2
3
4
5
6
7
#include <mmsystem.h>
#pragma comment(lib, "winmm");
 
int main()
{
     mciSendString("c:\\mus.mp3", NULL, NULL, NULL);
}
Здесь мы проигрываем музыку из файла mus.mp3, который лежит прямо в корне c:\. У этой функции есть один недостаток - строка, которая является первым аргументом должна содержать не более 64 символов. То есть если полное имя файла слишком длинное, то работать не будет. Хотя даже и в этом случае программа не вылетит, просто возвращаемое значение (кстати тип DWORD) будет соответствующее. Если интересует подробное использование этой функции, пишите. Всегда готов помочь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2011, 17:46
Помогаю со студенческими работами здесь

Как поставить фоновую музыку
Мне нужно поставить фоновую музыку в своей программе на Visual Basic 2010. Чтобы она играла себе сама по себе, а я мог бы делать все что...

Как вставить в станицы фоновую музыку?
Как вставить в станицы фоновую музыку?

Как включить фоновую музыку формата xm?
Люди как мне включить фоновую музыку формата .xm (часто встричается в keygen)?:help:

Как вставить картинки, поля ввода, фоновую музыку. в существующее видео пользователем
Добрый день, форумчане! Я застрял над такой проблемой -----(заранее простите, ибо я нуб в этом) На сайте есть видео (левая колонка) и...

Как проиграть фоновую музыку, как в кейгенах?
Как проиграть фоновую музыку при работе программы на С++,как в кейгенах? Не из файла,а зашить в EXE


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru