Реализация программного модуля

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 25.05.2014
Размер файла 512,8 K

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

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

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

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

КУРСОВАЯ РАБОТА

РЕАЛИЗАЦИЯ ПРОГРАММНОГО МОДУЛЯ

Содержание

Введение

1. Постановка задачи

1.1 Общая характеристика задачи

2. Проектирование программного модуля

2.1 Расчетные формулы метода

2.2 Описание схемы программы

3. Реализация программного модуля

3.1 Описание структуры разрабатываемого пакета

3.2 Описание используемых типов данных

3.3 Создание основной формы программы

3.4 Написание кода основных расчетов

3.5 Вывод результатов

3.6 Проектирование интерфейса программы

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

Введение

Игра Конвея "Жизнь" - типичный пример клеточного автомата, как математического объекта, представляющего собой дискретную динамическую систему. По существу клеточные автоматы являются синтетическими мирами, поведение которых большей частью определяется простыми локально действующими правилами. В этих мирах пространство представляет собой равномерную сетку, каждая ячейка которой (клетка) содержит информацию о своем состоянии. Время - дискретно. Законы такого мира представляют собой небольшое количество правил, основные из которых описываются таблицей переходов, по которой клетка вычисляет свое новое состояние на каждом такте (минимальный отрезок времени) на основе своего состояния и состояний ее соседей.

Примеры развития колоний в игре "Жизнь"

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

1. Постановка задачи

1.1 Общая характеристика задачи

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

Суть "Жизни" очень проста, как и суть обычной человеческой жизни. На игровом поле располагается в некотором начальном порядке определенное количество фишек, которые задают начальные условия эволюционного процесса. Каждая ячейка игрового поля может находиться в двух состояниях - либо оставаться пустой, либо быть занятой фишкой. Игра состоит из «циклов жизни», или из последовательности дискретных шагов, с помощью которых имитируется смена поколений. Переход от предыдущего поколения к следующему происходит по определенным правилам, которые применяются одновременно ко всем клеткам доски.

Предусмотреть графический интерфейс.

2. Проектирование программного модуля

2.1 Расчетные формулы метода

Расчётные формулы метода отражают правила самой игры, т.е. когда клетки должны рождаться и когда должны умирать.

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

1. Клетка выживает, если ее окружают 2 или 3 закрашенные клетки

2. Клетка гибнет, если ее окружают более 3-х закрашенных клеток

3. Клетка гибнет, если ее окружают менее 2-х закрашенных клеток

4. Клетка рождается, если ее окружают 3 закрашенные клетки.

2.4 Описание схемы программы

3. Реализация программного модуля

3.1 Описание структуры разрабатываемого пакета

Программа представляет собой окно, в котором расположено поле. На этом поле происходит рисование клеток. Рисование клеток происходит с помощью функции paintEvent(). И кнопка, по нажатию на которую, будет происходить итерация жизненных циклов. Нажатие кнопки вызывает событие ris(), в котором производятся основные расчёты. Так же к окну добавлен такой стандартный элемент как "Главное меню". Главное меню создаётся с помощью метода menuBar()->addmenu() класса QMenu. Функциональность к пунктам главного меню добавляется с помощью объектов класса QAction. Т.е. добавляем событие к пункту меню, которое связывается с обработчиком события с помощью функции connect(). Через главное меню будет происходить настройка приложения и отображение краткой информации о приложении, с помощью диалогового окна. Диалоговое окно создаётся с помощью объекта класса QDialog, к которому мы подключаем спроектированное диалоговое окно в QtDesigner. Выход из приложения так же осуществляется с помощью главного меню. Через главное меню можно будет начать игру заново с новыми начальными данными. При этом вызывается функция restart(), в которой вызывается метод random(), созданного нами класса Life, который и задаёт новые значения экземпляру imatrix[20][20] класса Life. По данным массива imatrix происходят основные расчёты. Так же функция restart() вызывает функцию repaint(), которая производит перерисовку клеток.

3.2 Описание используемых типов данных

Для реализации программного модуля используются следующие типы данных:

· Int - целочисленный тип данных, используемый для фиксирования расчётов в программе.

· QString - строковый тип данных, предназначенный хранения строковых величин.

· QPushButton - тип, используемый для добавления на форму кнопок.

· QMenu - тип, используемый для добавления на форму главного меню

· QAction - тип, используемый для реализации функциональности пунктов главного меню.

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

· QPainter - тип, используемый для рисования объектов на форме.

· QHBox Layout - тип, используемый для горизонтальной компоновки виджетов на форме.

· QWidget - тип, используемый для отображения и использования виджетов.

· QValidator - тип, используемый для ограничения ввода данных пользователем.

3.3 Создание основной формы программы

Основная форма программы создаётся, с помощью следующего кода:

QWidget *wgt = new QWidget;

int h;

int w;

h = a.screen()->geometry().height();

w = a.screen()->geometry().width();

board = new Life;

setWindowTitle(tr("Жизнь - Игра"));

setGeometry((h - (board->n_c*50)+115)/2,(h - board->n_r*50+70)/4, 1, 1);

setFixedSize(board->n_c*50+115,board->n_r*50+70);

setCentralWidget(wgt);

QPushButton *btngo = new QPushButton(QObject::tr("Вперед"));

btngo->setFixedSize(70,28);

QObject::connect(btngo, SIGNAL(clicked()), board, SLOT(ris()));

