- •Кафедра информатики
- •Курсовая работа
- •По программированию
- •Игра «Пятнашки»
- •1. Постановка задачи.
- •1.1. Задание.
- •1.2. Алгоритмическое решение задачи.
- •1.3. Контрольные примеры
- •2. Решение задачи.
- •2.1. Выбор средств реализации.
- •2.2. Описание основных классов.
- •2.3. Интерфейс приложения.
- •3. Результат работы приложения.
1.2. Алгоритмическое решение задачи.
Класс задачи: компьютерная игра
Алгоритм решения задачи довольно прост, программе в начале игры нужно перемешать фишки на игровом поле. Далее ей остается только подсчитывать время игры, а также после каждого сделанного хода проверять, не завершена ли игра.
Алгоритм перемешивания костяшек(shuffle):
Сначала расставляем фишки в порядке возрастания.
Генератор случайных чисел генерирует цифры от 1 до 15
Задаются начальные координаты пустой клетки.
Перемешиваем...
Выбираем случайное направление, откуда будет перемещена
фишка в пустую клетку.
Пытаемся переместить...
Если вдруг оказалось, что фишки всё ещё стоят упорядоченно
(что крайне маловероятно), перемешиваем их ещё раз.
Обновляем игровое поле.
Играем.
Алгоритм проверки завершения игры(testGrid):
После каждого сделанного хода, метод testGrid проверяет не завершена ли игра, то есть проверяет чтобы фишки располагались на поле в порядке возрастания номеров.
Если нашли несоответствие этому правилу, то возвращаем false и игра продолжается.
Если расположение костяшек соответствует этому правилу ставиться true,игра пройдена, отключаем счётчик времени и вызываем небольшое окошко с информацией о том сколько времени было затрачено на прохождение игры .
1.3. Контрольные примеры
Так как сложность и длительность игры зависит от того насколько фишки(костяшки) перемешаны в игровом поле , то представлю три примера расположения фишек и сколько времени у меня это займет. Для тестирования программа была запущена в среде Microsoft Windows 7 Ultimate кликом по иконке программы.
Пример №1.
Для решения данной раскладки мне потребовалось 329 секунд
Пример №2
А для данного примера 343 секунд.
Пример № 3
И для решения последнего я потратил
2. Решение задачи.
Программная реализация головоломки является довольно простой. Абстракция игровой коробки с костяшками — двумерный массив чисел.
Задачи программы: перемешивать числа в массиве в начале игры, позволять пользователю менять местами числа в массиве в соответствии с правилами оригинальной головоломки, отображать результаты на экране монитора и отслеживать момент завершения игры (когда все числа в массиве будут расположены в порядке возрастания).
2.1. Выбор средств реализации.
В качестве языка программирования для реализации задачи был выбран Java, как популярный кросплатформенный современный объектно-ориентированный язык, имеющий все необходимые средства и мощную поддержку со стороны разнообразных инструментариев в т.ч. IDE (интегрированных сред разработки).
J
Рисунок 1: Дюк, талисман языка Java
ava — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) вне зависимости от компьютерной архитектуры.На
рисунке
1.
представлен талисман Java
языка.
Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор. Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина.
Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.
В качестве IDE для разработки был использован Eclipse. На рисунке 1 изображён логотип Eclipse.
Рис 1. Логотип Eclipse
Eclipse (от англ. затмение) — свободная интегрированная среда разработки модульных кроссплатформенных приложений. Развивается и поддерживается Eclipse Foundation.
Первоначально Eclipse разрабатывалась фирмой IBM как преемник среды разработки IBM VisualAge, в качестве корпоративного стандарта IDE для разработки на разных языках под платформы IBM. По сведениям IBM, проектирование и разработка стоили 40 миллионов долларов.[2] Исходный код был полностью открыт и сделан доступным после того, как Eclipse был передан для дальнейшего развития независимому от IBM сообществу.
Наиболее известные приложения на основе Eclipse Platform — различные «Eclipse IDE» для разработки ПО на множестве языков (например, наиболее популярный «Java IDE», поддерживавшийся изначально, не полагается на какие-либо закрытые расширения, использует стандартный открытый API для доступа к Eclipse Platform).
Eclipse служит в первую очередь платформой для разработки расширений, чем он и завоевал популярность: любой разработчик может расширить Eclipse своими модулями. Уже существуют Java Development Tools (JDT), C/C++ Development Tools (CDT), разрабатываемые инженерами QNX совместно с IBM, и средства для языков Ada (GNATbench, Hibachi), COBOL, FORTRAN, PHP и пр. от различных разработчиков. Множество расширений дополняет среду Eclipse менеджерами для работы с базами данных, серверами приложений и др.
Eclipse написана на Java, потому является платформо-независимым продуктом, за исключением библиотеки SWT, которая разрабатывается для всех распространённых платформ. Библиотека SWT используется вместо стандартной для Java библиотеки Swing. Она полностью опирается на нижележащую платформу (операционную систему), что обеспечивает быстроту и натуральный внешний вид пользовательского интерфейса, но иногда вызывает на разных платформах проблемы совместимости и устойчивости приложений.
Для создания графического интерфейса была выбрана библиотека Swing. Swing — библиотека для создания графического интерфейса для программ на языке Java. Swing была разработана компанией Sun Microsystems. Она содержит ряд графических компонентов, таких как кнопки, поля ввода, таблицы и т. д. Swing относится к библиотеке классов JFC. Java Foundation Classes, сокращенно JFC — набор библиотек классов на языке Java предоставляющих программам на Java удобный API для создания графического интерфейса пользователя (GUI). В состав JFC входят, в частности, библиотека Swing, Java 2D и многие другие, включая исторически первую библиотеку Java для создания пользовательских интерфейсов — Abstract Window Toolkit.
Название Java Foundation Classes перекликается с названием известной оконной библиотеки MFC (Microsoft Foundation Classes) для платформ Windows. И действительно, функционально JFC решает задачи, сходные с теми, которые решает MFC. Как и MFC, JFC предназначена прежде всего для создания графических пользовательских интерфейсов. Однако идеологически JFC совершенно отлична от MFC. Если MFC создавалась для облегчения работы программиста в среде Windows, для предоставления ему абстрактных оберток над «голым» Windows API (на котором в принципе возможно реализовать все то же самое, не пользуясь MFC), то JFC является интегральной частью самой платформы Java, а не оберткой над неким нативным API. Кроме того, JFC, будучи реализована на полностью объектно-ориентированном языке Java, гораздо более последовательно соответствует идеологии и парадигме объектно-ориентированного программирования.
По уровню абстракции, предоставляемому JFC, ее уместно сравнивать не с MFC, а с Windows Forms (частью библиотеки .NET FCL, предназначенной для реализации GUI-приложений на платформе «.NET Framework») или с классами Qt для GUI.
Qt (произносится «къют») — кросс-платформенный инструментарий разработки ПО на языке программирования C++. Есть также «привязки» ко многим другим языкам программирования: Python — PyQt, PySide; Ruby — QtRuby; Java — Qt Jambi; PHP — PHP-Qt и другие.
Позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.
Существуют версии библиотеки для Microsoft Windows, систем класса UNIX с графической подсистемой X11, iOS, Mac OS X, Microsoft Windows CE, QNX, встраиваемых Linux-систем и платформы S60. В данный момент рассматривается возможность внедрения поддержки Qt в Windows Phone. Также идёт портирование на Haiku.
До недавнего времени библиотека Qt также распространялась ещё в одной версии: Qt/Embedded. Теперь эта платформа переименована в Qtopia и распространяется как отдельный продукт. Qtopia Core обеспечивает базовую функциональность для всей линейки платформ, предназначенных для разработки приложений для встраиваемых и мобильных устройств (КПК, смартфонов и т. п.).
