Игра XONIX

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЕЖИ И СПОРТА АРК

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

по учебной дисциплине

«Объектно-ориентированное программирование»

на тему

«Игра XONIX»

Содержание

Введение

Глава 1. Анализ проекта приложения-игры XONIX

1.1 Анализ моделируемого приложения и постановка задачи

1.2 Анализ моделируемой системы с позиции UML

1.2.1 UML — диаграмма прецедентов

1.2.2 UML — диаграмма классов

1.2.3 UML — диаграмма состояния классов

1.2.4 UML — диаграмма деятельности объектов

Выводы по I главе

Глава II. Разработка приложения-игры XONIX

2.1 Выбор языка программирования

2.2 Выбор программной среды для разработки проекта

2.3 Описание разработанных классов

2.4 Анализ ресурсов проекта

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

Выводы по II главе

Заключение

Список использованной литературы

Приложения

Введение

Концепция объектно-ориентированного программирования подразумевает, что основой управления процессом реализации программы является передача сообщений объектам. Поэтому объекты должны определяться совместно с сообщениями, на которые они должны реагировать при выполнении программы. В этом состоит главное отличие ООП от процедурного программирования, где отдельно определённые структуры данных передаются в процедуры (функции) в качестве параметров. Таким образом, объектно-ориентированная программа состоит из объектов — отдельных фрагментов кода, обрабатывающего данные, которые взаимодействуют друг с другом через определённые интерфейсы [1].

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

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

Это обеспечивает актуальность тематики.

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

Объектом данной курсовой работы является процесс игры XONIX.

Предметом является логическая игра XONIX

Для достижения поставленной цели были поставлены следующие задачи:

1. Изучить предметную область игры;

2. Изучить среду разработки Microsoft Visual Studio 2008;

3. Приобрести теоретические сведения и практические навыки по работе с объектно-ориентированным программированием;

4. Разработать UML -диаграммы для представления моделируемых сложных объектных систем приложения;

— диаграмму деятельности объектов в системе;

— диаграмму прецедентов для моделируемой системы;

— диаграмму состояния классов;

— диаграмму классов в системе;

5. Разработать удобный и понятный для пользователя интерфейс программы;

6. Создать справочную систем, содержащую сведения о приложении и его использовании;

Данная работа имеет свою структуру и состоит из введения, двух глав и заключения.

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

Вторая глава содержит описание выбранной среды разработки приложения. В ней рассматриваются и анализируются созданные управляющие классы. Так же рассматривается создание интерфейса программы и его структурные компоненты.

Глава 1. Анализ проекта приложения-игры XONIX

1. 1 Анализ моделируемого приложения и постановка задачи

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

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

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

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

Игрок, управляя курсором, пытается отсечь куски «моря», превращая их в «сушу», а точки ему в этом мешают".

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

-Игровое поле размером с пропорцией 4: 3;

-Набор «вражеских» черных точек;

-Набор «вражеских» белых точек;

-Точка-курсор игрока;

-Область поля «суша»

-Область поля «море»

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

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

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

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

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

1.2 Анализ моделируемой системы с позиции UML

1.2.1 UML — диаграмма прецедентов

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

Диаграмма прецедентов — это графическое представление всех или части актеров, прецедентов и их взаимодействие в системе.

С помощью прецедентов моделируется диалог между пользователем и системой. Прецеденты определяют возможности, обеспечиваемые системой для пользователя [2]. Диаграмма прецедентов (приложение 1)

1.2. 2 UML — диаграмма классов

Диаграммы классов являются одной из форм статического описания системы с точки зрения ее проектирования, отображая ее структуру, показывая его переменные, методы. На диаграммах отображаются так же интерфейсы, классы и отношения между ними [2].

Диаграмма классов (приложение 2)

1.2. 3 UML — диаграммы состояния классов

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

Диаграммы состояний некоторых классов (приложение 3)

1.2.4 UML — диаграмма деятельности объектов

