Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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 – Функції програми

Ім'я Характеристика Призначення
__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) Спрацьовує при натисканні кнопки "Новая игра" Відповідає за початок нової гри

Продовження таблиці 3.4.1 – Функції програми


 

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).

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

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)

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


 

Date: 2015-11-14; view: 705; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию