Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет мой.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4.46 Mб
Скачать

Задача 35.Воспроизведение midi

Программа Успеть за 60 секунд (Рис. 42) демонстрирует использование компонента MediaPlayer для воспроизведения звука в формате MIDI. Мелодия воспроизводится "по кругу", до тех пор, пока пользователь не угадает число или не истечет время, отведенное на решение задачи.

Рис 42

Вывод:В этой программе мы научились использовать компонента MediaPlayer для воспроизведения звука в формате MIDI.

Листинг

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int pw; // "секретное" число

intrem = 60;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

TSearchRec sr;

if ( FindFirst("*.mid",faAnyFile, sr) == 0)

{

MediaPlayer1->FileName = sr.Name;

MediaPlayer1->Open();

MediaPlayer1->Play();

}

Randomize();

pw = 100+rand()%999; // "секретное" число

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)

{

if ( ( Edit1->Text.Length() < 3) &&

( (Key >= '0') && (Key <= '9')))

return;

if ( Key == VK_RETURN)

{

if ( StrToInt(Edit1->Text) == pw )

{

Timer1->Enabled = false;

Button1->Enabled = false;

Edit1->Enabled = false;

MediaPlayer1->Stop();

PlaySound("Applause.wav", 0, SND_ASYNC);

ShowMessage("Поздравляю!\пВы угадали число за " + IntToStr(60 - rem)+ " сек");

}

}

return;

if( Key == VK_BACK) return;

Key = 0;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Change(TObject *Sender)

{

if ( Edit1->Text.Length() == 3)

Button1->Enabled = true;

else

Button1->Enabled = false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

rem--;

Label4->Caption = IntToStr(rem);

if (rem == 0 )

{

Timer1->Enabled = false;

Edit1->Enabled = false;

Button1->Enabled = false;

MediaPlayer1->Stop();

ShowMessage("К сожалению, Вы не справились с " "поставленной задачей\п" "\"Секретное\" число - " + IntToStr(pw) );

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::MediaPlayer1Click(TObject *Sender,

TMPBtnType Button, bool &DoDefault)

{

if (Timer1->Enabled)

MediaPlayer1->Play();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{

Timer1->Enabled=false ;

MediaPlayer1->Stop();

MediaPlayer1->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if ( StrToInt(Edit1->Text) == pw )

{

Timer1->Enabled = false;

Button1->Enabled = false;

Edit1->Enabled = false;

MediaPlayer1->Stop();

PlaySound("Applause.wav", 0, SND_ASYNC);

ShowMessage("Поздравляю!\пВы угадали число за " + IntToStr(60 - rem)+ " сек");

}

}

//------------------------------------