Диаграммы деятельности — это диаграмма, применяемая в UML для моделирования динамических аспектов поведения системы.

Диаграммы деятельности иллюстрируют действия, переходы между ними. Они представляют собой схемы потоков управления в системе от действия к действию, а также параллельные действия и потоки [2].

Диаграмма деятельности (приложение 4)

Выводы по I главе

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

диаграмма программирование интерфейс

Глава II. Разработка приложения-игры XONIX

2.1 Выбор языка программирования

Для разработки приложения игры XONIX был выбран язык программирования С++. Он включает подсистему объектно-ориентированного программирования в исходно процедурный язык.

C++ -- компилируемый статически типизированный язык программирования общего назначения. Поддерживая разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В С++ наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

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

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

Поддерживаются различные стили и технологии программирования, включая традиционное директивное программирование, ООП, обобщённое программирование, метапрограммирование (шаблоны, макросы).

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

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

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

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

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

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

Присутствует возможность создания встроенных предметно-ориентированных языков программирования.

Используя шаблоны и множественное наследование можно имитировать классы-примеси и комбинаторную параметризацию библиотек.

Стандарт языка накладывает минимальные требования на ЭВМ для запуска скомпилированных программ. Для определения реальных свойств системы выполнения в стандартной библиотеке присутствуют соответствующие возможности (например, std: :numeric_limits < T>). Доступны компиляторы для большого количества платформ, на языке C++ разрабатывают программы для самых различных платформ и систем.

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

Высокая совместимость с языком C, позволяющая использовать весь существующий C-код (код на C может быть с минимальными переделками скомпилирован компилятором C++; библиотеки, написанные на C, обычно могут быть вызваны из C++ непосредственно без каких-либо дополнительных затрат, в том числе и на уровне функций обратного вызова, позволяя библиотекам, написанным на C, вызывать код, написанный на С++) [3].

2.2 Выбор программной среды для разработки проекта

Для разработки приложения-игры XONIX была использована среда разработки Microsoft Visual Studio 2008

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

Роль Visual Studio заключается в том, чтобы улучшить процесс разработки и упростить разработку высокоэффективных программ.

Средства Visual Studio позволяют разработчикам работать с большей отдачей и затрачивать меньше усилий на повторяющиеся задачи.

Следует отметить высокопроизводительные редакторы кода, поддержку технологии IntelliSense, мастеров и различных языков кодирования в одной интегрированной среде разработки (IDE), а также продукты управления жизненным циклом приложений (ALM) в Microsoft® Visual Studio® Team System.

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

Разработчики, применяющие Visual Studio, получают в свое распоряжение интегрированный продукт, включающий инструменты, серверы и службы. Продукты Visual Studio отлично работают вместе -- не только один с другим, но и с прочими программами Майкрософт, включая серверные продукты и приложения Microsoft Office.

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

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

MicrosoftVisualStudio 2008 -- среда разработки для проектирования, создания и тестирования решений следующего поколения на основе MicrosoftWindows, веб-приложений и веб-служб. За счет улучшенной поддержки WindowsVista, системы MicrosoftOffice 2007, мобильных устройств и Интернета VisualStudio 2008

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

2.3 Описание разработанных классов

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

Класс CDialogName осуществляет ввод имени игрока после окончания сеанса игры (рис 2. 42).

class CDialogName: public CDialog

{

DECLARE_DYNAMIC (CDialogName)

public:

CDialogName (CWnd* pParent = NULL);

virtual ~CDialogName ();

enum { IDD = IDD_NAME };

protected:

virtual void DoDataExchange (CDataExchange* pDX);

DECLARE_MESSAGE_MAP ()

public:

CString name;

};

Класс CDialogResults осуществляет ввод имени игрока после окончания сеанса игры (рис 2. 42).

class CDialogResults: public CDialog

