Використання концепції компонентного програмування
Основні концепції компонентної розробки прикладних задач. Технологія розподіленого програмування CORBA. Розробка можливої стратегії гри для кожної категорії учасників. Створення об'єктної моделі системи. Програмна реалізація спроектованої системи.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 06.11.2014 |
Размер файла | 970,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
- Зміст
- Перелік умовних скорочень
- Вступ
- 1. Аналіз предметної області. Вибір компонентної технології
- 1.1 Основні концепції компонентної розробки прикладних задач
- 1.2 Модель COM/DCOM
- 1.3 Модель Java Beans
- 1.4 Технологія розподіленого програмування CORBA
- 1.5 Технологія.NET
- 2. Розробка технічного завдання
- 3. Розробка стратегії гри для кожної категорії учасників
- 4. Створення об'єктної моделі системи
- 5. Розробка власного компоненту
- 6. Програмна реалізація спроектованої системи
- 6.1 Опис взаємодії гри з користувачем
- 6.2 Загальні відомості про програму
- Висновки
- Список літератури
- Додаток А
- Додаток Б
- Додаток В
- Додаток Г
- Додаток Д
- програмування стратегія гра система
- Перелік умовних скорочень
- Microsoft.NET -- програмна технологія, платформа для створення програмного забезпечення
- Microsoft Visual Studio 2010 - середовище розробки програмного забезпечення
- Microsoft XNA - набір інструментів, що полегшує розробку і управління комп'ютерними іграми
- XNA Game Studio - середовище розробки комп'ютерних ігор за допомогою Microsoft XNA
- UML - уніфікована мова об'єктно-орієнтованого моделювання
- DCOM (ActiveX) (Distributed Component Object Model)
- CORBA (Common Object Request Brocer Architecture)
- OMG (Object Management Goup)
- IDL (Interface Definition Language),
Вступ
Компонентне програмування - наступний еволюційний крок на шляху розвитку передових технологій. Воно являє собою логічне продовження структурного і об'єктно-орієнтованого програмування. Компонентне програмування зі своєю появою принесло дуже важливі технологічні елементи: єдину оболонку для функціонування об'єктів, уніфікацію способів взаємодії і доступу до можливостей об'єктів. Воно дозволяє будувати програмне забезпечення по принципу конструктора - із незалежних готових компонентів, що набагато ефективніше, ніж створювати з нуля. Для розробки кожного такого «будівельного блоку» програміст може використовувати будь-яку мову програмування. Але найголовніше, що забезпечується прозорий доступ до віддалених об'єктів.
Концепція компонентного програмування має на увазі повне відокремлення внутрішніх функцій компонента від функцій доступу до нього із зовні. Тобто звертаючись до компоненту зовсім не обов'язково знати його внутрішню будову, для цього досить знати лише те, як викликати цю функцію. Іншими словами, необхідно знати, як взаємодіяти з компонентом, який його інтерфейс.
Таким чином значення слова інтерфейс в мовах програмування має таке ж саме значення, як і в звичайній мові: інтерфейс - це те, що розміщено між двома об'єктами і забезпечує взаємозв'язок між ними. Звідси слідує, що інтерфейс-орієнтоване програмування являє собою технологію розробки програмного забезпечення, жорстко орієнтовану на використання інтерфейсів. Тут, починаючи розробку програми, потрібно в першу чергу розробити інтерфейс, а потім жорстко дотримуватись їх на кожному етапі проектування.
Отже можна сказати, що компонентні об'єктні середовища є найбільш сучасним та природнім фундаментом для накопичення та використання знань з програмування. Подібне середовище базується на компонентній об'єктній моделі. Воно включає в себе готові компоненти, а також інструментальні засоби які дозволяють вибрати компоненти, настроїти їх і зв'язати між собою та об'єднувати.
Компонентні середовища володіють всіма перевагами притаманними об'єктно-орієнтованому підходу.
Інкапсуляція об'єктних компонентів ховає складність реалізації роблячи доступним тільки представлений зовні інтерфейс.
Наслідування дозволяє розвивати створені раніше компоненти, при цьому не порушуючи цілісність об'єктної оболонки.
Поліморфізм дає можливість групувати об'єкти характеристики яких з деякої точки зору схожі.
Частіше всього розподілені об'єкти (компоненти) працюють в конфігурації клієнт-сервер. Самі об'єкти являються серверами - вони реагують на запити і надають клієнту сервіси або ресурси.
З точки зору компонентної моделі, компоненти описується набором інтерфейсів, які вона реалізує. Кожний такий інтерфейс - це свого роду «розетка» до якої повинні під'єднуватися інші компоненти або прикладні задачі.
В даній курсової роботі буде розроблена програма, що моделює багатосторонню гру «Дуель». Дана програма буде створена з використанням компонентних технологій.
В ході роботи буде сформований власний компонент, який буде реалізувати моделювання діагонального руху об'єкта, що в подальшому зможе використовуватися поза межами даної програми.
1. Аналіз предметної області. Вибір компонентної технології
1.1 Основні концепції компонентної розробки прикладних задач
Під компонентами програмного забезпечення розуміють прості структурні елементи, які можна повторно використовувати при побудові програмних систем. Вони реалізують прикладні функції інформаційної системи, надають семантичні послуги прикладного або технічного характеру та можуть бути модифіковані в процесі розробки на рівні двійкових кодів.
Від стандартів компонент залежать методи побудови та організація взаємодії між компонентами. Ці стандарти визначають представлення компонента перед зовнішніми для нього об'єктами незалежно від внутрішньої його реалізації. Таким представленням є інтерфейси та протоколи взаємодії. Якщо застосовувати в процесі розробки стандартні інтерфейси і дотримуватися протоколів компонент то є гарантія, що компоненти з схожими специфікаціями виявляться взаємозамінні і дадуть змогу їх незалежної модифікації. Зовнішній вигляд та поведінка компонент може бути адаптована до визначених прикладних функцій інформаційної системи. Компоненти можна об'єднувати, формуючи з них або більші компоненти або закінчені прикладні задачі.
Під інтерфейсом компонента, через який інші компоненти можуть під'єднуватися до компонента та підтримувати взаємодію, зазвичай розуміють дескриптор інтерфейсу. Дескриптор інтерфейсу це набір властивостей компонента, набір методів компонента, набір подій, які визначають реакцію компонента на зовнішній вплив або внутрішні умови.
Властивості та методи компонента представляються інтерфейсом, через який зовнішні об'єкти мають доступ до сервізів, що надає даний компонент. Цей інтерфейс називається інтерфейсом прикладного програмування API. При цьому властивості компонента описують значення його загально доступних атрибутів, а методами визначається його поведінка. Події визначають реакцію компонента на зовнішні впливи або на внутрішні умови (наприклад на зміну значення тієї чи іншої властивості). Від інтерфейсу залежить яка подія буде активізована при виникненні деякої умови.
Зовнішні дані в яких виникає потреба в сервісах даного компонента, повинні самі зареєструватися в середовищі розробки та виконання для отримання події та показати свій методи для обробки цієї події.
Така модель взаємодії об'єктів, заснована на механізмі публікації та підписки, дозволяє динамічно встановлювати зв'язки між компонентами в розподіленому середовищі.
Компоненти існують та функціонують всередині контейнерів. Контейнери створюють загальний контекст взаємодії між компонентами прикладних задач. Контейнери також надаються компонентам вкладеним в інші компоненти, стандартний доступ до послуг середовища виконання.
Контейнери самі часто реалізуються в вигляді компонентів і можуть бути вкладені в інші контейнери. Для організації зв'язків між компонентом та контейнером, що знаходиться в ньому зазвичай використовують протоколи засновані на механізмі подій.
Стандарти компонентів визначають мета дані (тобто дані про дані), які кожен компонент друкує для того щоб мати можливість взаємодії з іншими компонентами. Мета-дані про властивості даного компонента можуть повідомлятися або статично на етапі проектування, або динамічно на етапі виконання.
Основні концепції компонентного програмування дадуть змогу краще зрозуміти існуючі технології з цього напряму програмування. Розглянемо основні платформи які на даний момент вважаються найефективнішими в програмуванні і фактично формують нову епоху в програмуванні.
1.2 Модель COM/DCOM
COM і DCOM - технології, які забезпечують взаємодію між компонентами прикладної задачі. Вони дозволяють розгортати розподілену прикладну задачу на платформі Windows. COM - є моделлю програмування на основі об'єктів. Вона спрощує взаємодію компонентів та прикладних задач. DCOM це, свого роду, «клей» який зв'язує різні технології. DCOM дає змогу двом або декільком компонентам легко взаємодіяти одне з одним, незалежно від того, коли і на якій мові вони були написані, а також де саме вони знаходяться і в якій операційній системі працюють. Розглянемо більш детально DCOM.
Модель DCOM, запропонована компанією Microsoft. Вона задає тип та структуру інтерфейсів, які забезпечують взаємодію компонентів в розподіленому середовищі. Кожний компонент в моделі DCOM повинен мати принаймні один інтерфейс, що підтримує основні механізми інтерфейсних посилань. В DCOM реалізовано механізм повідомлення про події. Передбачені інтерфейси для доступу до мета-даних. Інтерфейс доступу до бібліотеки типів дозволяє динамічно знаходити та забезпечувати взаємодію компонентів в процесі виконання.
Середовище компонентної розробки підтримує на даний момент розробку компонент на трьох мовах програмування: Visual Basic, Visual C++ та J++. Візуальна розробка компонент підтримується за допомогою property sheet. Середовище розробки і виконання компонентів також розроблене а основі моделі DCOM. Саме завдяки цьому його можна розширювати та настроювати за допомогою стандартних механізмів.
Так як в мовах C++ і Visual Basic немає вбудованої підтримки рефлексій, на відміну від Java, тому в DCOM всі метадані (крім тих що відносяться до Java) виражаються в термінах компонентної моделі, а не на мові програмування.
1.3 Модель Java Beans
Платформа розподілених компонентів основана на специфікації Java Beans була розроблена компанією Sun Microsystems. Специфікація Java Beans являє собою сукупність спеціальних інтерфейсів мови програмування Java. Вона наслідує поняття та характеристики Java, такі як об'єктна орієнтованість, багато потоковість, використання віртуальної машини, незалежність від апаратно-програмної платформи, інформаційна безпека та багато інших. На відміну від моделі DCOM, яка є нейтральною до мови програмування, але залежить від платформ, Java Beans нейтральна до платформ, але залежить від мови програмування (орієнтована на Java). Мобільність компонентів які створюються відносно платформ забезпечує технологія віртуальної Java-машини.
Середовище компонентної розробки, засноване на технології Java Beans, має API-інтерфейс. Він явно підтримує візуальну розробку компонентів за допомогою сторінки властивостей DCOM. Цими якостями володіють інтегровані середовища розробки: Visual Cafe компанії Symantec, Visual Age for Java корпорації IBM, JBuilder (Borland), Java Workshop (Sun Microsystems).
По функціональним можливостям вони можуть порівнюватися з середовищем Visual Studio від Microsoft. Вони забезпечують візуальну розробку компонентів за допомогою застосування сторінки властивостей, палітр и попереднім визначенням правил буксирування готових компонентів за допомогою мишки.
Для формування мета даних в моделі Java Beans використовується API-інтерфейс Core Reflection. Який був успадкований від Java. Він являє собою спеціальний набір класів Java.
Платформа розподілених компонентів заснована на моделі Java Beans описана специфікацією EJB (Enterprise Java Beans) компанії Sun Microsistem. Вона являє собою розподілене серверне середовище для Java аналогічну по функціональним можливостям для середовища DCOM.
Кожний компонент EJB повинен функціонувати всередині контейнера, який ізолює його від робочої ОС сервера. Контейнер автоматично виділяє компоненту потік процесів і управляє від його імені службами підтримки паралелізму, захисту, довгочасного збереження, транзакційної обробки та іншими службами, котрі надаються зі сторони серверного середовища.
1.4 Технологія розподіленого програмування CORBA
CORBA - це одна з популярних на сьогоднішній день технологій розподіленого програмування. Вона розроблялася та підтримується консорціумом OMG і є багато різних реалізацій стандарту для різних платформ та мов програмування.
CORBA дозволяє створювати розподілені в просторі мережі компоненти, при чому ці компоненти можуть бути написані на різних мовах програмування (наприклад С та Java), працювати на різних операційних системах (наприклад Linux і Windows NT), просто визначаючи інтерфейси одне одного и віддалено викликаючи відкривання нових методів, з яких складаються компоненти.
CORBA включає в себе просту мову програмування опису інтерфейсів об'єктів - IDL, вона дозволяє відділяти описання інтерфейсів від їх реалізації в перетворювати в CORBA існуючі прикладні задачі. Важливо також відзначити що будь-який компонент може бути як клієнтом так і сервером одночасно. Для підвищення надійності, захисту даних і досягнення кращої роботи CORBA може бути реалізований як частина операційної системи. При цьому посилання на об'єкти можуть бути зроблені постійними, таким чином зменшуючи час, необхідний для обробки кожного запиту.
Можна викликати методи об'єктів, розташований в цій же програмі, на цьому ж хості в мережі, на будь-якому хості або пристрої в мережі. Для того щоб викликати методи віддаленого об'єкту потрібно мати як мінімум його опис на IDL і об'єктне посилання на нього.
1.5 Технологія.NET
Платформа MS.NET включає в себе як готові компоненти для побудови програмного забезпечення, так і інтегроване середовище розробки, що забезпечує можливість багатомовної розробки програмних систем з використанням різних мов програмування (наприклад С#, C++, VBasic.NET, Java#).
Платформа MS.NET розвинула існуючі підходи до зниження складності програмного забезпечення - компонентному представленню програмних систем і пропонує більш надійний та простий метод формування програмних компонент.
Платформа використовує розподілені обчислення, які в значній мірі знижують складність сучасної форми розробки програмного забезпечення в вигляді розподілених програмних систем або клієнт-серверних прикладних задач.
Платформа MS.NET містить більшість існуючих на даний момент Інтернет технологій, забезпечує можливість швидкої розробки як звичайних Web-додатків так і Web-сервісів.
Платформа.NET складається з основних компонентів:
Visual Studio.Net |
|||
Сервери.Net |
.Net Framework |
Сервіс.Net |
|
Операційні системи |
- Операційні системи Microsoft представляють базовий рівень платформи.
- Сервери.Net є програмними продуктами Microsoft, використання яких дозволяє знизить складність розробки складних програмних систем. (наприклад використовуються сервери Application Center 2000, Exchange Server 2000,SQL).Сервіс.Net (Net Building Bloc Services) представляє собою готові «будівельні блоки» складних програмних систем, які можуть бути використані через Інтернет як сервісні послуги (наприклад Microsoft Passport, що дозволяє встановити єдине ім'я користувача і пароль на всіх сайтах, які підтримують аутентифікацію через Passport).
- Visual Studio.Net - верхній рівень MS.NET. Забезпечує можливість створення складного програмного забезпечення на основі платформи.
- Центральною частиною MS.NET є.NET Framework.
NET Framework складається із двох головних компонентів: бібліотеки базових класів та CLR (Common Language Runtime). Які відповідно призначені для вирішення наступних завдань:
- Уніфікації бібліотек функцій для всіх застосувань, незалежно від мови програмування яка використовується.
- Підвищення керованості застосувань з погляду безпеки та ефективного використання ресурсів.
Net Framework Class Library - бібліотека базових функцій. Принципова новизна полягає в тому, що якщо раніше подібний набір створювався окремо для кожної мови програмування, то тепер він один для всіх засобів.
CLR (Common Language Runtime) - складний програмний апарат, призначений для стирання границь між різними мовами програмування. Він виконує програми, частини яких написані на різних мовах програмування.
Вище було розглянемо основні концепції та технології компонентного програмування, що набули особливого розвитку в останні роки. Хочеться звернути увагу, що технології які застосовуються та інструментальні засоби аналізу та проектування підтримують як структурний так і об'єктний підходи, застосовуючись до компонентної розробки прикладних задач. Від програмних модулів інших типів, з точки зору реалізації, компоненти відрізняються тим що їх можна модифікувати в процесі розробки на рівні двійкових кодів що виконуються. В той час як бібліотеки, підпрограми та інші модулі необхідно змінювати на рівні вихідних кодів з відповідною перекомпіляцією.
Якщо порівнювати яка платформа краща то однозначно нічого сказати не можна кожний програміст вибирає те що для нього найбільш потрібно на даний момент. Вважається що через кілька років.NET повністю монополізує ринок, але якщо порівнювати його з Java то єдиний її недолік те що вона більш повільна (більш ніж в три рази). Однак це пояснюється тим що сама віртуальна Java-машина є більш універсальною і тим самим вповільнює виконання. Якщо порівнювати CORBA і COM то вони також як багато в чому відмінні так і багато в чому схожі. Це клієнт-серверні технології, в яких функціональність об'єкту надається клієнту через звернення до абстрактних інтерфейсів.
Отже виходячи з вище представленої інформації чітко зваживши всі плюси та мінуси розглянутих компонентних технологій даний проект буде розроблятися з використанням технології.Net.
Основним критерієм на основі якого було обрано дану технологію є її універсальність та більша розповсюдженість в сфері розробки програмних продуктів.
2. Розробка технічного завдання
У даному програмному проекті реалізується модель багатосторонньої дуелі. Дана програма повина відповідати наступним критеріям:
1. Кількість дуелянтів повина бути не менше трьох;
2. В ході програми з допомогою жеребу повинен бути сформований порядок стрільби дуелянтів.
3. Дуелянти повині розташовуються на однаковій відстані один від одного.
4. Вони обмінюються пострілами почерзі, визначеній жеребом, поки не залишиться лише один дуелянт.
5. Черговий стріляючий може стріляти в будь якого із інших.
6. Потрібно сформувати моделы трьох категорій дуелянтів:
- С - снайпер і ніколи не промахується з даної дистанції;
- Б - влучає лише в 80%;
- Д - приблизно в 50% випадків.
7. Потрібно розробити найкращу стратегію гри для кожного із учасників.
8. Програма повинна мати меню, мінімальний склад якого такий:
- Робота програми;
- Відомості про програму (інструкція);
- Відомості про автора;
- Вихід.
9. Всі надписи на екрані повинні бути державною мовою.
10. У роботі передбачено створення власних класів та бібліотек.
3. Розробка стратегії гри для кожної категорії учасників
В для забезпечення роботи даної програми необхідною умовою є розробка загальної моделі поведінки кожного з гравців для забезпечення найбільшої імовірності їх перемоги у дуелі.
В ході аналізу даної ситуації був розроблений алгоритм який передбачає усі можливі варіанти розвитку ситуації та вибір найкращого на даний момент часу.
private void completion_shooting()
{
bullet[A, 0] = 0;
if (type_shot == "killed")
people[B, 0] = 0;
if (type_shot == "live")
people[B, 0] = 1;
if (type_shot == "killed")
DlReport.GridReport.Rows.Add(nameColor[list_people[0]] + " знищив " + nameColor[strongest_man]);
if (type_shot == "live")
DlReport.GridReport.Rows.Add(nameColor[list_people[0]] + " не попав в " + nameColor[strongest_man]);
timerShot.Enabled = false;
upgrade_current_point();
List<int> All_people = new List<int>();
for (int i = 0; i < people.GetLength(0); i++)
if (people[i, 0] == 1) All_people.Add(i);
if (All_people.Count == 1)
{
CptInfo.Visible = true;
DlReport.GridReport.Rows.Add("Гра завершена, переможець - \"" + nameColor[list_people[0]] + "\"");
CptInfo.Text = "Гра завершена, переможець - \"" + nameColor[list_people[0]] + "\"";
}
}
Даний фрагмент коду описує дії гравців в залежності від тої ситуації, яка склалася в ході жеребкування. Стратегі кожного з гравців, полягає у тому, що в будь якому випадку постріл потрібно виконувати по гравцю який має менший шанс на промах. Тобто у випадку коли жереб випав так, що першим стріляє гравець із імовірністю на враження 50% він буде виконувати постріл по опоненту з шансов у 100% враховуючи, що гравець із шансом 80% може схибити при свому пострілі.
4. Створення об'єктної моделі системи
UML - моделювання - досить важливий етап в проектуванні програми, що зображає сучасні тенденції в тій предметній галузі, яка досліджується в даному курсовому проекті, а саме в сфері IT- технологій, що з ним пов'язаний.
Нище приведена діаграма послідовностей для прецеденту «Запуск гри» (див рис. 3.1). Діаграма послідовностей дозволяє досить детально описати внутрішні процеси, які виникають під час виконання прецеденту. Діаграма містить ось часу, що спрямована зверху вниз; всіх виконавців; повідомлення або запити між виконавцями; посилання на інші прецеденти.
Рисунок 4.1 Діаграма послідовностей для прецеденту «Запуск гри»
Діаграма в UML - це графічне представлення набору елементів, що замальовується найчастіше у вигляді зв'язаного графа з вершинами і ребрами. Діаграми малюють для візуалізації. Основна мета діаграм - візуалізація системи, що розробляється, з різних точок зору. Діаграма - в найзагальнішому сенсі деякий зріз системи. Зазвичай, за винятком найпростіших моделей, діаграми дають згорнуте представлення елементів, з яких складається система, що розробляється.
Використання UML не обмежується моделюванням програмного забезпечення. Його також використовують для моделювання бізнес-процесів, системного проектування і відображення організаційних структур.
UML дозволяє також розробникам програмного забезпечення досягти угоди в графічних позначення для представлення загальних понять (таких як клас, компонент, узагальнення, об'єднання і більше сконцентруватися на проектуванні та архітектурі.
Далі наведена UML - діаграма класів, яка зображує об'єктну моделі комп'ютерної гри, яка реалізована в даному курсовому проекті. Вона описує структуру системи, показуючи її класи, їх атрибути і оператори, а також взаємозв'язки між цими класами.
Взаємозв'язок - це особливий тип логічних відносин між сутностями, показаних на діаграмах класів та об'єктів. В UML є декілька типів взаємозв'язків між класами, наприклад: асоціація, агрегація, композиція, узагальнення та залежність.
Далі розглянемо об'єктну модель (рис. 4.1). На якій відображені класи гри та їх атрибути, методи і зв'язки між ними.
Рисунок 4.1 UML діаграми гри «Дуель»
Система складається з таких класів:
1 Form - абстрактний клас-предок для всіх об'єктів, які відображаються на екрані, які є основними об'єктами у грі;
Методи класу:
Home_Load - початкове розташування об'єктів даний метод відображає початкове розташування об'єктів на екрані.
timer1_Tick - забезпечує відтворення руху кулі на формі та покрокову зміну її положення відповідно до ситуації.
random_real_people - забезпечує ефект жеребкування гравців в хаотичному порядку та їх шанси на перемогу.
completion_shooting - визначає результат пострілу та стан гравця в якого виконувався постріл. В залежності від шансу на влучання в ціль.
upgrade_current_state - виводить на екран статистичні параметри після виконання основного блоку прогами.
btnAutomatic_Click - забезпечення автоматичної роботи програми.
MenuItem2_Click - метод відповідає за роботу меню.
Width - ширина об'єкта;
Height - висота об'єкта;
Position - позиція об'єкта на ігровому полі;
Bounds - границі об'єкту;
IsAlive - прапорець перевірки чи існує зараз об'єкт, якщо об'єкт не існує, то в подальшому не потрібно його відображати у вікні.
Клас Ball має атрибут Velocity, він відповідає за прискорення кульки, вектор напрямку його руху.
Та має методи:
Collide() метод, який перевіряє зіткнення блоків із кулькою.
ReflectHorizontal() - метод, змінює рух кулі після зіткнення із горизонтальною стороною.
ReflectVertical() - метод, змінює рух кулі.
Move() - переміщує кулю, змінюючи її координати додаючи поточне прискорення.
Draw() - метод, виконує відображення кулі для нових позицій.
Initialize() - ініціалізація.
UnloadContent() - метод визволення пам'яті від об'єктів, які завантажувалися при виконанні методу LoadContent().
Draw() - метод, який виконує відображення усіх об'єктів у вікні, які необхідно відобразити у вікні.
Update() - метод оновлення інформації об об'єктах, при зміні їх координат або властивостей.
5. Розробка власного компоненту
Підчас створення даног проекту виникла потреба у реалізації моделювання руху кулі в просторі відповідно до передаваємих параметрів програми. В результаті вирішення даної під задачі отриманий клас, який при подальшому винесені в бібліотеку може бути використаний, як компонент інших програмних додатків. Уся ця логіка системи, її математична модель була розміщена в відповідних класах цієї бібліотеки.
private void timer1_Tick(object sender, EventArgs e)
{
//поточне положення кулі
float AX = 0, AY = 0, BX = 0, BY = 0;
AX = bullet[A, 1];
AY = bullet[A, 2];
BX = bullet[B, 1];
BY = bullet[B, 2];
bullet[A, 0] = 1;
//постріл кулі
if ((AX > BX + beside_people) && ((bullet_move_x == "XLeft") || (bullet_move_x == "")))
{
AX -= (float)Math.Abs((SAX - SBX - beside_people) / speed);
bullet[A, 1] = AX;
if (point_step == 0) bullet_move += "XLeft";
if (point_step == 0) bullet_move_x = "XLeft";
}
if ((AX + beside_people < BX) && ((bullet_move_x == "XRight") || (bullet_move_x == "")))
{
AX += (float)Math.Abs((SBX - SAX - beside_people) / speed);
bullet[A, 1] = AX;
if (point_step == 0) bullet_move += "XRight";
if (point_step == 0) bullet_move_x = "XRight";
}
if ((AY < BY + beside_people) && ((bullet_move_y == "YDown") || (bullet_move_y == "")))
{
AY += (float)Math.Abs((SBY - SAY + beside_people) / speed);
bullet[A, 2] = AY;
if (point_step == 0) bullet_move += "YDown";
if (point_step == 0) bullet_move_y = "YDown";
}
if ((AY + beside_people > BY) && ((bullet_move_y == "YUP") || (bullet_move_y == "")))
{
AY -= (float)Math.Abs((SAY - SBY + beside_people) / speed);
bullet[A, 2] = AY;
if (point_step == 0) bullet_move += "YUP";
if (point_step == 0) bullet_move_y = "YUP";
}
if (bullet_move == "XLeftYDown")
if ((AX <= BX + beside_people) && (AY >= BY + beside_people))
completion_shooting();
if (bullet_move == "XLeftYUP")
if ((AX <= BX + beside_people) && (AY + beside_people <= BY))
completion_shooting();
if (bullet_move == "XRightYDown")
if ((AX + beside_people >= BX) && (AY >= BY + beside_people))
completion_shooting();
if (bullet_move == "XRightYUP")
if ((AX + beside_people >= BX) && (AY + beside_people <= BY))
completion_shooting();
if (bullet_move == "XLeft")
if (AX <= BX + beside_people)
completion_shooting();
if (bullet_move == "XRight")
if (AX + beside_people >= BX)
completion_shooting();
if (bullet_move == "YDown")
if (AY >= BY + beside_people)
completion_shooting();
if (bullet_move == "YUP")
if (AY + beside_people <= BY)
completion_shooting();
point_step += 1;
Battlefield.Refresh();
}
Даний компонент виконує математичну модель по розрахунку розміщення кулі в просторі та вираховує параметри Х та Y для моделювання плавного руху кулі по формі.
6. Програмна реалізація спроектованої системи
В ході курсової роботи перед нами постає завдання у реалізації комп'ютерної гри «Дуель». В розробці було вжито деякі особливості, на яких я би хотів зупинити увагу.
Реалізації взаємодії між гравцем та системою був розроблений за допомогою Microsoft Visual Studio.
На етапі основного виробництва виконується величезний обсяг робіт. Спочатку пишеться вихідний код, малюється графіка, такі як спрайт. Величезний обсяг роботи також припадає на створення та розробку моделей відображення об'єктів на формі.
Весь цей час доповнюється та змінюється ігровий дизайн, щоб відобразити поточне бачення гри. Деякі особливості або аспекти гри можуть бути видалені, деякі додані. Художня трактування може еволюціонувати, а процес гри - змінитися. Може з'явитися нова цільова платформа, а також нова цільова аудиторія.
З точки зору часу перший рівень гри розробляється довше за всіх інших. Оскільки при створенні самої концепції і графіки використовуються інструменти для створення та відображення об'єктів, потрібні можливості і зміни внутрішніх інструментів. З появою нових можливостей деякі рівні можуть застаріти, тому в перший рівень гри можуть вноситися різні виправлення. Крім того, в силу динамічної природи розробки ігор, дизайнерське бачення першого етапу з часом може змінюватися. Наступні етапи розроблюються значно швидше, так як список можливостей стає більш повним, а бачення гри - більш ясним.
Тести підключаються до гри, коли з'являється щось іграбельне. Це може бути один рівень або підмножина ігор, що може використовуватися в будь-яких розумних межах. На ранньому етапі тестування гри віднімає відносно малу частку часу. У міру наближення розробки до кінця, гра може почати відбирати для тестів весь час - і навіть понаднормово - оскільки тести намагаються охопити і протестувати нові можливості, для яких існують тести регресії. Сьогодні тестування є життєво важливим для ігор, оскільки, в силу складності більшості з них, одна єдина зміна може призвести до катастрофічних наслідків.
6.1 Опис взаємодії гри з користувачем
Дана програма на самому початку розробки носила характер гри, яка моделює саму фізику дуелі з її невизначеністю та випадковістю результатів. Тому при розробці велику увагу було приділено розробці самої логіки програми, а не інтерфейсу взаємодії з користувачем.
Дана гра передбачає те, що користувач мусить задіяти свою інтуїцію у виборі на якого дуелянта йому потрібно поставити, щоб перемогти, цей аспект і передає весь азарт даної гри.
Зважаючи на це був розроблений інтерфейс гри який представлений на рисунку 6.1
Рисунок 6.1 Інтерфейс гри «Дуель»
Як видно на Рисунок 4.1 інтерфейс представлений у вигляді об'єкта відображення динаміки подій на якому при запуску промальовуються моделі 5 дуелянтів, та зони взаємодії з користувачем.
Згідно поставленої задачі було розроблено менню яке складається з пунктів таких як, «Гра» рисунок 6.2
Рисунок 6.2 Пункт меню «Гра»
До даного пункту входять події з допомогою яких користувач може закінчити гру, або почати її з початку.
Наступною необхідною умовою була розробка інструкції рисунок 6.3 з допомогою, якої користувач може дізнатися про дану гру та її запропоновані правила. Дана модель може передбачати формування гравцем власних правил, які не відповідають запропонованим.
Рисунок 6.3 Пункт меню «Інструкція»
Поле взаємодії із гравцем представлене у вигляді кнопок рисунок 6.4:
- «Нова гра»
- «Постріл»
- «Стоп»
- «Автоматична гра»
- «Звіт гри»
Рисунок 6.4 Поле взаємодії із гравцем
Кнопка «Нова гра» виконує перезапуск гри в любий момент часу виконання програми. Також при її натисненні відбувається запуск класів та методів, що відповідають за створення моделей поведінки гравців та їх стратегій, дані стратегії були описані вище. Також вона відповідає за проведення жеребкування та визначення порядку у якому будуть відбуватися постріли дуелянтів.
Моделі гравців представлені на формі круглими областями різних кольорів рисунок рисунок 6.5
Рисунок 6.5 Відображення дуелянтів на формі
Слідуючим етапом взаємодії користувача з грою є кнопка «Постріл» вона відповідає за реалізацію методу відображення руху кулі та отримання результатів роботи створеної моделі даної гри. При її натисненні відбувається відтворення на екрані першого пострілу гравця згідно із жеребом, якщо він попав в опонента той зафарбовується у червоний колір і втрачає можливість виконання власного пострілу рисунок 6.6
Рисунок 6.6 Відображення мертвих дуелянтів
Гра буде тривати до того часу поки не залишиться лише один живий гравець тоді зявиться напис із інформацією про переможця рисунок 6.7
Рисунок 6.7 Відображення мертвих дуелянтів
При розробці програми розглядалась можливість, що користувач даної програми може сам вигадувати правила тому для більшої наглядності того, що відбулося на формі була створена додаткова кнопка «Звіт гри»
При натисненні на неї користувачі можуть отримати детальний звіт даної гри, що усуне будь які конфлікти при зясуванні переможця рисунок 6.8
Рисунок 6.8 Звіт гри
Також у нас розробленні кнопка «Автоматична гра» дана функція розроблена для того, щоб користувач не затруднявся постійним нажиманням кнопки «Постріл». Дана кнопка виконує всі кроки автоматично, до моменту закінчення гри це є досить зручно коли гравців стає більше.
Кнопка «Стоп» зупиняє автоматичне виконання гри.
6.2 Загальні відомості про програму
Програма, яка реалізована як курсовий проект - цє комп'ютерна гра «Дуель». Вона розроблена в середовищі Microsoft Visual Studio 2010 та на об'єктно-орієнтовній мові програмування С# під платформу Microsoft.Net 3.5 з використанням XNA Framework 3.1.
Для того, щоб запустити мою програму необхідно мати на комп'ютері таке програмне забезпечення, як встановлений.Net Framework версії не нижче 3.0.
Для запуску програми необхідно мати файл.exe та папку Content із необхідними графічними файлами.
Програма разом з контентом займає 656 КБ пам'яті на жорсткому диску.
Характеристики персонального комп'ютера, необхідні для нормального функціонування програми:
- процесор Intel Celeron 800;
- 256 МБ ОЗП;
- не менш ніж 10 МБ вільного місця на жорсткому диску;
- установлене на комп'ютері програмне забезпечення Microsoft.Net не нижче 3.0 та Microsoft XNA Framework 3.1;
- ОС Microsoft XP Professional Service Pack 2;
- монітор Samsung або ін.
Висновки
При розробці даного курсового проекту був виконаний повний аналіз курсу «Теорія створення програмних продуктів» та проведений детальний аналіз існуючих компонентних технологій.
В ході курсового проектування була проаналізована предметна область, вивчені принципи побудови комп'ютерних ігор за допомогою таких інструментів, як Microsoft XNA Framework та інші, вирішені проблеми, вказані в аналізі предметної області.
Даний проет є досить цікавим та багатограним, що дає можливість його подальшого удосконалення. Тому розвиток цього проекту буде полягати у роботі над розширенням та вдосконаленням функціональних можливостей, для того, щоб гравці могли отримувати ще більше можливостей та грати стало цікавіше.
Виконавши курсовий проект, ми вивчили основні питання проектування і організації комп'ютерних ігор, спроектувавши програмну архітектуру комп'ютерної гри «Дуель». Вивчили та отримали навички розробки додатків мовою об'єктно-орієнтовного програмування C# для платформи Microsoft.Net з використанням додаткових інструментів розробки комп'ютерних ігор Microsoft XNA Framework. В кінцевому результаті отримали реалізацію усі поставлені задачі, які були сформульовані у постановці завдання.
Цей проект буде розвиватися, доки є бажання, та я сподіваюсь, що колись він буде запущений до експлуатації, та реальні гравці зможуть відчути усю атмосферу створеного світу та просто гарно провести час за цією грою разом з іншими гравцями.
По підсумкам проведеної роботи ми отримали аналіз предметної галузі, на основі якого було створено готовий продукт, який вже може бути використаний у реальних умовах.
Список літератури
Брукс Ф. Мифический человеко-месяц, или как создаются программные комплексы. М: «Символ-Плюс», 2010 г. 304 с.
Ватсон К. C#. М.: Лори, 2004. 880 с.
Вирт Н. Алгоритмы и структуры данных. Спб: Невский диалект, 2001 г. 352 с.
Гиббонз П. Платформа.NET для Java-программистов. СПб.: Питер, 2009. 336 с.
Голуб А. И. С и С++. Правила программирования. М: БИНОМ, 1996 г. 272 с.
Гуннерсон Э. Введение в C#. Библиотека программиста. СПб.: Питер, 2001. 304 с.
Кораблев В. Самоучитель Visual C++.NET. СПб.: Питер; Киев: Издательская группа BHV, 2011. 528 с.
Либерти Д. Программирование на C#. СПб.: Символ-Плюс, 2003. 688 с.
Майо Д. C#. Искусство программирования. Энциклопедия программиста. Киев: «ДиаСофт», 2012. 656 с.
Майо Дж. C# Builder. Быстрый старт. М.: Бином, 2005. 384 с.
Микелсен К. Язык программирования C#. Лекции и упражнения. Учебник. Киев: «ДиаСофт», 2009. 656 с.
Оньон Ф. Основы ASP.NET с примерами на C#. М.: Издательский дом «Вильямс», 2003. 304 с.
Павловская Т. А. С/С++. Программирование на языке высокого уровня. Учебник для вузов. СПб.: Питер, 2008. 464 с.
Павловская Т. А. Паскаль. Программирование на языке высокого уровня. Учебник для вузов. СПб.: Питер, 2003. 393 с.
Паппас К., Мюррей У. Эффективная работа: Visual C++.NET. СПб.: Питер, 2008. 816 с.
Петцольд Ч. Программирование для MS Windows на C#. Том 1. М.: Издательско-торговый дом «Русская Редакция», 2009. 576 с.
http://creators.xna.com/.
http://msdn.microsoft.com/.
http://mvp.support.microsoft.com/.
http://www.compulenta.ru/.
http://www.intuit.ru/.
http://www.xnadev.ru/.
Додаток А
ІНСТРУКЦІЯ КОРИСТУВАЧА
Дана розробка носить характер гри, яка моделює саму фізику дуелі з її невизначеністю та випадковістю результатів. Тому при розробці велику увагу було приділено самій логіці програми, а не інтерфейсу взаємодії з користувачем. Дана гра передбачає те, що користувач мусить задіяти свою інтуїцію у виборі на якого дуелянта йому потрібно поставити, щоб перемогти, цей аспект і передає весь азарт даної гри. Зважаючи на це був розроблений інтерфейс, представлений у вигляді об'єкта відображення динаміки подій на якому при запуску промальовуються моделі 5 дуелянтів, та зона взаємодії з користувачем.
Згідно поставленої задачі було розроблено меню яке складається з таких пунктів як «Гра» До даного пункту входять події з допомогою яких користувач може закінчити гру, або почати її з початку.
Наступною необхідною умовою була розробка інструкції з допомогою, якої користувач може дізнатися про дану гру та її запропоновані правила. Дана модель може передбачати формування гравцем власних правил, які не відповідають запропонованим.
Поле взаємодії із гравцем представлене у вигляді кнопок:
- «Нова гра»
- «Постріл»
- «Стоп»
- «Автоматична гра»
- «Звіт гри»
Кнопка «Нова гра» виконує перезапуск гри в любий момент часу виконання програми. Також при її натисненні відбувається запуск класів та методів, що відповідають за створення моделей поведінки гравців та їх стратегій.
Також вона відповідає за проведення жеребкування та визначення порядку у якому будуть відбуватися постріли дуелянтів.
Моделі гравців представлені на формі круглими областями різних кольорів.
Наступним етапом взаємодії користувача з грою є кнопка «Постріл» вона відповідає за реалізацію методу відображення руху кулі та отримання результатів роботи створеної моделі даної гри. При її натисненні відбувається відтворення на екрані першого пострілу гравця згідно із жеребом, якщо він попав в опонента той зафарбовується у червоний колір і втрачає можливість виконання власного пострілу.
Гра буде тривати до того часу поки не залишиться лише один живий гравець тоді з'явиться напис із інформацією про переможця.
При розробці програми розглядалась можливість, що користувач даної програми може сам вигадувати правила тому для більшої наглядності дій, що відбулись на формі була створена додаткова кнопка «Звіт гри». При натисненні на неї користувачі можуть отримати детальний звіт даної гри, що усуне будь які конфлікти при з'ясуванні переможця.
Також у нас розробленні кнопка «Автоматична гра» дана функція розроблена для того, щоб користувач не затруднявся постійним нажиманням кнопки «Постріл». Дана кнопка виконує всі кроки автоматично, до моменту закінчення гри це є досить зручно коли гравців стає більше. Кнопка «Стоп» зупиняє автоматичне виконання гри.
Додаток Б
ТЕХНІЧНЕ ЗАВДАННЯ
На розробку ігрової програми «Дуель»
1 Найменування й область застосування
Робоча назва розроблюваного програмного блоку (ПБ) - «ігрова програма «Дуель» ». Після закінчення розробки він буде застосовуватися для оцінки ефективності впроваджених інновації.
2 Підстави для розробки
Завдання на курсове проектування, протокол засідання кафедри ІС №__ від __. ___.______ р.
3 Вимоги до програмного забезпечення
3.1 Вимоги до функціональних характеристик:
- відображення інтерфейсу користувача;
- обробка і виведення даних про дуель;
- графічне відображення конфігурації моделювання дуелі;
- відображення результатів роботи;
- представлення вихідних даних;
3.2 Вимоги до програмного середовища
- ПБ розробляється на мові С#. Дане середовище розробки обране в результаті аналізу функціональних можливостей різних середовищ розробки.
- ПБ повинний працювати під керуванням ОС Windows, що пояснюється поширеністю даної ОС.
3.3 Вимоги до інформаційного забезпечення
- висока швидкість і надійність роботи програми;
4 Вимоги до інформаційної і програмної сумісності
Для роботи ПБ необхідна наявність Visual Studio 2010 Express. ПБ не потребує додаткових модулів та драйверів.
5 Вимоги до технічного забезпечення
Повністю збігаються з вимогами, що необхідні для встановлення ОС Windows і Visual Studio 2010 Express.
6 Вимоги до надійності
Програма має бути надійною та протестованою при всіх можливих варіантах її виконання.
7 Додаткові вимоги
Для роботи з ПБ до кваліфікації персоналу не пред'являється особливих вимог.
Додаток В
СТРУКТУРА ВЗАЄМОДІЇ КЛАСІВ ТА МЕТОДІВ
Додаток Г
UML ДІАГРАМИ
Додаток Д
ЛІСТИНГ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace Dueling
{
public partial class Home : Form
{
public Home()
{
InitializeComponent();
}
//напрям кулі
int A, B;
//швидкість кулі
int speed = 10;
//біля кулі
float beside_people = 0;
//лічильник
int point_step = 0;
//початкове положення кулі
float SAX, SAY, SBX, SBY;
//тип переміщення (очистка)
string bullet_move, bullet_move_x, bullet_move_y;
//розмір кулі
float size_bullet = 10;
// тип пострілу
string type_shot;
//кольора людей та куль
string[] nameColor = new string[] { "Orange", "Green", "Blue","Pink", "Violet" };
Color[] peopleColor = new Color[] { Color.Orange, Color.Green, Color.Blue, Color.Pink, Color.Violet };
Color[] bulletColor = new Color[] { Color.Orange, Color.Green, Color.Blue, Color.Pink, Color.Violet };
//кількість людей та людей
float[,] people = new float[6, 6];
float[,] bullet = new float[6, 5];
Report DlReport = new Report();
private void Home_Load(object sender, EventArgs e)
{
upgrade_current_state();
}
private void Home_Paint(object sender, PaintEventArgs e)
{
Battlefield.Focus();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
//отрісовка куль зазначених в масиві
for (int i = 0; i < people.GetLength(0); i++)
{
Color currentColor = new Color();
if (people[i, 0] == 1)
currentColor = peopleColor[i];
else
currentColor = Color.Red;
e.Graphics.FillEllipse(new SolidBrush(currentColor), people[i, 1], people[i, 2], people[i, 3], people[i, 4]);
}
for (int i = 0; i < bullet.GetLength(0); i++)
{
if (bullet[i, 0] != 0)
e.Graphics.FillEllipse(new SolidBrush(bulletColor[i]), bullet[i, 1], bullet[i, 2], bullet[i, 3], bullet[i, 4]);
}
}
private void timer1_Tick(object sender, EventArgs e)
//поточне положення кулі
float AX = 0, AY = 0, BX = 0, BY = 0;
AX = bullet[A, 1];
AY = bullet[A, 2];
BX = bullet[B, 1];
BY = bullet[B, 2];
//стріляюча кулька стає видимою
bullet[A, 0] = 1;
//постріл кулі
if ((AX > BX + beside_people) && ((bullet_move_x == "XLeft") || (bullet_move_x == "")))
{
AX -= (float)Math.Abs((SAX - SBX - beside_people) / speed);
bullet[A, 1] = AX;
if (point_step == 0) bullet_move += "XLeft";
if (point_step == 0) bullet_move_x = "XLeft";
}
if ((AX + beside_people < BX) && ((bullet_move_x == "XRight") || (bullet_move_x == "")))
{
AX += (float)Math.Abs((SBX - SAX - beside_people) / speed);
bullet[A, 1] = AX;
if (point_step == 0) bullet_move += "XRight";
if (point_step == 0) bullet_move_x = "XRight";
}
if ((AY < BY + beside_people) && ((bullet_move_y == "YDown") || (bullet_move_y == "")))
{
AY += (float)Math.Abs((SBY - SAY + beside_people) / speed);
bullet[A, 2] = AY;
if (point_step == 0) bullet_move += "YDown";
if (point_step == 0) bullet_move_y = "YDown";
}
if ((AY + beside_people > BY) && ((bullet_move_y == "YUP") || (bullet_move_y == "")))
{
AY -= (float)Math.Abs((SAY - SBY + beside_people) / speed);
bullet[A, 2] = AY;
if (point_step == 0) bullet_move += "YUP";
if (point_step == 0) bullet_move_y = "YUP";
}
if (bullet_move == "XLeftYDown")
if ((AX <= BX + beside_people) && (AY >= BY + beside_people))
completion_shooting();
if (bullet_move == "XLeftYUP")
if ((AX <= BX + beside_people) && (AY + beside_people <= BY))
completion_shooting();
if (bullet_move == "XRightYDown")
if ((AX + beside_people >= BX) && (AY >= BY + beside_people))
completion_shooting();
if (bullet_move == "XRightYUP")
if ((AX + beside_people >= BX) && (AY + beside_people <= BY))
completion_shooting();
if (bullet_move == "XLeft")
if (AX <= BX + beside_people)
completion_shooting();
if (bullet_move == "XRight")
if (AX + beside_people >= BX)
completion_shooting();
if (bullet_move == "YDown")
if (AY >= BY + beside_people)
completion_shooting();
if (bullet_move == "YUP")
if (AY + beside_people <= BY)
completion_shooting();
//Вмще зазначений код відповідає моделюванню руху кулі
point_step += 1;
Battlefield.Refresh();
}
List<int> list_people = new List<int>();
int strongest_man;
private void random_real_people()
{
list_people.Clear();
float strongest = -1;
strongest_man = -1;
for (int i = 0; i < people.GetLength(0); i++)
{
if (people[i, 0] == 1)
list_people.Add(i);
}
Random random = new System.Random();
for (int i = 0; i < list_people.Count; i++)
{
int j = random.Next(list_people.Count);
int temp = list_people[i]; list_people[i] = list_people[j]; list_people[j] = temp;
}
for (int i = 0; i < list_people.Count; i++)
if ((people[list_people[i], 5] > strongest) && (list_people[i] != list_people[0]))
{
strongest = people[list_people[i], 5];
strongest_man = list_people[i];
}
}
// завершення пострілу кулі
private void completion_shooting()
{
//скриваєм кулю
bullet[A, 0] = 0;
//статус людини
if (type_shot == "killed")
people[B, 0] = 0;
if (type_shot == "live")
people[B, 0] = 1;
if (type_shot == "killed")
DlReport.GridReport.Rows.Add(nameColor[list_people[0]] + " знищив " + nameColor[strongest_man]);
if (type_shot == "live")
DlReport.GridReport.Rows.Add(nameColor[list_people[0]] + " не попав в " + nameColor[strongest_man]);
//зупинка кулі
timerShot.Enabled = false;
upgrade_current_point();
List<int> All_people = new List<int>();
for (int i = 0; i < people.GetLength(0); i++)
if (people[i, 0] == 1) All_people.Add(i);
if (All_people.Count == 1)
{
CptInfo.Visible = true;
DlReport.GridReport.Rows.Add("Гра завершена, переможець - \"" + nameColor[list_people[0]] + "\"");
CptInfo.Text = "Гра завершена, переможець - \"" + nameColor[list_people[0]] + "\"";
}
}
private void upgrade_current_point()
{
for (int i = 0; i < bullet.GetLength(0); i++)
{
bullet[i, 0] = 0;
bullet[i, 1] = people[i, 1] + (float)Math.Round((float)(people[i, 3] - size_bullet) / 2);
bullet[i, 2] = people[i, 2] + (float)Math.Round((float)(people[i, 4] - size_bullet) / 2);
bullet[i, 3] = size_bullet;
bullet[i, 4] = size_bullet;
}
Battlefield.Refresh();
}
private void upgrade_current_state()
{
//початкові параметри
int CountRowsDB = DlReport.GridReport.Rows.Count - 1;
if (CountRowsDB == 0)
DlReport.GridReport.Rows.Add("Нова гра розпочата");
if (CountRowsDB > 0)
if (DlReport.GridReport.Rows[CountRowsDB-1].Cells[0].Value.ToString() != "Нова гра розпочата")
DlReport.GridReport.Rows.Add("Нова гра розпочата");
CptInfo.Visible = false;
CptInfo.Text = "Інформація";
people[0, 0] = 1;
people[0, 1] = 75;
people[0, 2] = 20;
people[0, 3] = 50;
people[0, 4] = 50;
people[0, 5] = 10;
people[1, 0] = 1;
people[1, 1] = 300;
people[1, 2] = 20;
people[1, 3] = 50;
people[1, 4] = 50;
people[1, 5] = 8;
people[2, 0] = 1;
people[2, 1] = 90;
people[2, 2] = 170;
people[2, 3] = 50;
people[2, 4] = 50;
people[2, 5] = 5;
people[3, 0] = 1;
people[3, 1] = 290;
people[3, 2] = 170;
people[3, 3] = 50;
people[3, 4] = 50;
people[3, 5] = 5;
people[4, 0] = 1;
people[4, 1] = 190;
people[4, 2] = 220;
people[4, 3] = 50;
people[4, 4] = 50;
people[4, 5] = 5;
//вище реалізується занесення інформації про дуелянтів до масиву
upgrade_current_point();
Battlefield.Focus();
}
Random random_shot = new Random();
private void btnNewGame_Click(object sender, EventArgs e)
{
//Початок нової гри
upgrade_current_state();
}
private void btnShot_Click(object sender, EventArgs e)
{
Battlefield.Focus();
random_real_people();
if (list_people.Count == 1)
return;
//номера людей
A = list_people[0];
B = strongest_man;
//визначення статусу дуелянта
if (Convert.ToInt32(Math.Round(people[list_people[0], 5])) >= random_shot.Next(1, 11))
type_shot = "killed";
else
type_shot = "live";
// додаємо лічильник
point_step = 0;
// створюємо розгалуження
if (type_shot == "killed")
beside_people = 0;
if (type_shot == "live")
beside_people = 40;
//визначаємо статус положення кулі
bullet_move = "";
bullet_move_x = "";
bullet_move_y = "";
//встановлюємо початкове положення кулі
SAX = bullet[A, 1];
SAY = bullet[A, 2];
SBX = bullet[B, 1];
SBY = bullet[B, 2];
//запуск кулі
timerShot.Enabled = true;
}
Boolean stopAutomatic = false;
private void timerAutomatic_Tick(object sender, EventArgs e)
{
if ((stopAutomatic) || (CptInfo.Text != "Інформація"))
{
timerAutomatic.Enabled = false;
stopAutomatic = false;
btnAutomatic.Enabled = true;
}
btnShot.PerformClick();
}
private void btnAutomatic_Click(object sender, EventArgs e)
{
//Автоматичне виконання гри після натиснення кнопки
Battlefield.Focus();
upgrade_current_state();
stopAutomatic = false;
timerAutomatic.Enabled = true;
btnAutomatic.Enabled = false;
}
private void btnAutomaticStop_Click(object sender, EventArgs e)
...Подобные документы
Основні концепції компонентної розробки прикладних задач: com/dcom, Java Beans, corba, .net. Розробка стратегії гри для кожної категорії учасників, компонентів. Програмна реалізація спроектованої системи, обґрунтування вибору використовуваних засобів.
курсовая работа [1,0 M], добавлен 11.11.2014Створення гнучкої клієнт-серверної системи інформаційної підтримки підвищення кваліфікації персоналу ДП № 9 з застосуванням мови програмування PHP, системи керування базами даних MySQL. Розробка алгоритмів, програмна реалізація основних процедур системи.
дипломная работа [1,8 M], добавлен 26.10.2012Концепції об'єктно-орієнтованого програмування. Конструктори та деструктори. Успадкування класів. Побудова об’єктної моделі. Визначення об'єктів та класів і зв’язків між ними. Реалізація програми в середовищі Visual Studio C++. Інтерфейс програми.
курсовая работа [743,7 K], добавлен 25.01.2016Методи алгоритмiчного описаня задач, програмування на основi стандартних мовних засобiв. Переклад з однієї системи числення в іншу при програмуванні. Системи числення. Двійкові системи числення. Числа з фіксованою і плаваючою комою. Програмна реалізація.
курсовая работа [164,1 K], добавлен 07.12.2008Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.
курсовая работа [502,5 K], добавлен 01.04.2016Основні принципи об’єктно-орієнтованого програмування. Типові середовища програмування та особливості мови С++. Етапи проектування БД. Розробка програмного забезпечення для реалізації створення бази відеофільмів. Основні положення та моделі БД.
курсовая работа [2,7 M], добавлен 24.03.2011Особливості системи онлайн-агрегаторів новин, універсальної програмної платформи Microsoft Window. Використання мови програмування C#, створення бази даних. Розробка програмного продукту, алгоритм його створення. Вихідний код та інструкція користувача.
дипломная работа [730,9 K], добавлен 21.01.2016Теоретичні основи та приклади економічних задач лінійного програмування. Розробка математичної моделі задачі (запис цільової функції і системи обмежень) і програмного забезпечення її вирішення за допомогою "Пошуку рішень" в Excel симплекс-методом.
курсовая работа [993,9 K], добавлен 10.12.2010Теоретичні основи мови програмування C++ та середовища розробки Microsoft Visual C++, яка дозволяє створювати як маленькі программи і утиліти для персонального використання, так і корпоративні системи, що працюють з базами даних на різних плтаформах.
реферат [26,5 K], добавлен 01.04.2010Широкі можливості по використанню комп'ютерних навчальних систем. Розробка навчальної системи мультимедійного посібника з дисципліни "Інформатика і ОТ" на тему "Особливості мови програмування С++. Вказівники". Вимоги до розробки навчальної програми.
курсовая работа [2,9 M], добавлен 23.11.2010Основні переваги концепції об’єктно-орієнтованого програмування. Створення форми, використання Multiple Document Interface. Реалізація графічних елементів програми, її текст. Здійснення спрацювання кнопок для активації таймера, який вмикає радіо.
курсовая работа [909,7 K], добавлен 03.10.2015Поняття та призначення технології скрінкастінгу. Огляд програм та сервісів для запису відео з екрану монітора. Основні концепції створення додатків у середовищі Wіndows. Особливості написання програм у середовищі Delphі. Програмна реалізація системи.
дипломная работа [8,5 M], добавлен 22.10.2012Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.
курсовая работа [211,3 K], добавлен 19.08.2010Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.
курсовая работа [69,4 K], добавлен 14.03.2013Переваги архітектури "клієнт-сервер", порівняльна характеристика програмних засобів розробки його систем. Основні концепції функціонування системи IP-телебачення на базі архітектури "клієнт-сервер". Механізм взаємодії клієнта і сервера в середі Delphi.
реферат [955,9 K], добавлен 30.01.2010Описано вказану систему, побудована її концептуальна модель, зроблено формальний опис системи та імітаційної моделі, виконано програмування моделі системи та наведено результати моделювання.
курсовая работа [73,1 K], добавлен 16.06.2007Концепції об'єктно-орієнтованого програмування. Спеціалізовані засоби розробки програмного забезпечення мовою Delphi. Загальні питання побудови та використання сучасних систем об’єктно-орієнтованного та візуального проектування програмних засобів.
курсовая работа [201,4 K], добавлен 01.04.2016Стан комп`ютерізації підприємства ТОВ "Люксофт-Україна". Середа розробки Eclipse. Ознайомлення з мовою програмування С++. Розробка клієнту навігаційної системи для відображення місцеперебування користувача у реальному часі з використанням онлайн мап.
курсовая работа [2,1 M], добавлен 12.09.2012Модель в об’єктно-орієнтованих мовах програмування. Програмна модель створена на мові програмування С++, в середовищі програмування Borland С++ Builder 6.0. Вибір засобів реалізації програми. Види інструментів для об'єктно-орієнтованої розробки.
курсовая работа [116,9 K], добавлен 06.06.2010Програмування математичної моделі довільної ланки хіміко-технологічної системи та дослідження її динамічних характеристик. Система Mat Lab – середовище програмування. Побудова програмними засобами кривих перехідних процесів, логарифмічних характеристик.
курсовая работа [551,3 K], добавлен 12.01.2011