Разработка логической игры "Сапёр"

Исследование спецификации логической игры "Сапёр". Системное и функциональное проектирование приложения. Разработка программных модулей. Обзор классов, необходимых для создания интерфейса данного приложения. Инструменты для реализации логической игры.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.01.2016
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Министерство образования Республики Беларусь

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

Кафедра электронных вычислительных машин

Факультет компьютерных систем и сетей

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовому проекту

Выполнил: Сасин Е.А.

Руководитель: Толкачёв В.И

Минск, 2014

Содержание

Введение

1. Обзор литературы

1.1 Спецификация игры “Сапёр”

1.2 Инструменты для реализации приложения

2. Системное проектирование

2.1 Структурная схема приложения Сапёр

3. Функциональное проектирование

3.1 Обзор класса Game

3.2 Обзор класса msw_state

3.3 Обзор класса cell

3.4 Обзор классов, необходимых для создания интерфейса данного приложения

4. Разработка программных модулей

4.1 Интерфейс приложения

4.2 Класс для проверки состояния ячейки

4.3 Класс для проверки состояния соседних ячеек

Заключение

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

Введение

Ни для кого не секрет, что видео игры прочно заняли свою позицию в современной индустрии развлечений. Существуют попытки выделить компьютерные игры как отдельную область искусства, наряду с театром, кино и т. п. Разработка игр может оказаться не только увлекательным, но и прибыльным делом, примеров этому предостаточно в истории. Первые примитивные компьютерные и видео игры были разработаны в 1950-х и 1960-х годах. Они работали на таких платформах, как осциллографы, университетские мейнфреймы.

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

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

1. Обзор литературы

1.1 Спецификация игры “Сапёр”

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

Изначально они все закрыты. Ячейки могут быть пустые, с цифрами и с бомбами.

Для каждой такой ячейки мы задаем класс. При нажатии левой клавиши мыши открывается ячейка, при нажатии правой кнопки, выставляется флажок, при этом левой кнопкой мыши вы уже не можете нажать на заблокированную ячейку, но правой кнопкой можно снять пометку флажка.

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

Игра считается проигранной, если вы открыли ячейку с бомбой. Игра считается выигранной, если на игровом поле все ячейки с бомбами отмечены и все остальные ячейки - открыты.

1.2 Инструменты для реализации приложения

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

C++ -- универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов.

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

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

Пакет Microsoft Foundation Classes (MFC) -- библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений для Microsoft Windows путем использования богатого набора библиотечных классов библиотека MFC, как и её основной конкурент, Borland VCL, облегчает работу с GUI путем создания каркаса приложения -- «скелетной» программы, автоматически создаваемой по заданному макету интерфейса и полностью берущей на себя рутинные действия по его обслуживанию (отработка оконных событий, пересылка данных между внутренними буферами элементов и переменными программы и т.п.). Программисту после генерации каркаса приложения необходимо только вписать код в места, где требуются специальные действия.

Одним из основных преимуществ работы с MFC является возможность многократного использования одного и того же кода. Так как библиотека содержит много элементов, общих для всех Windows-приложений, нет необходимости каждый раз писать их заново. Вместо этого их можно просто наследовать. Еще одним существенным преимуществом MFC является упрoщение взаимодействия с прикладным программным интерфейсом (API) Windows. Любое приложение взаимодействует с Windows через API, которое содержит несколько сот функций. Внушительный размер API затрудняет попытки понять и изучить его целиком. Зачастую, даже сложно проследить, как отдельные части API связанны друг с другом! Но поскольку библиотека MFC объединяет (путем инкапсуляции) фyнкции API в логически организованнoе мнoжество классoв, интерфейсом становится значительно легче управлять.

игра сапёр программный интерфейс

2. Системное проектирование

В данной главе будет рассмотрен каркас приложений и их основная логика работы.

2.1 Структурная схема приложения Сапёр

3. Функциональное проектирование

3.1 Обзор класса Game

Game является основным классом игры. В нем происходит обработка всех событий, которые происходят в игре. Структура класса представлена на рисунке 3.1

Рисунок 3.1.1 Структура класса Game

3.2 Обзор класса msw_state

В классе msw_state отображается состояние ячейки.У класса msw_state имеются 4 производных класса: OPENED,CLOSED,MARKED,EXPLODED.

Рисунок 3.2 Структура класса msw_state

