МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ
«КИЇВСКИЙ ПОЛІТЕХНІЧНИЙ ІНТИТУТ»
Кафедра математичного моделювання економічних систем
КУРСОВА РОБОТА
з дисципліни
«Економічна кібернетика»
на тему: «Реалізація об’єктно-орієнтованого підходу при розробці програми, що моделює гру SQ CaRs»
Студент Мельников Єгор Андрійович
Група УК-02
Дата перевірки_________________________
Дата захисту___________________________
Оцінка________________________________
Члени комісії__________________________
______________________
______________________
(підписи, прізвища, ініціали)
Київ – 2011
Зміст
Вступ 3
1. Опис предметної області 4
2. Опис структури класів та їх взаємодія 6
3. Постановка задачі 9
4. Програмна реалізація гри SQ CaRs. 10
Висновок 14
Список використаних джерел 15
Додаток А 16
Вступ
Дана курсова робота присвячена моделюванню гри "SQ CaRs" за допомогою мови С++ з використанням пакету Microsoft Visual Studio 2010 та графічної бібліотеки OpenGL в середовищі Windows.
Метою цієї роботи є засвоєння та вдосконалення практичних навичок, здобутих протягом семестру.
С++ - високорівневна мова програмування з підтримкою декількох парадигм програмування, яка базується на мові С. Ця мова розроблялася як розширення мови С задля того, щоб виправити недоліки, які були присутні у мові С.
Головним нововведенням С++ є механізм класів, що дає можливість визначати і використовувати нові типи даних, збільшення відсотку повторного використання вже написаного коду, що досягається механізмом наслідування. Також наслідування забезпечує один з механізмів реалізації поліморфізму - базової концепції об'єктно-орієнтованого програмування, згідно з якою, для виконання однотипної обробки різних типів даних може використовуватися один і той же код. Власне, поліморфізм - теж один із методів забезпечення повторного використання коду.
На даний момент мова С++ залишається однією із найбільш популярних мов програмування і використовується для написання багатьох різноманітних моделей.
OpenGL — (англ. Open Graphics Library — відкрита графічна бібліотека) — специфікація, що визначає незалежний від мови програмування крос-платформовий програмний інтерфейс (API) для написання застосунків, що використовують 2D та 3D комп'ютерну графіку. Даний інтерфейс містить понад 250 функцій, які можуть використовуватися для малювання складних тривимірних сцен з простих примітивів. Широко застосовується індустрією комп'ютерних ігор і віртуальної реальності, у графічних інтерфейсах, при візуалізації наукових даних, в системах автоматизованого проектування тощо.
1. Опис предметної області
Аркада (англ. arcade)- поширений у пострадянській індустрії комп'ютерних ігор термін, що позначає комп'ютерні ігри з навмисно примітивним ігровим процесом. Ігри, в яких гравцеві доводиться діяти швидко, покладаючись в першу чергу на свої рефлекси і реакцію. Ігровий процес простий і не змінюється протягом гри. Аркади характеризуються розвиненою системою бонусів: нарахування очок, поступово відкриваються елементи гри і т. д.
SQ CaRs - це компьютерна гра, ідея якої була взята з ігрових приставок, які раніше були дуже популярними, наприклад BRICK GAME. На цих приставках можна грати в багато ігр, в тому числі в Тетріс та гонки. Саме ця гра без назви, яку усі називають просто "гонки" і була використана, як ідеологічна основа для цієї курсової роботи.
Рис 1. Портативна ігрова приставка BRICK GAME
Суть цієї гри є в тому, що гравцю потрібно проїхати як можна далі не врізаючись в стіни та інші машини.
2. Опис структури класів та їх взаємодія
Виходячи із аналізу предметної області, що був виконаний у першому розділі курсової роботи, побудована нотація Буча для даної моделі виглядає наступним чином:
Tshape
float x, y;
int color;
Tblock
void block();
text
const char* itext;
void drawtext(const char*, int, float, float);
void hidetext();
car
float cx, cy;
bool crash, godmode;
car(float, float, int, bool, bool);
~car();
wall
float wx, wy;
int wpos
wall(float, int, int);
~wall(void);
grass
float gwidth, gm;
grass(float, float);
~grass ();
game_over
float gox, goy;
game_over(float, float, int);
~game_over();
menu
bool selection;
void show();
void draw_select(bool);
Рис.2 Діаграма класів
Опис полів та методів:
Клас Tshape - поле для малювання
-
Поле x, y – координати
-
Поле color - колір
Клас Tblock – блок
-
Метод void block – малує один блок
Клас text - текст
-
Поле *itext – текст
-
Метод void drawtext – выводить текст
-
Метод void hidetext – замальовує текст
Клас car - машинка
-
Поле cx, cy – координати центра машинки
-
Поле crash - показує, потрапила машинка в аварію чи ні
-
Поле godmode - політ
-
Конструктор car – малює машинку
-
Деструктор ~car – замальовує машинку
Клас grass - трава
-
Поле gwidth – ширина дороги
-
Поле gm - рух трави
-
Конструктор grass – малює траву
-
Деструктор ~grass – замальовує траву
Клас wall - стінка
-
Поле wx, wy – координати центра стінки
-
Поле wpos - положення стінки (справа чи зліва)
-
Конструктор wall – малює стінку
-
Деструктор ~wall – замальовує стінку
Клас game_over - напис "GAME OVER"
-
Поле gox, goy – координати центра напису
-
Конструктор game_over – малює напис
-
Деструктор ~ game_over – замальовує напис
Клас menu - меню гри
-
Поле selection – вибір меню
-
Метод show – малює меню
-
Метод draw_select – малює вибір у меню