{

DECLARE_DYNAMIC (CDialogResults)

public:

CDialogResults (CWnd* pParent = NULL); // standard constructor

virtual ~CDialogResults ();

enum { IDD = IDD_RESULTS };

protected:

virtual void DoDataExchange (CDataExchange* pDX); DECLARE_MESSAGE_MAP ()

public:

CResultsWnd results;

public:

virtual BOOL OnInitDialog ();

};

Класс CMainFrame осуществляет вывод основного окна приложения (рис 2. 42).

class CMainFrame: public CFrameWnd

{

protected:

CMainFrame ();

DECLARE_DYNCREATE (CMainFrame)

public:

virtual BOOL PreCreateWindow (CREATESTRUCT& cs);

public:

virtual ~CMainFrame ();

#ifdef _DEBUG

virtual void AssertValid () const;

virtual void Dump (CDumpContext& dc) const;

#endif

DECLARE_MESSAGE_MAP ()

public:

afx_msg void OnGameResults ();

public:

afx_msg void OnGamePause ();

public:

afx_msg void OnUpdateGamePause (CCmdUI *pCmdUI);

public:

afx_msg void OnGameLoad ();

public:

afx_msg void OnGameSave ();

};

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

class CPainter

{

protected:

int k_point1;

int max_point1;

CPoint* m_point1;

int k_point2;

int max_point2;

CPoint* m_point2;

int* k1,*k2, *max1, *max2;

CPoint** m1, **m2;

bool part;

int k_direction;

CPoint m_direction[8];

public:

CPainter (bool directions4_8);

public:

virtual ~CPainter (void);

void Clear ();

int Fill (int x, int y);

protected:

int ContinueFill ();

virtual void ProcessingCell (int x, int y){}

virtual void* GetCell (int x, int y)=0;

virtual void FillCell (int x, int y)=0;

virtual bool IfWas (void* ptr)=0;

virtual bool IfHalt (void* ptr){return false; }

virtual bool IfFill (void* ptr)=0;

virtual int CorrectResult (int result){return result; }

};

Класс CPainterMap является заливочным классом с точки зрения областно-адресной корректировки.

class CPainterMap: public CPainter

{

protected:

CXonixDoc* pDoc;

int cell;

int color_fill;

bool is_white;

public:

CPainterMap (CXonixDoc* pDoc, int color_fill);

public:

virtual ~CPainterMap (void);

virtual void* GetCell (int x, int y);

virtual void FillCell (int x, int y);

virtual bool IfWas (void* ptr);

virtual bool IfHalt (void* ptr);

virtual bool IfFill (void* ptr);

int CorrectResult (int result);

};

Класс CResults является классом для обработки и внесения результатов в таблицу рекордов. Он производит выделение, анализ, обработку достижение игрока.

class CResults

{

protected:

int k_result;

RESULT m_result[MAX_RESULT];

public:

CResults (void);

public:

virtual ~CResults (void);

static CResults& GetInstance ();

void Add (RESULT* r);

bool IsAddResult (int score);

int GetCount (){return k_result; }

RESULT* GetResult (int index){return & (m_result[index]);}

protected:

CString GetFile ();

void Serialize (CArchive& ar);

};

Класс CResultsWnd является классом для обработки таблицы рекордов.

class CResultsWnd: public CStatic

{

protected:

CResults* results;

CFont font;

private:

DECLARE_DYNAMIC (CResultsWnd)

public:

CResultsWnd ();

virtual ~CResultsWnd ();

void SetResults (CResults* results){this-> results=results;}

protected:

DECLARE_MESSAGE_MAP ()

public:

afx_msg BOOL OnEraseBkgnd (CDC* pDC);

public:

afx_msg void OnPaint ();

};

Класс CXonixApp является классом для обработки таблицы рекордов.

class CXonixApp: public CWinApp

{

public:

CXonixApp ();

public:

virtual BOOL InitInstance ();

afx_msg void OnAppAbout ();

DECLARE_MESSAGE_MAP ()

};

extern CXonixApp theApp;

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

class CXonixDoc: public CDocument

