Технічні характеристики
Постановка задачі
Розробити ігрову програму, що представляє собою гральне поле, де гравець, контролюючи рухи змії, повинен зібрати якнайбільше яблук та уникнути перешкод у вигляді стін.
Вікно програми має містити в собі ігрове поле і кнопки управління. Необхідно організувати перевірку натиснутої користувачем клавіші та кількість з'їдених яблук. Також необхідно зробити випадкове розміщення змійки, стін та яблук на ігровому полі. Після закінчення ігрового рівня повинно виводитися повідомлення про виграш або програш.
В результаті розробки має бути повністю функціонуюча гра змійка, в якій уявна змійка рухається по ігровому полю і їй потрібно влучити в ціль.
3.2. Опис алгоритму
Програма розроблена в середовищі C++ Builder 6 і функціонує в ОС Windows. Функціональне призначення ігрової програми полягає в проходженні гри "Змійка".
При роботі програми використовується персональний комп'ютер з встановленою на ньому ОС Windows.
Алгоритм розв'язання даної задачі заключається в послідовності виконання наступних кроків:
1) Гра починається при запуску головного exe файла
2) Генеруються об'єкти «змійка» , « їжа», «стіна» у випадковому місці
3) Якщо координати «змійки» збігаються з координатами «їжі» , «змійка» збільшується на 1 клітинку.
4) Якщо ні, то прослуховується клавіатура (стрілки курсору) і «змійка» переміщається направо, наліво, вгору, вниз (розміри поля 25х25 )
5) Якщо координати «змійки» збігаються з координатами «стіни» або координатами «хвоста», гра завершується
6) Якщо набирається максимальна кількість з'їденої «їжі» (своя для кожного рівня), гравець може перейти у наступний рівень гри, натиснувши клавішу "Новый уровень" .
7) Якщо потрібно вийти набираємо 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.
Після закінчення роботи компілятора працює компоновщик, який об'єднує об'єктні файли в єдиний завантажувальний виконуваний модуль, що має розширення .ехе. Цей модуль можна запускати на виконання.
