Любимая игра в пятнашки, разработнная в более интересном стиле для игры. Вместо привычных костяшек с номерами цифр до 15, было придумано решение разделить единую картинку на 15 частей. Таким образом нам требуется собрать картинку по тем же правилам, что и в пятнашках.
Для студентов или кому нужны именно цифры, вы можете сделать картинку с цифрами от 1 до 15 размером 640x480 формата bmp и подложить её в папку images, которую вы увидите в основной директории игры после покупки архива.
Открыть проект можно в Visual Studio IDE. Игра была разработана на Visual C++/CLR.
Функционал игры:
- Старт игры:

- После нажатия кнопки "Новая игра", алгоритм разрезает целую картинки на отдельные части и перемешивает их:

- В нижней части окна идёт подсчет количества ходов:

- В игре реализована возможность просмотра исходной картинки, для того чтобы было понятно какую картинку нужно собрать:

Пример исходного кода - отрисовка поля:
void drawField() {
// рисуем клетки
for (int i = 0; i < nw; ++i)
for (int j = 0; j < nh; ++j) {
if (field[i, j] != 0) {
// рисуем фрагмент картинки:
// копируем фрагмент с одной графической
// поверхности на другую
// куда
Rectangle r1 =
Rectangle(i * WidthCell,
j * HeightCell + menuStrip1 - > Height,
WidthCell, HeightCell);
// откуда
Rectangle r2 = Rectangle(
((field[i, j] - 1) % nw) * WidthCell,
((field[i, j] - 1) / nw) * HeightCell,
WidthCell, HeightCell);
// копируем
g - > DrawImage(pics, r1, r2, GraphicsUnit::Pixel);
} else
// выводим пустую фишку
g - > FillRectangle(SystemBrushes::Control,
i * WidthCell, j * HeightCell + menuStrip1 - > Height,
WidthCell, HeightCell);
g - > DrawRectangle(Pens::White, i * WidthCell, j * HeightCell + menuStrip1 - > Height,
WidthCell, HeightCell);
if ((showNumbers) && field[i, j] != 0)
g - > DrawString(
Convert::ToString(field[i, j]),
gcnew System::Drawing::Font("Tahoma",
12, FontStyle::Regular),
Brushes::Black,
(float) i * WidthCell + 5,
(float) j * HeightCell + 5 + menuStrip1 - > Height);
}
}
Содержание архива:
- исходный код игры
- готовый exe файл игры
Телеграм
-