Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Опис мови програмуванняС++ – мова програмування високого рівня з підтримкою декількох парадигм програмування: об’єктно-орієнтованої, узагальненої та процедурної. Розроблена Б’ярном Страуструпом в 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 – Функції програми
Продовження таблиці 3.4.1 – Функції програми
4. Реалізація курсової роботи Програма реалізує об'єктно-орієнтований варіант інтерфейсу, в середовищі C++ Builder. Інтерфейс забезпечується повідомленнями користувачеві, зразки яких, джерело виникнення та опис ситуації наведені у таблиці 4.1. Таблиця 4.1 – Повідомлення користувачеві
Інтерфейс гри "Сапер" Програма має такий вигляд (Рисунок 4.1) Рисунок 4.1 - Інтерфейс програми
При натисканні клавіш-стрілок, змія повертається у відповідний напрямок. Коли координати змії співпадають з координатами яблука, змія росте. Рисунок 4.2 - Ігровий процес Коли гравець програє, то виведеться таке повідомлення: Рисунок 4.3 - Виведення повідомлення про програш
Коли гравець виграє, то виведеться таке повідомлення: Рисунок 4.4 - Виведення повідомлення про виграш У цьому проекті не використовуються вхідні дані тобто користувач нічого не вводить з клавіатури. Використовуються допоміжні змінні:
Вихідні дані
Спочатку з'являється форма, яка відображає меню гри. За меню відповідає функція __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner). Потім при натисканні клавіші нової гри, об’являються змінні які потім використовуватимуться для роботи програми. bool ateFood = false; //їжа // світ int world[25][25]; // змінні які відповідають за частини ігрового поля int east, south, relativeE, relativeS, wrappedE, wrappedS; // позиції кожного сегменту змійки int snakeE[650], snakeS[650]; int snakeHeadE, snakeHeadS; int snakeTailE, snakeTailS; int snakeLength; int segment; int direction, lastDirection, reverseDirection; //напрямок int w=0; //вінрейт int maxSize = 25; //максимальний розмір поля Наступною частиною є головна функція void __fastcall TForm1::Timer1Timer(TObject *Sender){}
яка працює по запуску таймера та повністю відповідає за рух та напрямок змійки, використовуючи допоміжні функції які знаходяться в наступній частині программи: void music(void) {} Відповідає за музику на фоні void render(void) {} Формує ігрове поле рівня void makeRandomSnake (void) {} Генерує випадкову позицію змійки void clearAll (void) {} Очищає поле void Win(void) {} Функція, яка відповідає за виведення повідомлення про виграш 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) Клавіша, яка відповідає за початок нової гри або за перехід на новий рівень.
|