- •Задача 1. Конвертер
- •Задача 2. Фунты-килограммы
- •Задача 3. Сила тока.
- •Задача 4. Сопротивление
- •Задача 5. Кафе
- •Задача 6. Любимый напиток
- •Задача 7. Электроэнергия
- •Задание 8. Осаго
- •Задание 9.Просмотр иллюстраций
- •Задача 10. Калькулятор
- •Задача 11. Калькулятор-2
- •Задача 12.Секундомер
- •Задача 13. Угадай число
- •Задание 14.Угадай число-2
- •Задание 15.Запуск Internet Explorer
- •Задание 16.Конвертор
- •Задание 17.Конвертор 2
- •Задание 18.Погода
- •Задание 19.Средняя температура
- •Задание 20. Простая база данных
- •Задание 21. Редактор текста
- •Задание 22. Приветствие
- •Задача 23. Олимпийский флаг
- •Задание 24. Диаграмма
- •Задача 26. Круговая диаграмма.
- •Задача 27. Просмотр иллюстраций.
- •Задача 28 .Часы
- •Задача 29. Пинг понг.
- •Задача 30. Полет в облаках
- •Задача 31.Баннер
- •Задача 32. Фоновый рисунок
- •Задача 33. Wav
- •Задача 34. Mp3 Player
- •Задача 35.Воспроизведение midi
- •Задача 36.Compact Disk Player (версия 1)
- •Задача 37.Compact Disk Player (версия 2)
- •Задача 38.VideoPlayer
- •Задача 39. Анимация
- •Задача 40. Записная книжка
- •Задача 41 Магазин
- •Задача 42. Ежедневник
- •Задача 43. Сапер
- •Часть 1. Примеры и задачи
- •Часть 1. Примеры и задачи
- •Задача 44 Игра 15
- •Часть 1. Примеры и задачи
- •Задача 45. Игра "Собери картинку" (Puzzle)
- •Задача 46 Игра "Парные картинки"
- •Задача 47. Экзаменатор
- •Задача 48. Экзаменатор-2
- •Задача 49. Календарь
- •Задача 50. Будильник
- •Задача 51. Очистка диска
- •Задача 52.Печать
- •Задачи для самостоятельного решения Задача 1. Скидка
- •Задача 2.Доход по вкладу
- •Задача 3. Таблица умножения
- •Задача 4.Поездка на автомобиле
- •Задача 5.Стоимость разговора
- •Задача 6. Стеклопакет
- •Задача7. Калькулятор
- •Задача 8. Электроэнергия
- •Задача 9. Добрый день
- •Задача 10. Часы
- •Задача 11. Узоры
- •Задача 12. Курс доллара
- •Задача 13. Диаграмма
- •Задача 14. Домашние животные
- •Задача 15. Кораблик
- •Задача 16. Сапер
- •Задача 17 .Экзаменатор
- •Задача 18. База данных "Расходы"
Задача 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;
}
//---------------------------------------------------------------------------