{

protected:

CBitmap bmp_map;

CDC map;

CPset my;

bool cut;

int k_white;

CPset* m_white;

int k_black;

CPset* m_black;

int max_black;

int period_black;

int timer_black;

CPoint m_direction[D_RIGHT_BOTTOM+1];

int m_directing_change[D_RIGHT_BOTTOM+1][4];

int mode;

int score;

int level;

int life;

int cell;

protected:

CXonixDoc ();

DECLARE_DYNCREATE (CXonixDoc)

public:

CDC* GetMap (){return & map;}

public:

void InitMap ();

void RestartMap ();

int Service ();

bool Go (CPset* pset, bool is_black);

int Get (int x, int y);

void Draw (int x, int y, int color);

int GetPercentVictory ();

void NextLevel ();

int GetMode (){return mode; }

void SetMode (int mode){this-> mode=mode;}

CPset* GetMy (){return & my;}

int GetScore (){return score; }

int GetCell (){return cell; }

void AddCell (int add){cell+=add; }

int GetLevel (){return level; }

int GetLife (){return life; }

void AddLife (int add){life+=add; }

public:

virtual BOOL OnNewDocument ();

virtual void Serialize (CArchive& ar);

public:

virtual ~CXonixDoc ();

#ifdef _DEBUG

virtual void AssertValid () const;

virtual void Dump (CDumpContext& dc) const;

#endif

protected:

protected:

DECLARE_MESSAGE_MAP ()

};

Класс CXonixPainter является классом обработки заливки с координатной и отношенческой точки зрения.

class CXonixPainter:

public CPainter

{

protected:

CXonixDoc* pDoc;

int cell;

int fill_other;

int fill_other_result[4];

public:

CXonixPainter (CXonixDoc* pDoc);

public:

virtual ~CXonixPainter (void);

virtual void ProcessingCell (int x, int y);

virtual void* GetCell (int x, int y);

virtual void FillCell (int x, int y);

virtual bool IfWas (void* ptr);

virtual bool IfFill (void* ptr);

int CorrectResult (int result);

};

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

class CXonixView: public CView

{

protected:

UINT_PTR timer;

CFont font;

CFont font_title;

int info_height;

int simbol_width;

protected:

CXonixView ();

DECLARE_DYNCREATE (CXonixView)

public:

CXonixDoc* GetDocument () const;

CString GetLevelText ();

CString GetLifeText ();

CString GetScoreText ();

CString GetPercentText ();

int GetInfoHeight (){return info_height; }

public:

virtual void OnDraw (CDC* pDC); // overridden to draw this view

virtual BOOL PreCreateWindow (CREATESTRUCT& cs);

public:

virtual ~CXonixView ();

#ifdef _DEBUG

virtual void AssertValid () const;

virtual void Dump (CDumpContext& dc) const;

#endif

protected:

DECLARE_MESSAGE_MAP ()

public:

afx_msg int OnCreate (LPCREATESTRUCT lpCreateStruct);

public:

afx_msg BOOL OnEraseBkgnd (CDC* pDC);

public:

afx_msg void OnDestroy ();

public:

afx_msg void OnTimer (UINT_PTR nIDEvent);

public:

afx_msg void OnKeyDown (UINT nChar, UINT nRepCnt, UINT nFlags);

};

#ifndef _DEBUG // debug version in XonixView. cpp

inline CXonixDoc* CXonixView: :GetDocument () const

{ return reinterpret_cast< CXonixDoc*>(m_pDocument); }

#endif

2.4 Анализ ресурсов проекта

Проект XONIX имеет свою ресурсную систему, которая может быть представлена в виде древовидной структуры и имеет следующий вид (рис 2.4. 1)

Рис 2.4.1. Ресурсная система проекта

Подструктура акселератора содержит таблицу набора приемлемых в работе приложения сочетаний клавиш, которые выполняют определенную функцию (рис 2.4. 2)

Рис 2.4.2. Подструктура акселератора

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

