Игра «Пятнашки»

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ  И РАДИОЭЛЕКТРОНИКИ

ИНСТИТУТ  ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ 

ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ 
 
 
 
 
 
 

Игра  «Пятнашки» 

Пояснительная записка

к курсовому  проекту по дисциплине

«Операционные системы и системное программирование» 
 
 
 
 
 
 
 
 
 

Руководитель проекта        /  Лукин Е.С. /

Студент гр.981012              / Воеводенко Е.А. / 
 
 

2011

Содержание 

Введение...................................................................................................................3

1 Анализ задачи 6

1.1 Цель разработки и функциональное назначение программного продукта 6

1.2 Анализ существующих аналогов продукта 7

2 Требования к программе 8

2.1 Системные требования 8

3 Инструментальные средства для создания программного продукта 10

3.1 Вычислительная система 10

3.2 Среда разработки 13

4 Проектирование 16

4.1 Концептуальный прототип 16

4.2 Описание модулей 18

4.3 Входные данные 20

4.4 Выходные данные 20

4.5 Логика программы 21

5 Тестирование и отладка 22

Заключение 23

Список литературы 24

Приложение A Диаграммы 25

Приложение Б Текст программы 27 
 
 
 
 

 
Введение 

     Электронно-вычислительная техника все шире входит во все  сферы нашей жизни. Компьютер  стал привычным не только в производственных цехах, научных лабораториях, но и  в сфере обслуживания, офисах и  дома. С помощью компьютера не только решают разнообразные задачи, требующие большой вычислительной мощности, но и часто используют при обработке деловой и графической информации, в процессе обучения,  в качестве  соперника в играх и многих других областях деятельности человека.

     В настоящее время индустрия производства компьютеров и программного обеспечения  для них является одной из наиболее  быстро развивающихся и прибыльных сфер экономики  развитых стран. И  все же, несмотря на богатые возможности  современных компьютеров, зачастую персональный компьютер используют всего лишь как удобную электронную  пишущую машинку. Это связано  с дефицитом  программ для узкоспециального использования. Специализированные программы  дорогостоящи, слишком громоздки,  предлагают слишком большое количество функций, не применяемых пользователями в повседневной работе.

     В настоящее время большие возможности  для разработки приложений дает такая  среда разработки как Visual Studio 2008. Она нацелена на создание приложений для ОС Windows Vista (но поддерживает и XP), Office 2007 и веб-приложений. С помощью приложений разработанных в среде Visual Studio решаются самые разнообразные задачи, в различных сферах деятельности человека.

     Цель  проекта заключается в том, чтобы  создать программу, при помощи которой  пользователь сможет проверить свои логические  способности, попробовав решить одну из древнейших головоломок «Пятнашки».

     Программа должна быть совместима с операционной системой Windows XP,  Windows Vista и Windows 7, а так же при разработке программы необходимо использовать функции Win API.

     Windows API (англ. application programming interfaces) — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Windows. API является самым прямым способом взаимодействия приложений с Windows. Для создания программ, использующих Windows API, «Майкрософт» выпустил SDK, который называется Platform SDK и содержит документацию, набор библиотек, утилит и других инструментальных средств.

     Win32 — 32-разрядный API для современных версий Windows. Самая популярная ныне версия. Базовые функции этого API реализованы в DLL kernel32.dll и advapi32.dll; базовые модули GUI — в user32.dll и gdi32.dll. В современных версиях Windows, происходящих от Windows NT, работу Win32 GUI обеспечивают два модуля: csrss.exe (Client/Server Runtime Subsystem), работающий в пользовательском режиме, и win32k.sys в режиме ядра. Работу же системных Win32 API обеспечивает ядро — ntoskrnl.exe

     Использование этих функций значительно увеличивает  возможности программиста в системе, большое количество WIN API-функций  позволяет выполнять множество  задач, при этом используя минимальное количество аппаратных ресурсов. 
 
 
 
 
 
 

 

    1 Анализ задачи 

     В соответствии с условием задачи требуется  разработать программу, при помощи которой пользователь сможет проверить свои логические  способности, попробовав решить всем известную головоломку «Пятнашки». Программа должна обладать следующим набором возможностей:

  • интуитивно понятным интерфейсом;
  • графически точным табло, где осуществляется перемещение цифр;
  • удобным для пользователя управлением;
  • возможностью в любой момент покинуть игру.

     Также должна быть разработана справочная информация и руководство пользователя. 

    1.1 Цель разработки и функциональное назначение программного продукта 

     Основной  целью разработки данного проекта  являлось создание программы с использованием графических возможностей Win API. Данная программа должна стать компьютерной версией знаменитой игры «Пятнашки».

     Цель  проекта заключается в том, чтобы  создать программу, при помощи которой пользователь сможет отвлечься от повседневных дел и при этом развить свои логические способности. 

 

    1.2 Анализ существующих аналогов продукта 

     На  данный момент существует множество  аналогов данной игры, которые разработаны  как крупными компаниями по производству компьютерных игр, так и программистами-любителями. Одним из распространенных аналогов игры является виджет для рабочего стола в операционных системах Windows 7 и Windows Vista. 

 

    2 Требования к программе 

       При разработке приложения необходимо создать  собственный интерфейс. Пользователь должен видеть графическое табло, на котором расположены пятнадцать клеток с цифрами от 1 до 15 и одна пустая клетка. Нужно предусмотреть возможность простого и понятного управления при перетаскивании клеток с цифрами по игровому полю. Интерфейс должен быть интуитивно понятен, как опытному пользователю, так и новичку.

     При прорисовке игрового поля необходимо использовать функции Win API.

     Необходимо  организовать понятную для простого пользователя справочную систему с описанием правил игры и действий пользователя при перемещении клеток по игровому полю.

     Предусмотреть совместимость с ОС Windows XP,  Windows Vista, Windows 7. Windows Seven одна из самых успешных систем, которая очень быстро внедряется в современное общество и набирает обороты.

     Все реализованные функции программы  должны быть протестированы на разных версиях операционных систем от Microsoft, а так же на разных конфигурациях оборудования. 

    2.1 Системные требования 

     Невысокий уровень потребляемых ресурсов при работе с данной программой, позволяет использовать ее на компьютерах с различной конфигурацией.

     Испытание и компиляция программы проводилась  на компьютере со следующей конфигурацией:

    • материнская плата FOXCONN 945P7AA-8KS2 (Based on Intel® 945 Chipset, support FSB 1066MHz Socket 775 Processor, DDR2 Type Memory (4 memory slots), USB 2.0, PCI Express x16, 8 Channel Audio, Gigabit LAN, 3 IDE and 4 Serial ATA II ports);
    • процессор Intel Pentium-4 630+ 3.0GHz Socket LGA775 (800MHz FSB, 2Mb L2 Cache);
    • оперативная память DDR2 PC-4200 512Mb M-tec;
    • видеоадаптер GeForce 6600LE Albatron 256Mb PCI Express ;
    • винчестер Seagate Barracuda 7200 250Gb SATA, Samsung 40Gb IDE;
    • звуковая карта Creative SBLive;
    • CD-привод DVD-RW Teac DV-W516GB;
    • модем BulletFax modem E56k;
    • Жесткий диск, разбитый на два логических.

 

    3 Инструментальные средства для создания программного продукта 

      3.1 Вычислительная система 

       Разрабатываться проект будет в операционной системе  Windows XP, для неё же и будет предназначен.

       Windows XP (кодовое название при разработке — Whistler; внутренняя версия — Windows NT 5.1) — операционная система семейства Windows NT от компании Microsoft. Она была выпущена 25 октября 2001 года и является развитием Windows 2000 Professional. Название XP происходит от англ. experience (опыт, впечатление, от прилагательного профессиональный). Название вошло в практику использования, как профессиональная версия.

       В отличие от предыдущей системы Windows 2000, которая поставлялась как в серверном, так и в клиентском вариантах, Windows XP является исключительно клиентской системой. Её серверным вариантом является выпущенная позже система Windows Server 2003. Windows XP и Windows Server 2003 построены на основе одного и того же ядра операционной системы, в результате их развитие и обновление идет более или менее параллельно.

       Windows XP выпускается во многих вариантах:

    • Windows XP Professional Edition была разработана для предприятий и предпринимателей и содержит такие функции, как удалённый доступ к рабочему столу компьютера, шифрование файлов (при помощи Encrypting File System), центральное управление правами доступа и поддержка многопроцессорных систем.
    • Windows XP Home Edition — система для домашнего применения. Выпускается как недорогая «урезанная» версия Professional Editon, но базируется на том же ядре и при помощи некоторых приёмов позволяет провести обновление до почти полноценной версии Professional Edition.
    • Windows XP Professional x64 Edition — специальная 64-разрядная версия, разработанная для процессоров с технологией AMD64 Opteron и Athlon 64 от фирмы AMD и процессоров с технологией EM64T от фирмы Intel. Эта система не поддерживает процессоры других производителей, а также не работает с процессором Intel Itanium. Хотя первые 64-разрядные процессоры появились в 2003 году, Windows XP Professional x64 Edition вышла в свет только в апреле 2005 года. Основным достоинством системы является быстрая работа с большими числами (Long Integer и Double Float). Таким образом, эта система очень эффективна, например, при выполнении вычислений, использующих числа с плавающей запятой, необходимых в таких областях, как создание спецэффектов для кинофильмов и трёхмерной анимации, а также разработка технических и научных приложений. Данная система поддерживает смешанный режим, то есть одновременную работу 32- и 64-разрядных приложений, однако для этого все драйверы должны быть в 64-разрядном исполнении. Это означает, что большинство 32-разрядных приложений могут работать и в этой системе. Исключение составляют лишь те приложения, которые сильно зависят от аппаратного обеспечения компьютера, например, антивирусы и дефрагментаторы.

       Также существуют следующие варианты Windows XP: Windows XP Tablet PC Edition, Windows XP Media Center Editio, Windows XP Embedded, Windows XP Professional x64 Edition, Windows XP 64-bit Edition, Windows XP Edition N, Windows XP Starter Editio, Windows Fundamentals for Legacy PCs.

       Некоторыми  из наиболее заметных улучшений в  Windows XP по сравнению с Windows 2000 являются:

    • новое оформление графического интерфейса, включая более округлые формы и плавные цвета; а также дополнительные функциональные улучшения (такие, как возможность представления папки в виде слайд-шоу в проводнике Windows).
    • возможность быстрого переключения пользователей, позволяющая временно прервать работу одного пользователя и выполнить вход в систему под именем другого пользователя, оставляя при этом приложения, запущенные первым пользователем, включёнными.
    • функция «удалённый помощник», позволяющая опытным пользователям и техническому персоналу подключаться к компьютеру с системой Windows XP по сети для разрешения проблем. При этом помогающий пользователь может видеть содержимое экрана, вести беседу и (с позволения удалённого пользователя) брать управление в свои руки.
    • программа восстановления системы, предназначенная для возвращения системы в определённое предшествующее состояние (эта функция является развитием аналогичной программы, включённой в Windows Me), а также улучшение других способов восстановления системы. Так, при загрузке последней удачной конфигурации загружается также и прежний набор драйверов, что позволяет в ряде случаев легко восстановить систему при проблемах, возникших в результате установки драйверов; возможность отката драйверов и т. д.
    • улучшенная совместимость со старыми программами и играми. Специальный мастер совместимости позволяет эмулировать для отдельной программы поведение одной из предыдущих версий ОС (начиная с Windows 95).
    • возможность удалённого доступа к рабочей станции благодаря включению в систему миниатюрного сервера терминалов (только в издании Professional).
    • более развитые функции управления системой из командной строки.
    • поддержка проводником Windows цифровых фотоформатов (например, представление папки в виде слайд-шоу) и аудиофайлов (автоматическое отображение метаданных для аудиофайлов, например, тегов ID3 для MP3-файлов).
    • Windows XP включает технологии, разработанные фирмой Roxio, которые позволяют производить прямую запись CD из проводника, не устанавливая дополнительное ПО, а работа с перезаписываемыми компакт-дисками становится подобной работе с дискетами или жёсткими дисками. Также в Media Player включена возможность производить запись аудио-дисков. Возможности работы с образами дисков не предусмотрена.
    • Windows XP может работать с архивами ZIP без установки дополнительного ПО. Работа с архивами данного типа возможна в проводнике как с обычными папками, которые можно создавать и удалять, заходить в архив, добавлять/удалять файлы подобно работе с обычными папками. Также возможна установка пароля на архив. При необходимости можно назначить для работы с этими архивами любое стороннее программное обеспечение.

     Исключительно важной чертой Windows является единый стандарт в работе, как с самой системой, так и с ее программными приложениями. Это означает, что, изучив технологию работы с одной программой, вы легко перейдете к работе с другой. Кроме того, Windows сегодня содержит такой спектр программных средств, что они практически покрывают все сферы человеческой деятельности. Эти средства постоянно пополняются новыми и более совершенными, однако стандарт работы с ними сохраняется.  

    3.2 Среда разработки 

     Данный  проект разрабатывался в программной  среде Microsoft Visual Studio 2008. Visual Studio 2008 нацелена на создание приложений для ОС Windows Vista (но поддерживает и XP), Office 2007 и веб-приложений. Включает в себя новые версии языков C# и Visual Basic.

       Microsoft Visual Studio — линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE и .NET Framework.

     Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например, Subversion и Visual SourceSafe), добавление новых наборов инструментов например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов цикла разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).

     В продукте Microsoft Visual Studio 2008 корпорация Microsoft воплотила свое видение концепции интеллектуальных клиентских приложений (smart client applications). С его помощью разработчики могут оперативно создавать подключенные приложения высочайшего качества, предоставляющие пользователям самые широкие возможности. Visual Studio 2008 значительно упрощает для предприятий сбор и анализ информации, а это означает возможность принятия более эффективных бизнес - решений. Visual Studio 2008 позволяет организациям любого размера разрабатывать более защищенные, управляемые и надежные приложения, в которых будут использованы все преимущества Windows Vista и системы Office 2007.

     Visual Studio 2008 предоставляет разработчикам новые возможности создания интеллектуальных клиентских приложений. Эти возможности, расширяющие функциональность приложений и улучшающие  производительность труда программистов, включают в себя более простую интеграцию дизайнерских решений, расширенные функции развертывания приложений, разнообразные сервисы для входа в систему и персонализации, а также улучшенные инструменты доступа к данным и синхронизации.  
 
 

 

    4 Проектирование 

    4.1 Концептуальный прототип 

     Под концептуальным прототипом понимается:

  • описание диалогов окон - подразумеваются окна, с которыми пользователь работает в диалоговом режиме (например, приложение задаёт пользователю какой-нибудь вопрос и пользователь должен ввести в это окно свой ответ).
  • описание элементов управления (различных кнопок, при помощи которых облегчается работа пользователя).

     Для удобства работы с программой все необходимые пользователю функции вызываются с одной формы при помощи специальных кнопок и выпадающих списков. Основная форма программы представлена на    рисунке 1.

     

     Рисунок 1 – Основная форма программы. 

     Перемещение клеток в программе осуществляется при помощи клавиш курсора – стрелок вверх, вниз, вправо, влево. Пример перемещения клеток по игровому полю представлен на рисунке 2.

     

     Рисунок 2 – Перемещение клеток по игровому полю. 

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

     Вызов справки осуществляется нажатием левой  кнопкой мыши на пункт меню «Помощь». В данном меню находится два подпункта «О программе» и «Правила игры». Вызов меню «Помощь» представлен на рисунке 3.

      

     Рисунок 3 - Вызов меню «Помощь». 

     При выборе пользователем меню «О программе» появляется  небольшое окно, которое содержит описание программы. Пример окна «О программе» приведен на рисунке 4.

     

     Рисунок 4 – Окно «О программе». 

     Закрытие  данного окна производится путем  нажатия на кнопку «ОК» или при  нажатии левой кнопкой мыши по «крестику» в правом верхнем углу диалогового окна. 

    4.2 Описание модулей 

     Создание главное окна и охранение дескриптора экземпляра осуществляется с помощью функции InitInstance(HANDLE, int). В этой функции мы сохраняем дескриптор экземпляра в глобальной переменной и создаем главное окно. 

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{ HWND hWnd;

   hInst = hInstance; // Сохраним дескриптор экземпляра в нашей глобальной переменной

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

      512, 240, 305, 345, NULL, NULL, hInstance, NULL);

   NewField(Moves);

   if (!hWnd)

   {

      return FALSE;

   }

   ShowWindow(hWnd, nCmdShow);

   UpdateWindow(hWnd);

   return TRUE;

} 

