Парні картинки

Гра Парні картинки розвиває увагу. Ось її правила. Ігрове поле розділене на клітинки, за кожною з яких прихована картинка. Картинки парні, тобто на ігровому полі є дві клітинки, в яких знаходяться однакові картинки. На початку гри всі клітинки “закриті”. Клацання лівою кнопкою миші “відкриває” клітинку, у клітинці з’являється картинка. Тепер треба знайти клітинку, в якій знаходиться така ж картинка, як і в відкритій клітині. Клацання по іншій клітині відкриває другу картинку. Якщо картинки у відкритих клітинках однакові, то ці клітинки “зникають”. Якщо різні – то клітинки залишаються відкритими. Наступне клацання закриває відкриті клітинки та відкриває наступну. Слід звернути увагу, що дві відкриті клітинки закриваються навіть у тому разі, якщо відкрита картинка така сама, як і одна з двох відкритих. Гра закінчується, коли гравець відкриє – “знайде” всі пари картинок.

Код написання програми

#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int pole[5][4]={{101,102,103,104},
{101,102,103,103},
{104,105,103,104},
{102,105,101,105},
{101,102,105,104}};
int col=0,q1=0,q2=0;
Graphics::TBitmap*zakr;
Graphics::TBitmap*pusto;
Graphics::TBitmap*pole1;
Graphics::TBitmap*pole2;
Graphics::TBitmap*pole3;
Graphics::TBitmap*pole4;
Graphics::TBitmap*pole5;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1->DoubleBuffered=true;
zakr=new Graphics::TBitmap();
zakr->LoadFromFile("zakr.bmp");
pusto=new Graphics::TBitmap();
pusto->LoadFromFile("pusto.bmp");
pole1=new Graphics::TBitmap();
pole1->LoadFromFile("1.bmp");
pole2=new Graphics::TBitmap();
pole2->LoadFromFile("2.bmp");
pole3=new Graphics::TBitmap();
pole3->LoadFromFile("3.bmp");
pole4=new Graphics::TBitmap();
pole4->LoadFromFile("4.bmp");
pole5=new Graphics::TBitmap();
pole5->LoadFromFile("5.bmp");
FormPaint(Sender);
}
void __fastcall TForm1::FormPaint(TObject *Sender)
{
for (int i=0;i<5;i++)
{
for (int j=0;j<4;j++)
{
if (pole[i][j]>100) Image1->Canvas->Draw(i*50,j*50,zakr);//êàðòèíêè 50*50
if (pole[i][j]==0) Image1->Canvas->Draw(i*50,j*50,pusto);
if (pole[i][j]==1) Image1->Canvas->Draw(i*50,j*50,pole1);
if (pole[i][j]==2) Image1->Canvas->Draw(i*50,j*50,pole2);
if (pole[i][j]==3) Image1->Canvas->Draw(i*50,j*50,pole3);
if (pole[i][j]==4) Image1->Canvas->Draw(i*50,j*50,pole4);
if (pole[i][j]==5) Image1->Canvas->Draw(i*50,j*50,pole5);
}
}
}
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
int x=X/50;
int y=Y/50;
col++;
pole[x][y]=pole[x][y]-100;
FormPaint(Sender);
if (col==1) q1=pole[x][y];
if (col==2)
{
q2=pole[x][y];
if (q1==q2)
{
for (int i=0;i<5;i++)
{
for (int j=0;j<4;j++)
{
if (pole[i][j]<100) pole[i][j]=0;
}
}
col=0;
FormPaint(Sender);
}
}
if (col>2)
{
for (int i=0;i<5;i++)
{
for (int j=0;j<4;j++)
{
if (pole[i][j]<100) pole[i][j]=pole[i][j]+100;
}
}
col=0;
FormPaint(Sender);
}
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete zakr;
zakr=NULL;
delete pusto;
pusto=NULL;
delete pole1;
pole1=NULL;
delete pole2;
pole2=NULL;
delete pole3;
pole3=NULL;
delete pole4;
pole4=NULL;
delete pole5;
pole5=NULL;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *