Ігрова програма 'Змійка'

  • Вид работы:
    Реферат
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    1,19 Мб
  • Опубликовано:
    2015-06-02
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Ігрова програма 'Змійка'

Зміст

1. Вступ

2. Призначення і область застосування

3. Технічні характеристики

3.1 Постановка задачі

3.2 Опис алгоритму

3.3 Опис мови програмування

3.4 Опис основних функцій

4. Реалізація курсової роботи

5. Висновок

6. Література

Додаток

1. Вступ

Виконання даного проекту є завершальним етапом при вивченні дисципліни "Програмування (мова С++)".

У роботі наведено рішення завдання з дисципліни "Програмування (мова С++)" по розробці ігрової програми "Змійка".

Розвиток обчислювальної техніки в останні роки, дозволяє автоматизувати більшу частину галузей людської діяльності. Слід також зазначити, що протягом останніх 10-15 років у навчальний процес, як активний інструмент навчання й пізнання, стрімко включається не тільки сам комп'ютер, але й мови програмування.

Виконання проекту є завершальним етапом при вивченні дисципліни "Об’єктно-орієнтоване програмування". Тому розробка гри є найбільш прийнятною темою для застосування об’єктно-орієнтованого підходу при розробці програми.

При розробці комп'ютерних ігор варто виділити наступні етапи, наприклад:

         вивчення теоретичного матеріалу;

-        визначенні правил гри;

         складання діаграми об’єктів та наслідування;

         проектування інтерфейсу.

Гра "Змійка" - це гра, в якій уявна змійка рухається по ігровому полю оминаючи перепони і їй потрібно влучити в ціль. Програма є нескладною і доступна для виконання на багатьох ЕОМ в різних операційних.

Вона розрахована на широке коло користувачів завдяки своїй простоті.

2. Призначення і область застосування


Провести аналіз, розробити проект, скласти опис і специфікацію, провести кодування ігрової програми "Змійка" використовуючи знання здобуті під час курсу об’єктно-орієнтованого програмування.

У курсовій роботі наведено рішення завдання з дисципліни "Програмування (мова С++)" по розробці ігрової програми "Змійка".

Щоб виконати завдання, потрібно використати програмне середовище, що дозволяє здійснювати отримання та обробку значень поточного часу і відтворення звукового файлу. Для вирішення даного завдання підходить середовище розробки додатків Borland C++ Builder 6.

Середовище розробки програм Borland C ++ Builder 6 завоювало досить міцні позиції серед професійних програмістів та тих, хто тільки починає програмувати. Тут можна відзначити ряд причин: більшу популярність мови програмування C ++, зручність візуального конструювання додатків, розвинені можливості доступних засобів системи, ефективність генерованого коду та ін.

Ігрова програма "Змійка" призначена для того щоб розвивати увагу та логічне мислення. Гравець повинен продумувати кожен крок змійки, щоб зібрати якнайбільше яблук, і мати високу увагу, щоб уникнути зіткнення зі стіною.

Програма може використовуватися користувачами на персональних комп’ютерах та ноутбуках під управлінням ОС Windows.

3. Технічні характеристики

 

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


Розробити ігрову програму, що представляє собою гральне поле, де гравець, контролюючи рухи змії, повинен зібрати якнайбільше яблук та уникнути перешкод у вигляді стін.

Вікно програми має містити в собі ігрове поле і кнопки управління. Необхідно організувати перевірку натиснутої користувачем клавіші та кількість з'їдених яблук. Також необхідно зробити випадкове розміщення змійки, стін та яблук на ігровому полі. Після закінчення ігрового рівня повинно виводитися повідомлення про виграш або програш.

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

 

3.2 Опис алгоритму


Програма розроблена в середовищі C++ Builder 6 і функціонує в ОС Windows. Функціональне призначення ігрової програми полягає в проходженні гри "Змійка".

При роботі програми використовується персональний комп'ютер з встановленою на ньому ОС Windows.

Алгоритм розв'язання даної задачі полягає в послідовності виконання наступних кроків:

) Гра починається при запуску головного exe файла

) Генеруються об'єкти "змійка", " їжа", "стіна" у випадковому місці

) Якщо координати "змійки" збігаються з координатами "їжі", "змійка" збільшується на 1 клітинку.

) Якщо ні, то прослуховується клавіатура (стрілки курсору) і "змійка" переміщається направо, наліво, вгору, вниз (розміри поля 25х25)

) Якщо координати "змійки" збігаються з координатами "стіни" або координатами "хвоста", гра завершується

) Якщо набирається максимальна кількість з'їденої "їжі" (своя для кожного рівня), гравець може перейти у наступний рівень гри, натиснувши клавішу "Новый уровень".

) Якщо потрібно вийти набираємо Ctrl+F4, натискаємо клавішу "Выход" або закриваємо вікно в правому верхньому куті.

 

