if (ListBox1->Count == 1)
SpeedButton4->Enabled = false;
else
SpeedButton4->Enabled = true;
SpeedButton3->Glyph
->LoadFromResourceID((int)HInstance,101);
}
// ListBox ro’yxatidan tanlangan ismli MP3-faylni
// tiklashni faollashtirish
void __fastcall TForm1::Play()
{
Label1->Caption = ListBox1->Items->Strings
[ListBox1->ItemIndex];
MediaPlayer1->FileName=SoundPath +ListBox1
->Items->Strings[ListBox1->ItemIndex],
MediaPlayer1->Open();
MediaPlayer1->Play();
min = 0;
sec = 0;
Timer1->Enabled = true;
}
// tiklashni to’xtatish
void __fastcall TForm1::Stop()
{
MediaPlayer1->Stop();
Timer1->Enabled = false;
Label2->Caption = "0";
Label4->Caption = "00";
}
// Play/Stop tugmasini bosish (tugma uchun
// rasmlarni yaxshisi resursdan yuklash kerak)
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
if(mode==1)
{
SpeedButton3->Glyph
->LoadFromResourceID((int)HInstance, 101);
SpeedButton3->Hint = "Tiklash";
Stop();
mode = 0;
}
else {
SpeedButton3->Glyph
->LoadFromResourceID((int)HInstance, 102);
SpeedButton3->Hint = "To'xtash";
Play();
mode = 1;
}
}
// taymerdan signal
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
// tiklash vaqti indikatsiyasi
if (sec<59)
{
sec++;
if(sec<10)
Label4->Caption = "0" + IntToStr(sec);
else
Label4->Caption = IntToStr(sec);
}
else
{
sec = 0;
min++;
Label2->Caption = IntToStr(min);
Label4->Caption = "00";
}
// joriy faylni tiklash to’xtadimi?
if (MediaPlayer1->Position < MediaPlayer1->Length)
// joriy faylni tiklah to’xtagani yo’q
return;
// joriy faylni tiklash to’xtadi
Stop();
if (ListBox1->ItemIndex < ListBox1->Count-1)
{
ListBox1->ItemIndex += 1;
Play(); // navbatdagi MP3-faylni tiklashni
// faollashtirish
if (ListBox1->ItemIndex==ListBox1->Count-1)
SpeedButton4->Enabled = false;
}
else {
// oxirgi MP3-faylni tiklash tugadi
SpeedButton3->Glyph
->LoadFromResourceID((int)HInstance,101);
SpeedButton3->Hint = "Tiklash";
mode = 0;
}
}
// "Navbatdagi faylga" tugmasini bosish
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
if (mode == 1)
Stop(); // joriy faylni tiklashni to’xtatish
ListBox1->ItemIndex -= 1;
Label1->Caption = ListBox1->Items->Strings
[ListBox1->ItemIndex];
// проверить и, если надо, изменить состояние
// кнопок перехода к следующему и предыдущему файлу
if (!SpeedButton4->Enabled)
SpeedButton4->Enabled = true;
if (ListBox1->ItemIndex == 0 )
SpeedButton2->Enabled = false;
if (mode==1)
Play(); // keyingi faylni tiklashni faollashtirish
}
// Eject – katalogni tanlash, tugmasini bosish
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
String dir;
if(SelectDirectory("Katalogni tanlang","",dir))
{
if (mode ==1) // "Tiklash" tartibi
{
Stop () ;
SpeedButton3->Glyph
->LoadFromResourceID((int)HInstance, 101);
SpeedButton3->Hint = "Tiklash";
Stop();
mode = 0;
}
SoundPath = dir + "\\";
PlayList(SoundPath);
}
}
// fayl ismida bosish
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
if(MediaPlayer1->Mode==2) //pleyer tiklash tartibida
{
Stop();//joriy faylni tiklashni to’xtatish
Play();//tanlangan faylni tiklashni faollashtirish
}
// изменить, если надо, состояние кнопок
// перекода к предыдущей и следующей композиции
if (ListBox1->ItemIndex == 0)
SpeedButton2->Enabled = false;
else
SpeedButton2->Enabled = true;
if (ListBox1->ItemIndex == ListBox1->Count -1 )
SpeedButton4->Enabled = false;
else
SpeedButton4->Enabled = true;
}
// foydalanuvchi ovoz regulyatori holatini o’zgartirdi
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
volume.Left = - TrackBar1->Position;
volume.Right = - TrackBar1->Position;
waveOutSetVolume(0,volume.Volume);
}
MIDI ni qayta tiklash
60 sekundda uddalash dasturi, uning forma ko’rinishi 1.42-rasmda keltirilgan, MIDI turidagi ovozni tiklash uchun MediaPlayer komponentasidan foydalanishni namoish etadi. Musiqa foydalanuvchi sonni topmaguncha yoki masalani yechish uchun belgilangan vaqt tugamaguncha “aylanib” eshitilib turadi.
MediaPlayer1
Timer1
Label3
1.42-rasm. 60 sekundda uddalash dastur formasi
#include // RandomRange funksiyasi uchun
int pw; // "maxviy" son
int rem = 60; //topshiriqni bajarishning qolgan vaqti
// dastur ishining boshlanishi
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TSearchRec sr;
if (FindFirst("*.mid",faAnyFile, sr) == 0)
{
MediaPlayer1->FileName = sr.Name;
MediaPlayer1->Open();
MediaPlayer1->Play();
}
Randomize();
pw = RandomRange(100,999); // "maxviy" son
}
// o’yinchi kiritgan son to’g’riligini tekshirish
void __fastcall TForm1::isRight(void)
{
if (StrToInt(Edit1->Text) == pw)
{
Timer1->Enabled = false;
Button1->Enabled = false;
Edit1->Enabled = false;
MediaPlayer1->Stop();
// olqishlar!
//PlaySound("Applause.wav", 0, SND_ASYNC);
ShowMessage("Tabriklaymiz!\nSiz "+IntToStr(60-rem)+ "sekundda sonni topdingiz");
}
}
// taxrirlash maydonida klaviatura tugmasi bosildi
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
if((Edit1->Text.Length()<3)&&((Key>='0')
&&(Key<='9')))
return;
if (Key == VK_RETURN)
{
isRight(); // foydalanuvchi to’g’ri kiritganlagini
// tekshirish
return;
}
if(Key == VK_BACK)
return;
//qolgan belgilar ruxsat etilmagan
Key= 0;
}
// Taxrirlash maydoni tashkil etuvchisi o’zgardi
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
// agar taxrirlash maydonida uchta belgi bo’lsagina
//(raqam), OK tugmasi murojaatli
if (Edit1->Text.Length() == 3)
Button1->Enabled = true;
else
Button1->Enabled = false;
}
// OK tugmasi bosildi
void __fastcall TForm1::Button1Click(TObject *Sender)
{
isRight(); // foydalanuvchi kiritgan sonni
// to’g’riligini tekshirish
}
// taymerdan signal
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
rem--;
Label3->Caption = IntToStr(rem)+" sekund qoldi";
if (rem == 0)
{
// masalani yechishga ajratilgan vaqt tugadi
Timer1->Enabled = false;
Edit1->Enabled = false;
Button1->Enabled = false;
MediaPlayer1->Stop();
ShowMessage("К сожалению, Вы не справились с "
"поставленной задачей\n \"Секретное\" число-"+
IntToStr(pw));
}
}
// pleyer xolati o’zgardi
void __fastcall TForm1::MediaPlayer1Notify(TObject *Sender)
{
/* Если плеер воспроизводит файл и значение свойства Notify равно true (метод Play по умолчанию присваивает свойству Notify значение true), то в момент окончания воспроизведения возникает событие Notyfy */
if (Timer1->Enabled)
/* Длительность мелодии меньше времени, отведенного на решение задачи. Проиграть еще раз. */
MediaPlayer1->Play();
}
// dasturning ishini tugatish
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Timer1->Enabled=false ;
MediaPlayer1->Stop();
MediaPlayer1->Close();
}
Do'stlaringiz bilan baham: |