3.3 Обзор класса cell

В классе cell(ячейка) содержится информация , находится ли в данной ячейке бомба или нет. У класса cell имеются два производных класса:empty_cell и bomb_cell .

Рисунок 3.3 Структура класса cell

3.4 Обзор классов, необходимых для создания интерфейса данного приложения

В данном приложении для создания меню игры и для создания поля самой игры задействовано 8 классов : MFC_painter и производный от него painter, CMainFrame, CMineSWDoc, CMineSWView, Console, CMineSWApp,CaboutDlg.

Рисунок 3.4 Структура классов , необходимых для создания интерфейса данного приложения

4. Разработка программных модулей

4.1 Интерфейс приложения

Рисунок 4.1.1 Главное меню

Рисунок 4.1.2 Окно проигрыша

Рисунок 4.1.2 Окно игры выигрыша

4.2 Класс для проверки состояния ячейки

В данном приложении для проверки состояния ячейки был разработан класс msw_state, и от него наследуются 4 производных класса(OPENED,CLOSED,MARKED,EXPLODED) .

Листинг класса msw_state

class cell;

class msw_state //состояние ячейки

{

public:

msw_state(){}

virtual ~msw_state(){}

//переходы состояний,

virtual void opened(cell* cell){} //ячейка открыта

virtual void marked(cell* cell){} //ячейка помечена

virtual void uncovered(cell* cell){} //ячейка открыта в случае проигрыша

virtual void mark_closed(cell* cell){}

virtual void exploded(cell* cell){}

virtual void draw(coord c,painter* pp);

};

class CLOSED: public msw_state

{

public:

CLOSED(){}

~CLOSED(){}

void opened(cell* cell);

void marked(cell* cell);

void uncovered(cell* cell);

void mark_closed(cell* cell);

void draw(coord c,painter* pp);

};

class OPENED: public msw_state

{

public:

OPENED(){}

~OPENED(){}

void draw(coord c,painter* pp);

void exploded(cell* cell);

};

class MARKED: public msw_state

{

public:

MARKED(){}

~MARKED(){}

void marked(cell* cell);

void uncovered(cell* cell);

void draw(coord c,painter* pp);

};

class EXPLODED: public msw_state

{

public:

EXPLODED(){}

~EXPLODED(){}

void draw(coord c,painter* pp);

};

4.3 Класс для проверки состояния соседних ячеек

В данном приложении для проверки состояния соседних ячеек был разработан класс cell_iterator

class cell_iterator // итератор ячеек "вокруг"

{

const game& msw_game;

coord cell_coord;

int direction;

cell* curr_cell;

void set_curr_cell();

public:

cell_iterator(const game& g,coord cc);

void operator++();

cell* operator *();

}; cell_iterator::cell_iterator(const game& g,coord cc): msw_game(g),cell_coord(cc)

{

direction=0;//Nord

curr_cell=NULL;

set_curr_cell();

}

void cell_iterator::operator++()

{

++direction;

set_curr_cell();

}

cell* cell_iterator::operator *()

{

return curr_cell;

}

void cell_iterator::set_curr_cell()

{

if(direction>7)

{

curr_cell=NULL;

return;

}

switch(direction)

{

case 0: //nord

if(!cell_coord.first) operator++();

else curr_cell=msw_game.minefield[(cell_coord.first-1)*msw_game.y_cells+cell_coord.second];

break;

case 1: //nord-east

if(!cell_coord.first || cell_coord.second+1==msw_game.y_cells) operator++();

else curr_cell=msw_game.minefield[(cell_coord.first-1)*msw_game.y_cells+cell_coord.second+1];

break;

case 2: //east

if(cell_coord.second+1==msw_game.y_cells) operator++();

else curr_cell=msw_game.minefield[cell_coord.first*msw_game.y_cells+cell_coord.second+1];

break;

case 3: //south-east

if(cell_coord.second+1==msw_game.y_cells || cell_coord.first+1==msw_game.x_cells) operator++();

else curr_cell=msw_game.minefield[(cell_coord.first+1)*msw_game.y_cells+cell_coord.second+1];

break;

case 4: //south

if(cell_coord.first+1==msw_game.x_cells) operator++();

else curr_cell=msw_game.minefield[(cell_coord.first+1)*msw_game.y_cells+cell_coord.second];

break;

case 5: //south-west

if(cell_coord.first+1==msw_game.x_cells || !cell_coord.second) operator++();

else curr_cell=msw_game.minefield[(cell_coord.first+1)*msw_game.y_cells+cell_coord.second-1];

break;

case 6: //west

if(!cell_coord.second) operator++();

else curr_cell=msw_game.minefield[cell_coord.first*msw_game.y_cells+cell_coord.second-1];

break;

case 7: //nord-west

if(!cell_coord.second || !cell_coord.first) operator++();

else curr_cell=msw_game.minefield[(cell_coord.first-1)*msw_game.y_cells+cell_coord.second-1];

break;

}

}

}

}