Рис. 2.4.3. Конструкторная форма окна ввода учетной записи

Рис. 2.4.4. Конструкторная форма окна таблицы результатов

Подструктура иконок содержит файлы изображений формата *. bmp, которые являются иконками к созданным приложениям (рис 2.3. 5)

Рис 2.4.5. Иконка приложения XONIX

Подструктура меню содержит форму управления меню, которой осуществляется весь процесс взаимодействия пользователя и приложения. Имеет подпункты для начала новой игры, сохранения текущего сеанса, загрузки и восстановления сохраненной игры, режима паузы и выхода из приложения (рис 2.4. 6)

Рис 2.4.6. Меню приложения XONIX

Подструктура сводочной таблицы команд содержит перечень всевозможных операций и привязанных к ним ID, применимых в приложении и выполняющих определенную функцию (рис 2.3. 7)

Рис 2.4.7. Таблица сводки команд

Подструктура информации версии содержит краткую информацию о создаваемом проекте (рис 2.4. 8)

Рис 2.4.8. Сводка информации о проекте

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

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

Таким образом, было разработано приложение-игра XONIX. При запуске приложения открывается окно с игровой областью (рис 2.4. 1)

Рис 2.5.1. Игровая область

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

Рис 2.5.2. Меню игры

Так же осуществлена возможность ввода имени в таблицу рекордов после проигрыша (рис 2.5. 3)

Рис 2.5.3. Ввод имени в таблицу рекордов.

Вследствие этих манипуляций таблица рекордов имеет вид (рис 2. 44)

Рис 2.5.4. Таблица рекордов.

Выводы по II главе

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

Заключение

В ходе выполнения курсовой работы была написана приложение «Игра «XONIX», в которой реализованы:

· Визуализация игрового процесса.

· Взаимодействие с пользователем;

· Логика игры;

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

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

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

В ходе выполнения курсовой работы были решены поставленные задачи:

· Была изучена предметная область игры;

· Закреплены теоретические положения и освоены соответствующие практические навыки по работе с объектно-ориентированным языком программирования С++ и средой Microsoft Visual Studio 2008;

· Разработана совокупность UML -диаграмм для представления моделируемых сложных объектных систем:

§ диаграмма классов в системе;

§ диаграмма прецедентов для моделируемой системы;

§ диаграммы состояния классов;

§ диаграмма деятельности объектов в системе;

· Разработан удобный пользовательский интерфейс программы;

При разработке проекта были разработаны следующие классы:

· class CDialogName

· class CDialogResults

· class CMainFrame

· class CPainter

· class CPainterMap

· class CResults

· class CResultsWnd

· class CXonixApp

· class CXonixDoc

· class CXonixPainter

· class CXonixView

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

Список использованной литературы

1. Иванова Г. С, Ничушкина Т. Н., Пугачев Е. К. Объектно-ориентированное программирование. 2001 г.

2. Фаулер М. UML. Основы: пер. с англ. / М. Фаулер, К. Скотт — СПб: Символ-Плюс, 2002. — 192 с.

3. Скляров В. А. Язык С++ и объектно-ориентированное программирование. Справочное пособие Год издания: 1997.

4. Пауэрс Л. MicrosoftVisualStudio 2008 «/ Л. Пауэрс, М. Снелл — СПб.: БХВ — Петербург, 2009. — 1191 с.

5. Хомоненко А. Д. Программирование на C++. Учебное пособие для ВУЗов, 2010. 512 c.

6. Лесневский А. С. Объектно-ориентированное программирование для начинающих — М.: Бином, 2005.

Приложение 1. Диаграмма прецедентов

/

/

Приложение 2 Диаграмма классов

/

/

Приложение 3 Диаграммы состояний некоторых классов

/

/

Диаграмма состояний класса CResults

/

/

Диаграмма состояний класса CPainter

/

/

Диаграмма состояний класса CXonixView

UML диаграмма деятельности объектов

/

/

ПоказатьСвернуть
Заполнить форму текущей работой