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

Задача 46 Игра "Парные картинки"

Игра Парные картинки (Рис. 54) развивает внимание. Вот ее правила. Игровое поле разделено на клетки, за каждой из которых скрыта картинка. Картинки парные, т. е. на игровом поле есть две клетки, в которых находятся одинаковые картинки. В начале игры все клетки "закрыты". Щелчок левой кнопкой мыши "открывает" клетку, в клетке появляется картинка. Теперь надо найти клетку, в которой находится такая же картинка, как и в открытой клетке. Щелчок по другой клетке открывает вторую картинку (рис. 1.65). Если картинки в открытых клетках одинаковые, то эти клетки "исчезают". Если разные — то клетки остаются открытыми. Следующий щелчок закрывает открытые клетки и открывает следующую. Следует обратить внимание, что две открытые клетки закрываются даже в том случае, если открытая картинка такая же, как и одна из двух открытых. Игра заканчивается, когда игрок откроет — "найдет" все пары картинок.

Рис 54

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

Листинг

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

intpole[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;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

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;

}

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