Заключение

В ходе выполнения курсового проекта было создано приложение Сапёр. Данное приложение предназначено для развития логического мышления, развития памяти, концентрации внимания. В будущем планируется разработать несколько новый модификаций данной игры, такие как : 3D Сапёр и т.д.

В ходе разработки данного проекта, были получены обширные знания в использовании библиотеки MFC вместе с языком программирования C++ и были получены навыки работы с VS 2013 Ultimate . Также в ходе разработки данного проекта был успешно изучен язык программирования С++ , а также принципы объектно-ориентированного программирования.

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

[1] MSDN ( Microsoft Developer Network ). - Электронные данные. - Режим доступа: http://msdn.microsoft.com/ru-RU/

[2] Лафоре Р. - Объектно-ориентированное программирование в С++ (Классика Computer Science) - 2004

[3]Давыдов В. - Visual C++. Разработка Windows-приложений с помощью MFC и API-функций.

[4] Microsoft Foundation Classes. - Электронные данные. - Режим доступа: https://ru.wikipedia.org/wiki/Microsoft_Foundation_Classes

[5] Сапёр (игра). - Электронные данные. - Режим доступа: https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BF%D1%91%D1%80_%28%D0%B8%D0%B3%D1%80%D0%B0%29

[6] А. Хортон.-- Visual C++ 2005.

[7] CyberForum.ru - Форум программистов и сисадминов. - Электронные данные. - Режим доступа: http://www.cyberforum.ru/

[8] Сидорина Т. Л. --Самоучитель Microsoft Visual Studio C++ и MFC. -- СПб.: БХВ-Петербург, 2009. -- 848 с

Размещено на Allbest.ru


Подобные документы

  • Разработка приложения на WinAPI с реализацией логической структуры в игре "Сапер". Реализация графической части приложения. Проверка на корректность поведения интерфейса программы, работы логической части игры, корректности записи и чтения файла.

    курсовая работа [1,1 M], добавлен 17.10.2012

  • Исследование базовых концепций программирования приложений под операционную систему Windows. Изучение истории создания универсального языка программирования Си. Разработка графического пользовательского интерфейса. Обзор правил игры и алгоритма работы.

    курсовая работа [58,2 K], добавлен 09.11.2012

  • Разработка программы "Сапер", удовлетворяющей необходимым требованиям эффективности в интегрированной среде программирования Microsoft Visual C++. Специфика создания Windows-приложений. Применение логической игры для развития интереса к обучению у детей.

    курсовая работа [511,1 K], добавлен 01.06.2013

  • Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.

    курсовая работа [12,4 K], добавлен 18.06.2008

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

    курсовая работа [341,5 K], добавлен 06.01.2015

  • Особенности создания ряда игровых приложений, логической игры. Программное обеспечение простейшего калькулятора, генератора функций. Разработка элементов интерфейса простейшего графического редактора, электронной записной книжки, текстового редактора.

    методичка [788,7 K], добавлен 24.10.2012

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

    дипломная работа [1,4 M], добавлен 19.01.2017

  • Понятие и эволюция игр, анализ их различных жанров и существующих аналогов. Выбор программных средств для реализации игры, написание сюжета и выбор среды разработки игры. Алгоритмы для придания гибкости обучающей игре. Описание программных модулей.

    дипломная работа [2,7 M], добавлен 27.10.2017

  • "Точки" как игра на бумаге в клетку, в которой участвуют от двух и более человек, знакомство с правилами. Рассмотрение особенностей реализации игры "Точки" на любом из объектно-ориентированных языках программирования. Этапы развития Visual Basic.

    курсовая работа [554,5 K], добавлен 15.05.2014

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

    курсовая работа [354,8 K], добавлен 02.03.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.