|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.08.2018, 22:49 | #1 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Проблема с загрузкой звука в игре типа Pacman
Здравствуйте!Пытаюсь вывести звук в Borland C++ 4.5 в игре ти-
па Pacman.Посмотрел по подсказке нужно включить файл #include<dos.h> и написать следующий код sound(7); delay(1000); nosound(); Так сказано в документации. void TMyWin::Animate_BOB() { bitmap.f=!bitmap.f; sound(7); delay(1000); nosound(); Invalidate(FALSE); } Но выдаются ошибки Error:Call to undefined function 'sound' in function TMyWin::Animate_BOB() Error:Call to undefined function 'delay' in function TMyWin::Animate_BOB() Error:Call to undefined function 'nosound' in function TMyWin::Animate_BOB() То есть не определяются функции sound(),delay(),nosound() из файла dos.h.В чем дело?И что делать? |
20.08.2018, 23:01 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
21.08.2018, 06:35 | #3 |
Форумчанин
Регистрация: 14.03.2012
Сообщений: 147
|
Скорее всего, проблема в том, что ты пытаешься досовские 16 разрядные функции скомпилировать в 32 разрядное приложение. Попробуй использовать функции Beep и Sleep. Пример использования этих функций показан ниже (Программа играет мелодию "В лесу родилась Елочка"):
Код:
Последний раз редактировалось ichi; 21.08.2018 в 06:38. |
21.08.2018, 18:55 | #4 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Написал функции о которых ты говорил
void TMyWin::Animate_BOB() { bitmap.f=!bitmap.f; Beep(247,500); Beep(497,500); Sleep(500); Beep(497,500); //sound(7); //delay(1000); //nosound(); Invalidate(FALSE); /*bitmap.f=!bitmap.f; Invalidate();*/ } Все равно выдается ошибка такая же: Error:Call to undefined function 'Beep' in function TMyWin::Animate_BOB() Error:Call to undefined function 'Sleep' in function TMyWin::Animmate_BOB() Программа во вложениях. #include<owl\applicat.h> #include<owl\framewin.h> #include<owl\gdiobject.h> #include<owl\dc.h> #include<stdio.h> #include<dos.h> #define FILERIS1 "p1.bmp" #define FILERIS2 "p2.bmp" #define FILERIS3 "p3.bmp" #define FILERIS4 "p4.bmp" #define FILERIS5 "p5.bmp" #define FILERIS6 "p6.bmp" #define FILERIS7 "p7.bmp" #define FILERIS8 "p8.bmp" #define FILERIS9 "gem.bmp" #define N 48 #define M 45 #define SOUTH 0 #define EAST 2 #define WEST 4 #define NORTH 6 char *g[N] ={"................................ .............", ".. .", ". ......... .", ".. . ......... .... * . .", "..* . . ... .. * .. .", ". . ...... . .............. .", ". ... . . . .", ". . ...... . . .", ". .... . .... .............. .", ". . . ...... .... ... .", ". .. .", ". .. ................................... . .", ". ", ". .................. .... ....... .", ". . .... ... . ....... .", ". . . .. .. .", ". ....... .... .......... .", ". . . . .. . .", ". . . .", ". ................................... . .", ". . . .", ". . . . * . .", ". . . * .", ". . . . .", ". . . ............................. .", ". . * .", ". . ............ ................ .", ". . . . . . .", ". . . . . . .", ". . *. . . .......... .", ". . . . . . .", ". . . . . .......... .", ". . . . . . .", ". . . . ................ .", ". . . . .", ". . . .................. .", ". . . .", ". . ............................. .", ". . .", ". . .. ............. ............. .", ". . . . . .", ". . .... ........... . . .", ". . . . .", ". . . ............... . . .", ". . . . . . . .", ". . . . . . . .", ". . . ............... ............. .", ".................................. ...........", }; char m[N][M]; int q=0; int i,j; struct bt_bitmap { int x; int y; bool f; } bitmap; int STATE; int score=0; int l=0,k=0; int stek1[N]; int stek2[M]; class TMyWin : public TFrameWindow { TBitmap *pbitmap1,*pbitmap2,*pbitmap3,*pbit map4,*pbitmap5,*pbitmap6,*pbitmap7, *pbitmap8,*gem1; public: TMyWin():TFrameWindow(0,"Pacman") { Attr.X=0;Attr.Y=0; Attr.W=900;Attr.H=1000; TDib *pdib1,*pdib2,*pdib3,*pdib4,*pdib5, *pdib6,*pdib7,*pdib8,*pdib9; pdib1=new TDib(FILERIS1); pdib2=new TDib(FILERIS2); pdib3=new TDib(FILERIS3); pdib4=new TDib(FILERIS4); pdib5=new TDib(FILERIS5); pdib6=new TDib(FILERIS6); pdib7=new TDib(FILERIS7); pdib8=new TDib(FILERIS8); pdib9=new TDib(FILERIS9); pbitmap1=new TBitmap(*pdib1); delete pdib1; pbitmap2=new TBitmap(*pdib2); delete pdib2; pbitmap3=new TBitmap(*pdib3); delete pdib3; pbitmap4=new TBitmap(*pdib4); delete pdib4; pbitmap5=new TBitmap(*pdib5); delete pdib5; pbitmap6=new TBitmap(*pdib6); delete pdib6; pbitmap7=new TBitmap(*pdib7); delete pdib7; pbitmap8=new TBitmap(*pdib8); delete pdib8; gem1=new TBitmap(*pdib9); delete pdib9; } private: void SetupWindow(); void Animate_BOB(); void Paint(TDC&,BOOL,TRect&); void EvKeyDown(UINT key,UINT repeatCount,UINT flags); DECLARE_RESPONSE_TABLE(TMyWin); }; DEFINE_RESPONSE_TABLE1(TMyWin,TFram eWindow) EV_WM_KEYDOWN, END_RESPONSE_TABLE; void TMyWin::SetupWindow() { for(i=0;i<N;i++) for(j=0;j<M;j++) { m[i][j]=g[i][j]; } while(1) { i=rand()%N; j=rand()%M; if(m[i][j]==' ') { STATE=NORTH; bitmap.x=j*20+2; bitmap.y=i*20+2; bitmap.f=0; break; } } Invalidate(); } void TMyWin::Animate_BOB() { bitmap.f=!bitmap.f; Beep(247,500); Beep(497,500); Sleep(500); Beep(497,500); //sound(7); //delay(1000); //nosound(); Invalidate(FALSE); /*bitmap.f=!bitmap.f; Invalidate();*/ } void TMyWin::EvKeyDown(UINT key,UINT /*repeatCount */,UINT /* flags */) { /* Текст программы */ } void TMyWin::Paint(TDC& dc,BOOL,TRect&) { TRect rect; int i,j; TMemoryDC memDC(dc); for(i=0;i<N;i++) for(j=0;j<M;j++) { if(m[i][j]=='.') { TBrush brGreen(TColor::LtGreen); dc.FillRect(j*20,i*20,j*20+20,i*20+ 20,brGreen); } if(m[i][j]==' ') { TBrush brBlack(TColor::Black); dc.FillRect(j*20,i*20,j*20+20,i*20+ 20,brBlack); } if(m[i][j]=='*') { //TBrush brBlack(TColor::Black); //dc.FillRect(j*10,i*10,j*10+10,i*10+ 10,brBlack); memDC.SelectObject(*gem1); dc.StretchBlt(j*20,i*20,20,20,memDC ,127,80,36,36,SRCCOPY); } } if(STATE==WEST) { if(bitmap.f==0) { memDC.SelectObject(*pbitmap1); dc.StretchBlt(bitmap.x-1,bitmap.y-1,20,20,memDC,29,16,200,180,SRCCOPY ); } if(bitmap.f==1) { memDC.SelectObject(*pbitmap2); dc.StretchBlt(bitmap.x-1,bitmap.y-1,20,20,memDC,63,16,175,180,SRCCOPY ); } } if(STATE==EAST) { if(bitmap.f==0) { memDC.SelectObject(*pbitmap3); dc.StretchBlt(bitmap.x-1,bitmap.y-1,20,20,memDC,76,11,168,182,SRCCOPY ); } if(bitmap.f==1) { memDC.SelectObject(*pbitmap4); dc.StretchBlt(bitmap.x-1,bitmap.y-1,20,20,memDC,60,7,188,191,SRCCOPY) ; } } if(STATE==SOUTH) { if(bitmap.f==0) { memDC.SelectObject(*pbitmap5); dc.StretchBlt(bitmap.x-1,bitmap.y-1,20,20,memDC,60,5,190,188,SRCCOPY) ; } if(bitmap.f==1) { memDC.SelectObject(*pbitmap6); dc.StretchBlt(bitmap.x-1,bitmap.y-1,20,20,memDC,75,16,176,180,SRCCOPY ); } } if(STATE==NORTH) { if(bitmap.f==0) { memDC.SelectObject(*pbitmap7); dc.StretchBlt(bitmap.x-1,bitmap.y-1,20,20,memDC,66,14,184,177,SRCCOPY ); } if(bitmap.f==1) { memDC.SelectObject(*pbitmap8); dc.StretchBlt(bitmap.x-1,bitmap.y-1,20,20,memDC,71,13,182,180,SRCCOPY ); } } } class TMyApp : public TApplication { public: TMyApp():TApplication(){}; private: void InitMainWindow() { MainWindow=new TMyWin(); } }; int OwlMain(int,char*[]) { TMyApp app; return app.Run(); } |
21.08.2018, 23:38 | #5 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Вот bmp файлы к проекту.
|
22.08.2018, 17:53 | #6 |
Форумчанин
Регистрация: 14.03.2012
Сообщений: 147
|
Вообщем, используемые функции зависят от проекта который ты создаешь в borland c++ 4.5. Например, если ты создаешь (Win32) 32-х разрядное приложение, то будут работать функции Beep, Sleep. Если ты создаешь проект DOS, то будут работать функции sound, delay, nosound. Я так понимаю ты делаешь проект (Win16) 16-ти разрядного приложения, тогда попробуй использовать функцию MessageBeep(MB_OK) или функцию sndPlaySound((LPSTR)"pl_step1.wav", SND_ASYNC), это функция определена в заголовочном файле mmsystem.h. Вместо строки pl_step1.wav укажи название своего wav-файла и скинь этот файл, там где исполняемый файл твоей программы.
|
22.08.2018, 19:55 | #7 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Ichi , большое тебе спасибо!Функции MessageBeep(MB_OK) и sndPlaySound()
подошли.Не мог ли бы ты подсказать какие функции нужно использовать для проигрывания midi файлов? |
23.08.2018, 02:33 | #8 |
Форумчанин
Регистрация: 14.03.2012
Сообщений: 147
|
Проигрывание MIDI-файлов
Может поможет 4 Глава "Проигрывание MIDI-файлов" из 15-го Тома книги Фролова Библиотека системного программиста.
|
23.08.2018, 13:23 | #9 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Возникла небольшая проблема.Звуки выводятся.Но один звук почему-то не выводится.Это поедание алмаза:
sndPlaySound((LPSTR)"MENUITEM.wav", SND_ASYNC); Причем звук поедания последнего алмаза выводится sndPlaySound((LPSTR)"BEAM.wav",SND_ ASYNC); if(key==VK_UP) { if(m[i-1][j]==' ') { stek1[l++]=i-1; stek2[k++]=j; s=1; bitmap.y-=20; } else if(m[i-1][j]=='*') /* Если алмаз */ { m[i-1][j]=' '; score+=5; stek1[l++]=i-1; stek2[k++]=j; s=1; bitmap.y-=20; q++; sndPlaySound((LPSTR)"MENUITEM.wav", SND_ASYNC); / * Звук поедания алмаза */ if(q==7) /* Последний алмаз */ { //MessageBox("Your score is %d","Pacman",MB_ICONINFORMATION|MB_ OK); sndPlaySound((LPSTR)"BEAM.wav",SND_ ASYNC); /* Поедание последнего алмаза */ exit(0); } } } Последний раз редактировалось Timurkh77; 23.08.2018 в 13:28. |
23.08.2018, 15:11 | #10 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Ставлю функцию MessageBox во время сьедания ,ее выводит,а музыкальный файл нет.
Код:
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ) Модератор Последний раз редактировалось Serge_Bliznykov; 23.08.2018 в 15:57. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Графическая ошибка в игре типа Pacman | Timurkh77 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 18.08.2018 22:08 |
Не звука в игре | _Михаил_ | Windows | 1 | 22.04.2017 15:01 |
Проблема с загрузкой!! | Plamer-007 | Компьютерное железо | 3 | 23.06.2010 14:52 |
Проблема с загрузкой ОС | Vali_T | Операционные системы общие вопросы | 18 | 07.04.2010 18:50 |
Проблема с загрузкой XP. | hebu | Windows | 11 | 20.07.2009 14:33 |