3.3 Опис мови програмування


С++ - мова програмування високого рівня з підтримкою декількох парадигм програмування: об’єктно-орієнтованої, узагальненої та процедурної. Розроблена Б’ярном Страуструпом в AT&TBellLaboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та спочатку отримала назву "Сі з класами". Згодом Страупструп перейменував мову на С++ у 1983р. Ця мова базується на мові С (Сі).

Переваги мови С++:

·        Можливість роботи на низькому рівні з пам’яттю, адресами та портами. (Що при необмеженому використанні, може легко перетворитися на недолік).

·        Можливість створення узагальнених алгоритмів для різних типів даних, їхня спеціалізація, і обчислення на етапі компіляції, з використанням шаблонів.

·        Підтримуються різні стилі та технології програмування включаючи традиційне директивне програмування, ООП, узагальнене програмування, мета програмування (шаблони, макроси).

·        Масштабованість. На мові С++ розробляють програми для найрізноманітніших платформ і систем.

ігрова програма алгоритм мова

·        Швидкодія. Швидкість роботи на С++ практично не поступається програмам на С, хоча програмісти отримали в свої руки нові можливості і нові засоби.

Недоліки мови С++:

·        Погана підтримка модульності. Підключення інтерфейсу зовнішнього модуля через препроцесорну вставку заголовного файлу (#include) серйозно уповільнює компіляцію, при підключенні великої кількості модулів. Для усунення цього недоліку, багато компіляторів реалізують механізм прекомпіляції заголовних файлів.

·        Недостача інформації про типи даних під час компіляції.

·        Мова C++ є складною для вивчення і для компіляції.

·        Деякі перетворення типів неінтуїтивні. Зокрема, операція над без знаковим і знаковим числами видає без знаковий результат.

·        Препроцесор С++ (успадкований від С) дуже примітивний. Це приводить з одного боку до того, що з його допомогою не можна (або важко) здійснювати деякі завдання метапрограмування, а з іншого, в наслідок своєї примітивності він часто приводить до помилок і вимагає багато дій з обходу потенційних проблем.

·        Хоча декларується, що С++ мультипарадигмена мова, реально в мові відсутня підтримка функціонального програмування. Частково, даний пропуск усувається різними бібліотеками (Loki, Boost) що використовують засоби метапрограмування для розширення мови функціональними конструкціями (наприклад, підтримкою лямбд/анонімних методів), але якість подібних рішень значно поступається якості вбудованих у функціональні мови рішень. Такі можливості функціональних мов, як зіставлення зі зразком взагалі украй складно емулювати засобами метапрограмування.

Програма на C ++ складається з оголошень (змінних, констант, типів, класів, функцій) і описів функцій. Серед функцій завжди є головна - main для консольних додатків (працюють з WIN32) або WinMain для додатків Windows. Саме ця головна функція виконується після початку роботи програми. Зазвичай в C ++ Builder ця функція дуже коротка і виконує тільки деякі підготовчі операції, необхідні для початку роботи. А далі при об'єктно-орієнтованому підході робота програми визначається подіями, що відбуваються і реакцією на них об'єктів.

Як правило, програми будуються за модульним принципом і складаються з безлічі модулів. Принцип модульності дуже важливий для створення надійних і відносно легко модифікованих додатків. Чітке дотримання принципів модульності в поєднанні з принципом приховування інформації дозволяє всередині будь-якого модуля проводити якісь модифікації, не зачіпаючи при цьому інших модулів і головну програму.

У C ++ Builder всі об'єкти компонентів розміщуються в об'єктах - формах. Для кожної форми, яку ви проектуєте в своєму додатку, C ++ Builder створює окремий модуль. Саме в модулях і здійснюється програмування завдання. У обробниках подій об'єктів - форм і компонентів, ви ставите всі свої алгоритми. В основному вони зводяться до обробки інформації, що міститься у властивостях одних об'єктів, і завданні за результатами обробки властивостей інших об'єктів. При цьому ви постійно звертаєтеся до методів різних об'єктів.

Згідно з принципами приховування інформації зазвичай текст модуля поділяють на заголовний файл інтерфейсу, який містить оголошення класів, функцій, змінних і т.д., і файл реалізації, в якому міститься опис функцій.

Стандартне розширення файлів реалізації - срр. Стандартне розширення заголовних файлів - h.

Після того як програма написана, на її основі повинен бути створений виконуваний файл (модуль). Цей процес здійснюється в кілька етапів.

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

Після закінчення роботи препроцесора починає працювати компілятор. Його завдання - перевести тексти модулів в машинний (об'єктний) код. В результаті для кожного вихідного файлу. срр створюється об'єктний файл, що має розширення. obj.

Після закінчення роботи компілятора працює компоновщик, який об'єднує об'єктні файли в єдиний завантажувальний виконуваний модуль, що має розширення. ехе. Цей модуль можна запускати на виконання.

 

3.4 Опис основних функцій


Програма складається з функцій, опис яких наведений в таблиці 3.4.1.

Таблиця 3.4.1 - Функції програми

Ім'я

Призначення

__fastcall TForm1:: TForm1 (TComponent* Owner): TForm (Owner) {}

Головна

Забезпечує інтерфейс користувача

void __fastcall TForm1:: Timer1Timer (TObject *Sender) {}

Спрацьовує при натисканні кнопки "Новая игра"

Прослуховує клавіатуру та координує змійку в потрібному напрямку

void makeRandomSnake (void) {}

Спрацьовує при натисканні кнопки "Новая игра"

Виставляє змійку в випадковому місці на ігровому полі

void render (void) {}

Спрацьовує при натисканні кнопки "Новая игра"

Займається побудовою ігрового світу

void music (void) {}

Спрацьовує при натисканні кнопки "Новая игра"

Забезпечує фонову музику

void clearAll (void) {}

Спрацьовує при натисканні кнопки "Новая игра"

Забезпечує очистку поля

void gameOver (void) {}

Спрацьовує при програшу

Виводить повідомлення про програш

void makeRandomFood (void) {}

Спрацьовує при натисканні кнопки "Новая игра"

Відповідає за розстановку їжі на полі

void makeRandomPoison (void) {}

Спрацьовує при натисканні кнопки "Новая игра"

Відповідає за розстановку стін на полі

void Exit (void) {}

Спрацьовує при натисканні кнопки "Выход"

Забезпечує вихід із програми

void Win (void) {}

Спрацьовує при виграшу

Відповідає за виграш

void step (void) {}

Викликається автоматично таймером

Відповідає за кожен крок змії

void __fastcall TForm1:: FormKeyDown (TObject *Sender, WORD &Key, TShiftState Shift)

Спрацьовує при натисненні певних клавіш

Відповідає за направлення змії по ігровому полю

void __fastcall TForm1:: Button1Click (TObject *Sender)

Спрацьовує при натисканні кнопки "Новая игра"

Відповідає за початок нової гри



4. Реалізація курсової роботи


Програма реалізує об'єктно-орієнтований варіант інтерфейсу, в середовищі C++ Builder. Інтерфейс забезпечується повідомленнями користувачеві, зразки яких, джерело виникнення та опис ситуації наведені у таблиці 4.1.

Таблиця 4.1 - Повідомлення користувачеві

Повідомлення

Джерело

Опис ситуації

Игра окончена

void gameOver (void) {}

Координати змійки збіглися з границею поля

Поздравляем, вы прошли уровень!!!

void Win (void) {}

Ви пройшли рівень гри


Інтерфейс гри "Сапер"

Програма має такий вигляд (Рисунок 4.1)

Рисунок 4.1 - Інтерфейс програми

При натисканні клавіш-стрілок, змія повертається у відповідний напрямок. Коли координати змії співпадають з координатами яблука, змія росте.

Рисунок 4.2 - Ігровий процес

Коли гравець програє, то виведеться таке повідомлення:

Рисунок 4.3 - Виведення повідомлення про програш

Коли гравець виграє, то виведеться таке повідомлення:

Рисунок 4.4 - Виведення повідомлення про виграш

У цьому проекті не використовуються вхідні дані тобто користувач нічого не вводить з клавіатури.

Використовуються допоміжні змінні:

int world [25] [25]

int east, south, relativeE, relativeS, wrappedE, wrappedS;

Змінні, які відповідають за частини ігрового поля

int snakeE [650], snakeS [650], snakeHeadE, snakeHeadS, snakeTailE, snakeTailS, segment;

Позиції кожного сегменту змійки

int snakeLength;

Довжина змійки

int direction, lastDirection, reverseDirection;

Напрямок змійки

int w=0;

Кількість пройдених рівнів

int maxSize = 25.

Максимальний розмір поля


Вихідні дані

Повідомлення

Джерело

Опис ситуації

Игра окончена. Размер змеи:

void gameOver (void) {}

Координати змійки збіглися з границею поля

Поздравляем, вы прошли уровень!!!

void Win (void) {}

Ви пройшли рівень гри


Спочатку з'являється форма, яка відображає меню гри. За меню відповідає функція __fastcall TForm1:: TForm1 (TComponent* Owner): TForm (Owner).

Потім при натисканні клавіші нової гри, об’являються змінні які потім використовуватимуться для роботи програми.ateFood = false; // їжа

// світworld [25] [25];

// змінні які відповідають за частини ігрового поляeast, south, relativeE, relativeS, wrappedE, wrappedS;

// позиції кожного сегменту змійкиsnakeE [650], snakeS [650];snakeHeadE, snakeHeadS;snakeTailE, snakeTailS;snakeLength;segment;direction, lastDirection, reverseDirection; // напрямокw=0; // вінрейтmaxSize = 25; // максимальний розмір поля

Наступною частиною є головна функція__fastcall TForm1:: Timer1Timer (TObject *Sender) {}

яка працює по запуску таймера та повністю відповідає за рух та напрямок змійки, використовуючи допоміжні функції які знаходяться в наступній частині программи:music (void) {}

Відповідає за музику на фоніrender (void) {}

Формує ігрове поле рівня

void makeRandomSnake (void) {}

Генерує випадкову позицію змійки

void clearAll (void) {}

Очищає поле

void Win (void) {}

Функція, яка відповідає за виведення повідомлення про виграшgameOver (void) {}

Закінчує гру.

void makeRandomFood (void) {}

Виставляє на полі їжу.

void makeRandomPoison (void) {}

Виставляє стіни.

void Exit (void) {}

Вихід.

void step (void) {}

Відповідає за кожну дію змійки.

void __fastcall TForm1:: FormKeyDown (TObject *Sender, WORD &Key, TShiftState Shift)

Прослуховує натиснуті клавіші.

void __fastcall TForm1:: N5Click (TObject *Sender)

Пауза (зупинка таймера).

void __fastcall TForm1:: N6Click (TObject *Sender)

Продовження гри.

void __fastcall TForm1:: N7Click (TObject *Sender)

Виведення інформації.

void __fastcall TForm1:: Button1Click (TObject *Sender)

Клавіша, яка відповідає за початок нової гри або за перехід на новий рівень.

5. Висновок


У ході виконання курсової роботи були вивчені основи програмування мовою С + +. Написання програми сприяло закріпленню теоретичного матеріалу на практиці.

Гравець керує змією за допомогою клавіш-стрілок. При кожній взаємодії з яблуком змія поступово збільшується на одну клітинку. В кожному рівні потрібно з'їсти різну кількість яблук. Коли гравець досяг кінця рівня, програма виводить повідомлення про виграш. Кількість яблук, які потрібно з'їсти наступного рівня, підвищується на один. Коли змія взаємодіє зі стіною, гра закінчується і програма виводить повідомлення про програш. При кожній взаємодії з яблуком, на ігровому полі з'являється нове яблуко. Гра "Змійка" є логічно завершеною грою. Також можливі зміни і удосконалення деяких моментів в геймплеї, такі як мультиплеер і додавання на ігровому полі перешкод.

Програма повністю написана згідно заданому завданню, все задумане в програмі було повністю реалізоване. Проведене тестування програми підтвердило, що програма працює коректно та без помилок.

6. Література


1.      Прата С. Язык программирования C++ / C. Прата. Москва: "Издательство ТРИУМФ", 2003. - 172 с.

2.      Динман М.И. С++. Освой на примерах. / М.И. Динман. Петербург - БХВ, 2006. - 384 с.

.        Стефан Р. Дэвис - С++ Для чайников / С.Р. Дэвис. Вильямс, 2003. - 336 с.

.        C++ [Електронний ресурс] / Матеріал з Вікіпедії - вільної енциклопедії. - Режим доступу: \www/ URL: #"784758.files/image005.gif">




Блок схема функції render


Блок схема функції makeRandomSnake

Похожие работы на - Ігрова програма 'Змійка'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!