Программирование игр для Windows. Советы профессионала


Демонстрационная программа Test.c - часть 3


fname = floadlow("TEST.XMI",&siz); // Загрузка музыки

if ( fname }

{

printf("Loaded TEST.XMI %d bytes long.\n",siz);

RegisterXmidi(fname,siz); // Регистрация XMIDI

// последовательности

printf("Sequence registered, now playing.\n") ;

PlaySequence(0); // Исполнить первую

// последовательность

SegueSequence (1,-1); // Зарегистрировать вторую

// последовательность на

// исполнение сразу же по

// достижении первого

// Контроллера 119

}

} else

printf("Failed to initialize MIDPAK driver.\n");

}

TestDigPak(); // Тестирование/демонстрация возможностей функций

// DIGPAK

UnLoadMidPak(); // Выгрузка MIDPAK из памяти,

// освобождение аппаратуры

UnLoadDigPak(); // Выгрузка DIGPAK из памяти,

// освобождение аппаратуры

RemoveVectorLoader() ;

}

void TestDigPak(void)

{

int i,key,sound;

printf("Loading digital sound effects.\n");

if ( LoadSounds() ) // Загрузка звуковых эффектов в память

{

// Создание меню звуковых эффектов

printf("Select an sound effect to play. [ESC] when finished playing around.\n");

for (i=0; i<NOBJ; i++)

{

printf("%c %s\n",i+'A',Names[i]) ;

}

do

{

if ( keystat() ) // если клавиша нажата

{

key = getkey(); // получить нажатую клавишу

if ( key >= ' a' && key <= ' z') key-=32;

// преобразовать нижний регистр к верхнему

if ( key >= 'А' && key <= 'Z')

{

sound = key-'A';

if ( sound < NOBJ ) PlaySound(sound);

}

} while ( key != 27 );

UnloadSounds(} ;

}

}

// загрузить все звуковые эффекты в память

int LoadSounds(void)

{

int fph;

long int siz.end;

int i, handler;

int select;

for (i=0; i<NOBJ; i++)

{

Sounds[i] = fload(Names[i], &siz);;

if ( !Sounds[i] )

{

printf("File '%s' not found.\n"/Names[i]) ;

return(0) ;

}

ssize[i] = siz;

snd.frequency = 11000;

snci. sound = Sounds [i];

snd.sndlen = ssize[i]; // задает длину звукового эффекта

//в байтах

MassageAudio(&snd) ;

printf("Sound Loaded '%s'.\n",Names[i]);

}

return(1) ;

}

void UnloadSounds(void) {

int i;

for (i=0; i < nalloc; i++) memfree(Sounds[i]);

if ( soundbuffer )

{

realfree(snd) ;

realfree(soundbuffer);

}

NALLOC=0 ;

}

void PlaySound(int sound)

{

if ( !soundbuffer }

{

snd = (SNDSTRUC *) realalloc(sizeof(SNDSTRUC));

snd->frequency = 11000;

soundbuffer = realalloc(65535);

}

StopSound(); // ожидать до окончания предыдущего звукового эффекта

snd.frequency = 11000;

snd.sound = Sounds[i];

snd.sndlen = ssize[i]; // задает длину звукового эффекта

//в байтах

DigPlay2(&snd); // воспроизвести эффект

//в аппаратно-зависимом формате

}




Начало  Назад  Вперед



Книжный магазин