void __fastcall TForm1::Move(int cx, int cy){
if((abs(cx-ex)==1 && cy-ey==0)||(abs(cy-ey)==1 &&
cx-ex==0))
{
// (сх,су) dan (ех,еу) ga soqqani ko’chirish
pole[ey][ex] = pole[cy][cx];
pole[cy][cx] = 16;
ex = cx;
ey = cy;
// maydonni qayta chizish
ShowPole();
if (Finish())
{
GameOver = true;
ShowPole();
int r=MessageDlg("Maqsadga erishildi! Yanami "
"(boshqa rasm)?", mtInformation, TMsgDlgButtons()<<
mbYes <
if (r==mrNo)
Form2->Close(); // dastur ishini tugatdi
else
{
NewGame();
ShowPole();
}
}
}
}
// kataklar (rasm qismlari) kerakli tartibda to’g’ri
// joylashganligini tekshirish
bool Finish()
{
bool result;
int row, col;
int k = 1;
result = true; // faraz qilamiz soqqa to’g’ri tartibda
for (row = 0; row < H; row++)
{
for (col = 0; col < W; col++)
if ( pole[row][col] == k )
k++;
else {
result = false;
break;
}
if(!result ) break;
}
return (result);
}
// Paint xodisani qayta ishlash
void __fastcall TForm1::FormPaint(TObject *Sender)
{
ShowPole();
}
// menyu satridan Yangi o’yin bo’yrug’ini tanlash
void __fastcall TForm1::Yangioyin1Click(TObject *Sender)
{
NewGame ();
}
void __fastcall TForm1::Dasturxaqida1Click(TObject *Sender)
{
WinExec("hh.exe -mapid 3 puzzle.chm", SW_RESTORE);
}
//Ma’lumotnoma menyusidan Ma’lumotnoma bo’yrug’ini
// tanlash
void __fastcall TForm1::Malumotnoma2Click(TObject *Sender)
{
WinExec("hh.exe puz zle.chm", SW_RESTORE);
}
// Parametrlar/Soqqa nomeri bo’yrug’i
void __fastcall TForm1::Fishkalarnomeri1Click(TObject *Sender)
{
Fishkalarnomeri1->Checked= !Fishkalarnomeri1->Checked;
ShowPole() ;
}
“Juft rasmlar” o’yini
Juft rasmlar o’yini e’tiborni tortadi. Mana uning qoidasi. O’yin maydoni kataklarga ajratiladi, ularning xar birida rasmlar berkitilgan bo’ladi. Rasmlar juft, ya’ni o’yin maydonida shunday ikkita katak borki, ularda bir xil rasmlar joylashgan. o’yin boshida barcha kataklar “yopiq” dir. Sichqonchaning chap tugmasini bir marta bosishda katak “ochiladi”, katakda rasm xosil bo’ladi. Endi esa ochilgan katakdagi rasm joylashgan, keyingi katakni topish kerak. Agar ochilgan kataklarda rasmlar bir xil bo’lsa, u holda bu kataklar “yuqotiladi”. Agar xar xil bo’lsa – unda kataklar ochiq holda qoladi. Sichqonchani keyingi bosishda ochiq kataklar yopiladi va keyingisi ochiladi. Shunga e’tibor beringki, ochilayotgan katakdagi rasm ochilgan ikkita katakdagi rasmlarga mos kelsa xam, ochilgan ikkita katak yopiladi. O’yinchi barcha juft rasmlarni “topib” ochgandan keyin o’yin tugaydi.
Bu katakga sichqoncha bosilganda ochiq kataklar yopiladi, xatto agar bu katakdagi rasm ochiq katakdagi rasmlardan biriga mos kelsa xam.
Bu kataklarda bir xil rasmlar bo’lgan. O’yinchi ularni “topdi”
Do'stlaringiz bilan baham: |