QHBoxLayout *lay = new QHBoxLayout;

lay->addWidget(board);

lay->addWidget(btngo);

wgt->setLayout(lay);

createActions();

createMenus();

3.4 Написание кода основных расчетов

Основным событием программы, является переход от одного жизненного цикла к другому, в процессе которого некоторые клетки погибают, а некоторые рождаются. Расчёт перехода от одного жизненного цикла к другому реализуется с помощью созданной функции ris(), код которой следующий:

int count = 0;

for (int i = 0; i < n_r; i++)

for (int j = 0; j < n_c; j++)

{if (imatrix[i+1][j] == 1) count++;

if (imatrix[i+1][j+1] == 1) count++;

if (imatrix[i+1][j-1] == 1) count++;

if (imatrix[i][j+1] == 1) count++;

if (imatrix[i][j-1] == 1) count++;

if (imatrix[i-1][j-1] == 1) count++;

if (imatrix[i-1][j] == 1) count++;

if (imatrix[i-1][j+1] == 1) count++;

if (count > 1 && count < 4 && imatrix[i][j] == 1) newmatrix[i][j] =1;

if (count == 3 && imatrix[i][j] == 0) newmatrix[i][j] =1;

if (count > 3) newmatrix[i][j] = 0;

if (count < 2) newmatrix[i][j] = 0;

count = 0;

for (i = 0; i < n_r; i++)

for (int j = 0; j < n_c; j++) imatrix[i][j] = newmatrix[i][j];

repaint();

В зависимости от обработанных данных функцией ris(), происходит перерисовка поля, на котором отображается новое расположение клеток. Перерисовка осуществляется с помощью функции repaint(), которая вызывает в себе переопределённую нами виртуальную функцию paintEvent().

3.5 Вывод результатов

В зависимости от условий расположения закрашенных клеток, результаты могут быть различны. К примеру, если на поле остались только 4 клетки, расположенные рядом друг с другом кубиком, то на этом игра и остановится, потому что по условиям игры в этой ситуации клетки не рождаются и не погибают. Данный результат игры отображён на скриншоте:

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

из этого получится следующие и будет происходить по кругу:

Так же возможно, что некоторые результаты будут совместимы, что мы и видели на предыдущих двух скриншотах.

Может возникнуть такая ситуация, что все клетки погибнут, тогда появится оповещающее окно об окончанни игры, после чего игра начнётся заново. Данная ситуация отображена на следующем скриншоте:

3.6 Проектирование интерфейса программы

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

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

1. Язык программирования С++ специальное издание / Бьёрн Страуструп; перевод с английского С. Анисимова и М. Кононова; под ред. Ф. Андреева и У. Ушакова. - Москва: Бином-Пресс, 2007. - 753-755 с.

2. Qt4: программирование GUI на С++ / Жасмин Бланшет, Марк Саммерфилд. - Москва: КУДИЦ-ПРЕСС, 2007. - 14-73 с.

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

...

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

  • Проектирование программного модуля. Описание схемы программы и структуры разрабатываемого пакета. Написание кода ввода исходных данных и основных расчетов. Тестирование программного модуля. Тестирование решения задачи. Методы численного интегрирования.

    курсовая работа [549,9 K], добавлен 20.03.2014

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

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.

    курсовая работа [215,3 K], добавлен 01.09.2010

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

    курсовая работа [606,7 K], добавлен 19.01.2012

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

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

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

    отчет по практике [961,6 K], добавлен 21.04.2012

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

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

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

    курсовая работа [146,6 K], добавлен 01.09.2010

  • Требования к аппаратному и программному обеспечению, требуемому для разработки программного модуля. Критерии приемлемости разрабатываемого программного продукта. Разработка удобного пользовательского интерфейса программы. Алгоритм и листинг программы.

    курсовая работа [2,6 M], добавлен 23.11.2011

  • Создание программного модуля, выполненного на языке программирования VBA (Visual Basic for Applications) и позволяющего во введенном массиве символов удалить все повторные вхождения этих символов. Разработка пользовательского интерфейса. Код программы.

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

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

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

  • Основные стадии разработки, принципы тестирования и отладка программного модуля "VFS". Особенности проектирования на языке UML. Методы "грубой силы" и их применение при отладке программы. Вредные факторы, присутствующие на рабочем месте программиста.

    дипломная работа [827,0 K], добавлен 07.03.2012

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

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

  • Проектирование базы данных, информационной подсистемы PLC-Tester, модуля тестирования и web-приложения. Разработка логической структуры программного продукта и общие требования к техническому обеспечению. Запуск программы и описание тестовых прогонов.

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

  • Анализ предметной области разрабатываемого программного продукта. Разработка интерфейса пользователя и структурной схемы игровой программы "Крестики-нолики". Отладка и тестирование. Проведение исследования компонентов программной среды Borland Delphi 6.0.

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

  • Разработка концептуальной модели базы данных. Реализация алгоритмов и разработка управляющей программы. Разработка структуры системы управления данными. Методика проведения и результаты тестирования. Функционирование разработанного программного модуля.

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

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

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

  • Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.

    отчет по практике [296,1 K], добавлен 19.04.2015

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

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

  • Написание модуля на языке Ассемблер для вычисления значения выражения. Составление программы корректного ввода исходных данных в таблицу и вывода результата в виде таблицы. Создание модуля для обработки строк и программы корректного ввода исходных данных.

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

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