Гра 'Лабіринт'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    77,25 Кб
  • Опубликовано:
    2016-04-01
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Гра 'Лабіринт'

Вступ

програма алгоритм технічний

Курсовий проект (робота) - це самостійно виконана і відповідно оформлена творча робота студента з вирішення конкретного практичного завдання з однієї або декількох загальнотехнічних чи спеціальних дисциплін на основі набутих теоретичних знань та умінь.

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

Основною метою курсового проектування є:

–       навчання та набуття навиків практичного застосування теоретичних знань для вирішення конкретних практичних задач;

–       розвиток творчого мислення, виявлення та формування професійних навиків студентів;

–       набуття навиків конструювання виробів, виконання розрахунків, письмового викладу технічних рішень та аналізу одержаних результатів;

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

–       набуття навиків узагальнення та аналізу результатів, отриманих іншими розробниками та дослідниками;

–       навчання та набуття студентами досвіду користування довідковою літературою і нормативними документами.

Мета курсового проектування з дисципліни «Основи програмування та алгоритмічні мови»:

–       закріпити знання, одержані під час вивчення дисципліни «Основи програмування та алгоритмічні мови;

–       засвоїти основні етапи розробки програмних виробів;

–       набути навиків при оформлення документів на програмні вироби;

одержати практичні навички з розробки програм і програмних документів.

1. Загальні відомості


1.1 Позначення та назва програми


Програма гри в лабіринт КТКТ ХХХХGG 00 13, дискове ім'я файлу labirint.cpp, після компіляції - labirint.exe.

1.2 Програмне забезпечення, необхідне для її функціонування


Для використання програми не треба специфічного програмного забезпечення. Для виконання приграми вистачає будь-якої ОС сімейства Windows та мінімальних системних частин комп’ютера з підтримкою мережі.

 

.3 Мови програмування, на яких написана програма


Програма написана мовою С в середовищі Microsoft Visual C ++ 2010 Express - це безкоштовнt інтегроване середовище розробки додатків на мові C ++. Вонj надає розробнику набір інструментів для створення додатків для Windows на Visual C ++. При цьому Visual C ++ 2010 Express має обмежені, порівняно з Microsoft Visual Studio, можливості і призначенt, в основному для любителів і студентів.

Рис. 1.2.1. Середовище середовищі Microsoft Visual C ++ 2010 Express

C ++ 2010 Express є частиною продуктової лінійки Studio 2010 Express. Visual C ++ - це потужна мова програмування, який був розроблений для забезпечення глибокого і детального контролю процесу розробки незалежно, чи працюєте ви над Win32 (COM +) або керованими додатками для.NET Framework applications.

Основні можливості Visual C ++ 2010 Express:

Компілятор для 32-бітових систем.

Бібліотеки: Windows headers and libraries, CRT, STL. NET Framework class library, C ++ Support Library.

Графічна інтегроване середовище розробки.

Інструменти налагодження.

Підтримка.NET Framework 4.

Інтерактивна стартова сторінка.

Нове середовище розробки на основі WPF.

Підтримка платформи розробки. 2 Функціональне призначення

2. Функціональне призначення


2.1 Призначення програми


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

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

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

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

