Разработка и анализ алгоритмов
Принцип работы программы основывается на изменении положения элементов в глобальном двумерном массиве, который хранит положение picturebox-ов в определенный момент времени. С помощью специальных функций осуществляется вывод на экран и изменение положения каждого изображения. Размер игрового поля определяется с помощью специальной глобальной переменной int pol. Значение этой переменной пользователь меняет во время выбора настроек игры. В функциях работа с полем происходит с учетом значения этой переменной. Массив, хранящий положение изображений сначала заполняется от 1 до pol по порядку, а последнему элементу присваивается значение 0. Далее происходит перемешивание массива путем перемещения 0 по массиву в случайном порядке. После того как массив был перемешан, на экран выводятся изображения в соответствующем порядке. Пользователь собирает их по порядку. После каждого перемещения в массиве происходит перерисовка игрового поля и проверка на правильность собранного изображения. Если пользователь собрал правильно изображение то выводиться соответствующее сообщение, уведомляющее пользователя о победе. Ниже приведено 2 примера алгоритмов использующихся в программе.
Функция проверки правильности собранного изображения. Функция проверяет, правильно ли расположены элементы в двумерном массиве, размером соответствующим размеру выбранного пользователем игрового поля. В первом цикле проходим матрицу по строкам, а во вложенном цикле по столбцам. С каждым проходом по столбцам увеличиваем переменную kol на 1. Массив должен быть расположен по возрастанию с лева направо с верху в низ от 1 до pol*pol (pol –размер игрового поля), но последним элементом является 0. Проходя массив, мы сравниваем по возрастанию все элементы матрицы и дополнительно проверяем, не дошли ли мы до конца массива, если дошли то проверяем, является ли он нулем. Если хоть одна из проверок провалится, то k=false , это значит, что массив расположен неправильно. В случае правильного положения элементов выводится изображение, уведомляющее о победе. Так же функция выводит на экран подсказку, если пользователь указал ее необходимость. bool pruf()//проверка на правильность {label2->Text=""; bool k=true; int kol=0;// колчество эл-в провереных int temp=matr[0][0];//пер-я для сравнивания for (int i=0;i<pol;i++) // проходим матрицу for (int j=0;j<pol;j++) { kol++; if (matr[i][j]<temp && kol!=pol*pol )// если текущий э-т меньше придыдущего и кол не равно размеру матрицы то не правильно { k=false;
} else if ( kol==pol*pol && matr[i][j]!=0) k=false;
temp=matr[i][j]; if (checkBox1->Checked ) label2->Text+=matr[i][j];
} if (k){ this->pictureBox18->Size = System:: Drawing:: Size(136,93);// вывод победной картинки pictureBox18->Visible=true; } return(k); }
Блок-схема процедуры:
Функция проверки возможности перемещения вверх определенного изображения. Ищем координаты изображения в массиве. Если изображение находится в первой строке то переместить вверх невозможно и мы завершаем функцию возвращая false. Если значение элемента матрицы находящегося над этой клеткой равно 0, то клетка пустая и переместить можно. Просто меняем в массиве эти значения местами и возвращаем true. В противном случае возвращаем false.
bool up(int nom)// проверка возможности перемещения вверх { int i,j; i=findi(nom);//ищем координаты плитки j=findj(nom);
if (i==0) //если это первая строка то переместить нельзя return(false); else if (matr[i-1][j]==0) //если сверху клетка пуста то переместить можно {int temp; temp=matr[i][j]; //меняем местами плитки matr[i][j]=matr[i-1][j]; matr[i-1][j]=temp; return(true); // поэтому возвращаем 1 }
return(false); }
3. РЕАЛИЗАЦИЯ ПРОГРАММЫ НА ЯЗЫКЕ С++ Архитектура программы В основном для реализации программы были использованы функции циклов (if, for), для перемещения картинок и формирования игрового поля. Так же использовалась процедура rand для случайного формирования матрицы чисел.
3.2. Выбор стандартных визуальных и не визуальных компонентов Для создания интерфейса использовались: · Button; · Label; · Panel; · TrackBar; · Textbox. · PictureBox
Популярное: Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (336)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |