Любимая игра в пятнашки, разработнная в более интересном стиле для игры. Вместо привычных костяшек с номерами цифр до 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 файл игры
Alekseev