Бувають і 3D лабіринти, такі ігри відрізняються досить великою складністю, коли Ви шукайте вихід в подвійній площині, це буває складно, а буває легко, але коли сюди додають ще третю площину, то це стає завжди важко і часом, щоб знайти вихід доведеться довго поневірятися по таким лабіринтам. А хоча включайте свою уяву, зорову пам`ять і починайте проходити цікаві лабіринти, які представлені в цьому жанрі.

2.2 Функціональні обмеження на застосування


Функціональних обмежень на застосування програми немає.

3. Опис логічної структури


3.1 Алгоритм програми


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

Поняття алгоритму належить до підвалин математики. Обчислювальні процеси алгоритмічного характеру (як-то арифметичні дії над цілими числами, знаходження НСД двох чисел тощо) відомі людству з глибокої давнини. Проте, чітке поняття алгоритму сформувалося лише на початку XX ст

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

Алгоритм нашої програми виглядає наступним чином:

.        Початок роботи програми. Запуск скомпільованого нами файлу.

.        Ініціалізація об’єктів програми.

.        Вибір рівня

.        Завантаження карти

.        Рух лабіринтом

.        Виведення результатів

.        Завершення алгоритму

3.2 Методи та елементи, що використовуються


Для реалізації алгоритму програми використовуються стандартні методи середовища програмування, а також бібліотеку SFML

SFML (Проста і Швидка Мультимедійна Бібліотека) є портативним і легким у використанні API для мультимедіа-програмування. Це об'єктно-орієнотована альтернатива для SDL.забезпечує використання 2D-графіки з апаратним прискорення OpenGL. SFML також може бути використаний для OpenGL-проектів. SFML також надає різні модулі для полегшення програмування ігор і мультимедійних додатків.

Модулі:

·        «Системний модуль (System module (SFML))» - забезпечує управління системними параметрами.

·        «Віконний модуль (Window module (SFML))» - забезпечує управління вікнами та взаємодію програми з користувачем.

·        «Графічний модуль (Graphics module (SFML))» - забезпечує відображення графічних елементів та управління ними.

·        «Аудіо модуль (Audio module (SFML))» - надає інтерфейс для обробки звуків і музики.

·        «Мережевий модуль (Network module (SFML))» - забезпечує управління мережевими функціями за допомогою сокетів.

3.3 Структура програми з описом функцій складових частин і зв'язків між ними


Структура програми являє собою набір функцій. Наша програми містить також один клас:

class PLAYER { // клас гравець

:

dx, dy; // координати гравцяrect;sprite;currentFrame;finish;

Даний клас призначений для створення основного об’єкта нашої гри - м’яча, який буде рухатись по лабіринту. В даному класі описані наступні методи:

.        Конструктор - призначений для створення екземпляру класа (об’єкта)

(Texture &image) // конструктор класу гравець

{.setTexture(image);= FloatRect (21,21,21,21);=false;=dy=0.1;= 0;

}

.        Метод Update - служить для оновлення місцезнаходження гравця на карті

update (float time) // функція стеження положення гравця

{.left += dx * time;.top += dy*time;(0);(1);

+= 0.005*time;.setPosition (rect.left - offsetX, rect.top - offsetY);=0;=0;

}

.        Метод Collision - призначений для обробки зіткнень гравця зі стінками лабіринту

{(int i = rect.top/21; i<(rect.top+rect.height)/21; i++) // цикл для зчитуваня обєктів навколо гравця(int j = rect.left/21; j<(rect.left+rect.width)/21; j++)

{(TileMap[i] [j]=='B') // перевірка наявності стіни

{((dx>0) && (dir==0)) rect.left = j*21 - rect.width; // обробка зіткнень гравця з навколишніми стінами((dx<0) && (dir==0)) rect.left = j*21 + 21;((dy>0) && (dir==1)) {rect.top = i*21 - rect.height; dy=0;}((dy<0) && (dir==1)) {rect.top = i*21 + 21; dy=0;}

}

if (TileMap[i] [j]=='0') // перевірка

{=true;

};     

}

}

};

 

.4 Зв'язок програми з іншими програмами


Наш проект не має зв’язків з іншими програмами

 


4. Необхідні технічні засоби


4.1 Типи комп'ютерів та пристроїв, що використовуються при роботі програми


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

 


5. Виклик і завантаження


5.1 Способи виклику програми


Виклик програми виконується завантаженням на виконання файлу labirint.exe

 

.2 Адреса завантаження програми


Адреса завантаження визначається операційною системою автоматично.

.3 Відомості про використання оперативної пам'яті

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

5.4 Обсяг програми


Файл labirint.exe має обсяг 87 Кб.

6. Вхідні дані


6.1 Характер вхідних даних


Вхідні дані для роботи програми являють натиснення клавіш

6.2 Організація вхідних даних


Вхідні дані організовуються у вигляді сигналів з клавіатури.

6.3 Попередня підготовка вхідних даних


Попередня підготовка вхідних даних не обов’язкова.

7. Вихідні дані


7.1 Характер вихідних даних


Вихідними даними є повідомлення і результати гри

7.2 Організація вихідних даних


Вихідні дані організовані у вигляді повідомлень

 

.3 Формат, описання та спосіб кодування даних


Текстові повідомлення, що виводяться на екран.

 


8. Опис програми і тестування програми


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

Тестування програмного забезпечення (англ. Software Testing) - це процес технічного дослідження, призначений для виявлення інформації про якість продукту відносно контексту, в якому він має використовуватись. Техніка тестування також включає як процес пошуку помилок або інших дефектів, так і випробування програмних складових з метою оцінки. Може оцінюватись:

·              відповідність вимогам, якими керувалися проектувальники та розробники

·              правильна відповідь для усіх можливих вхідних даних

·              виконання функцій за прийнятний час

·              практичність

·              сумісність з програмним забезпеченням та операційними системами

·              відповідність задачам замовника.

Оскільки число можливих тестів навіть для нескладних програмних компонент практично нескінченне, тому стратегія тестування полягає в тому, щоб провести всі можливі тести з урахуванням наявного часу та ресурсів. Як результат програмне забезпечення (ПЗ) тестується стандартним виконанням програми з метою виявлення баґів (помилок або інших дефектів).

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

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

Тестування - це одна з технік контролю якості, що включає в себе

·              Планування робіт (Test Management)

·              Проектування тестів (Test Design)

·              Виконання тестування (Test Execution)

·              Аналіз отриманих результатів (Test Analysis).

Верифікація (Verification) - це процес оцінки системи або її компонентів з метою визначити чи задовольняють результати поточного етапу розробки умовам, сформованим на початку цього етапу. Тобто чи виконуються цілі, терміни, завдання з розробки проекту, визначені на початку поточної фази. Валідація (Validation) - це визначення відповідності розроблюваного програмного забезпечення між очікуваннями і потребами користувача, вимогам до системи.

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

Тест дизайн (Test Design) - це етап процесу тестування програмного забезпечення, на якому проектуються і створюються тестові випадки (тест кейси), відповідно до визначених раніше критеріями якості та цілями тестування.

Тестовий випадок (Test Case) - це документ, що описує сукупність кроків, конкретних умов і параметрів, необхідних для перевірки реалізації тестованої функції або її частини.

Баг / Дефект Репорт (Bug Report) - це документ, що описує ситуацію або послідовність дій (Steps), що призвела до некоректної роботи об'єкта тестування (Misbehavior), із зазначенням причин та очікуваного результату (Expected Result).

Тестове Покриття (Test Coverage) - це одна з метрик оцінки якості тестування, що представляє із себе щільність покриття тестами вимог або коду, що виконується.

Деталізація Тест Кейсів (Test Case Specification) - це рівень деталізації опису тестових кроків і необхідного результату, при якому забезпечується розумне співвідношення часу проходження до тестового покриття.

Час Проходження Тест Кейса (Test Case Pass Time) - це час від початку проходження кроків тест кейса до отримання результату тесту.

Отже перейдемо до безпосередньої перевірки нашої програми на працездатність.

Для початку запускаємо серверну частину програми - server.exe/

Наша програма розпочинатиметься виводом на екран монітора комп’ютера головного вікна (див рис. 8.1).

Рис. 8.1. Головне вікно програми

Після цього вибираємо лабіринт і розпочинаємо гру (див рис 8.2)

Рис. 8.2. Вікно лабіринту

Тепер основною задачею гравця є за допомогою стрілок дібратися до кінця лабіринту, який відмічений зеленим квадратом (див рис 8.3)

Рис. 8.3. Вікно руху лабіринтом

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

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

 


Висновок


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

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

 


Список використаної літератури


.     Інформатика. Мова програмування С++. Спецкурс. 10-12 класи. Навчальний посібник / Лєхан С.А. - Шепетівка, «Аспект», 2007 - 160 с.

2.      Об’єтно-орієнтоване програмування мовою С++, Навчальний посібник, Т.Є. Рак, Львів, 2011 - 401с

.        Борис Пахомов - C C++ и MS Visual С++ 2010 для начинающих - БХВ-Петербург, 2011 - 736 с.

Додаток


#include <SFML/Graphics.hpp>

#include <sstream>

#include <string>

#include <fstream>

namespace sf;namespace std;

int H = 12;int W = 40;

TileMap[H] = { // карта

«BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB»,

«B B B»,

«B B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB B»,

«B B B B B»,

«B B B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB B B»,

«B B B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB B B»,

«B B B 0B B B»,

«B B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB B B»,

«B B B B»,

«B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB B»,

«B B»,

«BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB»,

};

menu (RenderWindow & window) { // функція менюmenuTexture1, menuTexture2, menuTexture3, menuTexture4, menuTexture5, aboutTexture; // пункти меню.loadFromFile («111.png»);.loadFromFile («222.png»);.loadFromFile («333.png»);.loadFromFile («444.png»);.loadFromFile («555.png»);menu1 (menuTexture1), menu2 (menuTexture2), menu3 (menuTexture3), menu4 (menuTexture4), menu5 (menuTexture5);isMenu = 1;menuNum = 0;.setPosition (100, 30);.setPosition (100, 90);.setPosition (100, 150);.setPosition (100, 210);.setPosition (100, 270);

////////////////////////////// МЕНЮ /////////////////// (isMenu) // виведення меню

{.setColor (Color: White);.setColor (Color: White);.setColor (Color: White);.setColor (Color: White);.setColor (Color: White);= 0;.clear (Color(129, 181, 221));(IntRect (100, 30, 300, 50).contains (Mouse:getPosition(window))) {menu1.setColor (Color: Blue); menuNum = 1;}(IntRect (100, 90, 300, 50).contains (Mouse:getPosition(window))) {menu2.setColor (Color: Blue); menuNum = 2;}(IntRect (100, 150, 300, 50).contains (Mouse:getPosition(window))) {menu3.setColor (Color: Blue); menuNum = 3;}(IntRect (100, 210, 300, 50).contains (Mouse:getPosition(window))) {menu4.setColor (Color: Blue); menuNum = 4;}(IntRect (100, 270, 300, 50).contains (Mouse:getPosition(window))) {menu5.setColor (Color: Blue); menuNum = 5;}

(Mouse:isButtonPressed (Mouse: Left))

{(menuNum == 1) {isMenu = false; return 1;} // нажата перша кнопка(menuNum == 2) {isMenu = false; return 2;} // нажата друга кнопка

}

.draw(menu1);.draw(menu2);.draw(menu3);.draw(menu4);.draw(menu5);

.display();

}

////////////////////////////////////////////////////

}

class PLAYER { // клас гравець

:

dx, dy; // координати гравцяrect;sprite;currentFrame;finish;

(Texture &image) // конструктор класу гравець

{.setTexture(image);= FloatRect (21,21,21,21);=false;=dy=0.1;= 0;

}

update (float time) // функція стеження положення гравця

{

.left += dx * time;.top += dy*time;(0);(1);

+= 0.005*time;.setPosition (rect.left - offsetX, rect.top - offsetY);=0;=0;

}

Collision (int dir) // функція взаємодії обєкта гравця з навколишнями обєктами гри

{(int i = rect.top/21; i<(rect.top+rect.height)/21; i++) // цикл для зчитуваня обєктів навколо гравця(int j = rect.left/21; j<(rect.left+rect.width)/21; j++)

{(TileMap[i] [j]=='B') // перевірка наявності стіни

{((dx>0) && (dir==0)) rect.left = j*21 - rect.width; // обробка зіткнень гравця з навколишніми стінами((dx<0) && (dir==0)) rect.left = j*21 + 21;((dy>0) && (dir==1)) {rect.top = i*21 - rect.height; dy=0;}((dy<0) && (dir==1)) {rect.top = i*21 + 21; dy=0;}

}

(TileMap[i] [j]=='0') // перевірка

{=true;

};     

}

}

};startGame()

{window (VideoMode(600, 400), «Labirint»); // створення вікна(window);t; // створення і завантаження текстури гравця.loadFromFile («m.png»);

currentFrame=0;

p(t); // створення обєкта класу гравець

clock;gameTime;gameTm = 0;: Text text;rectangle (Vector2f(21,21));

(window.isOpen()) // цикл по роботі вікна

{

time = clock.getElapsedTime().asMicroseconds();.restart();

= time/700;

(time>20) time = 20;

event;(window.pollEvent(event)) // цикл по закритті вікна

{(event.type == Event: Closed).close();

}(p.finish==false) {(Keyboard:isKeyPressed (Keyboard: Left)) // обробка натиснень клавіш і рух гравця вліво

{.dx = -0.1;

}

(Keyboard:isKeyPressed (Keyboard: Right)) // вправо

{.dx = 0.1;

}

(Keyboard:isKeyPressed (Keyboard: Up)) // вгору

{.dy=-0.1;

}(Keyboard:isKeyPressed (Keyboard: Down)) // вниз

{.dy=0.1;

}=gameTime.getElapsedTime().asSeconds();

.update(time); // оновлення положення гравця

if (p.rect.left>300) offsetX = p.rect.left - 300; // скролінг карти= p.rect.top - 200;

.clear (Color: White); // очищення екрана

(int i=0; i<H; i++) // створення карти(int j=0; j<W; j++)

{(TileMap[i] [j]=='B') rectangle.setFillColor (Color: Black);

(TileMap[i] [j]=='0') rectangle.setFillColor (Color: Green);

(TileMap[i] [j]==' ') continue;

.setPosition (j*21-offsetX, i*21 - offsetY);.draw(rectangle);

}

(p.finish==true) {return true;}:ostringstream TimeStr;<< gameTm;font;.loadFromFile («sansation.ttf»);mytext;.setString («Time: «+TimeStr.str());.setFont(font);.setColor (Color: Red);.setPosition (0,0);.draw(mytext);      .draw (p.sprite); // створення вікна.display(); // виведення вікна на екран

}

}

gameRuning() {(startGame())

{();

};

};

main() // головна функція програми

{(); // старт ігри0;

}

Похожие работы на - Гра 'Лабіринт'

 

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