//прорисовываем:

int OnPaint (HWND hWnd)

{

      HDC hdc;

      PAINTSTRUCT ps;

      int iStartX=50, iStartY=50,

      iSizeX=25, iSizeY=35,

      iSizeFld=5,

      iRow, iCol; 

      RECT rt;

      hdc = BeginPaint(hWnd, &ps); 

      MoveToEx(hdc, 0, 3*Size-1, (LPPOINT) NULL);

      LineTo(hdc, 4*Size, 3*Size-1);

      MoveToEx(hdc, 0, 2*Size-1, (LPPOINT) NULL);

      LineTo(hdc, 4*Size, 2*Size-1);

      MoveToEx(hdc, 0, Size-1, (LPPOINT) NULL);

      LineTo(hdc, 4*Size, Size-1); 

      MoveToEx(hdc, Size-1,0, (LPPOINT) NULL);

      LineTo(hdc, Size-1,4*Size);

      MoveToEx(hdc, 2*Size-1,0, (LPPOINT) NULL);

      LineTo(hdc, 2*Size-1,4*Size);

      MoveToEx(hdc, 3*Size-1,0, (LPPOINT) NULL);

      LineTo(hdc, 3*Size-1,4*Size); 

      for(iRow=0;iRow<Side;iRow++)

            for(iCol=0;iCol<Side;iCol++)

            

                  rt.left=iCol*Size;

                  rt.top=iRow*Size;

                  switch(GameField[iRow][iCol])

                  {

case 0: DrawImage(hdc, hBitmapNum0,rt.left,rt.top);

break;

case 1: DrawImage(hdc, hBitmapNum1,rt.left,rt.top);

break;

case 2: DrawImage(hdc, hBitmapNum2,rt.left,rt.top);

break;

case 3: DrawImage(hdc, hBitmapNum3,rt.left,rt.top);

break;

case 4: DrawImage(hdc, hBitmapNum4,rt.left,rt.top);

break;

case 5: DrawImage(hdc, hBitmapNum5,rt.left,rt.top);

break;

case 6: DrawImage(hdc, hBitmapNum6,rt.left,rt.top);

break;

case 7: DrawImage(hdc, hBitmapNum7,rt.left,rt.top);

break;

case 8: DrawImage(hdc, hBitmapNum8,rt.left,rt.top);

break;

case 9: DrawImage(hdc, hBitmapNum9,rt.left,rt.top);

Игра «Пятнашки»