Ім'я файлу: Життя.pdf
Розширення: pdf
Розмір: 1097кб.
Дата: 28.11.2022
скачати

Міністерство освіти і науки України
Житомирський технологічний коледж
Київського національного університету будівництва і архітектури
Циклова комісія інформаційних технологій
КУРСОВА РОБОТА
з дисципліни "
Об’єктно-орієнтоване програмування "
на тему "Гра Конвея «Життя»"
Виконала студентка ОКР "Молодший спеціаліст" спеціальності 121 "Інженерія
програмного забезпечення"
денної форми навчання групи П33
Ясінська Олександра Олександрівна
Керівник курсової роботи
Левківський Віталій Леонідович
Склад комісії захисту курсової роботи:
Голова комісії __________ Л.А. Білогор
Члени комісії __________ М.В. Герасимчук
__________ В.Л. Левківський
Оцінка виконання та захисту роботи _____________
м. Житомир – 2019 рік

2
Міністерство освіти і науки України
Житомирський технологічний коледж
Київського національного університету будівництва і архітектури
Відділення інформаційних технологій
Циклова комісія
інформаційних технологій
Освітньо-кваліфікаційний рівень – молодший спеціаліст
Галузь знань 12 "Інформаційні технології"
Спеціальність 121 "Інженерія програмного забезпечення"
ЗАТВЕРДЖУЮ
Голова циклової комісії
________
К.О. Журавська "____" __________ 2019 року
З А В Д А Н Н Я
НА КУРСОВУ РОБОТУ СТУДЕНТЦІ
Ясінській Олександрі Олександрівні
1. Тема "Гра Конвея «Життя»"
керівник проекту Левківський Віталій Леонідович
2. Дата захисту проекту "14" грудня 2019 року
3. Вихідні дані до проекту: середовище програмуванняMicrosoft Visual Studio
2019 та додаток Windows Form, мова програмування С#, правила гри (якщо в живої клітини два чи три живих сусіди – то вона лишається жити; якщо в живої клітини один чи немає живих сусідів – то вона помирає від «самотності»; якщо в живої клітини чотири та більше живих сусідів – вона помирає від
«перенаселення»; якщо в мертвої клітини рівно три живих сусіди – вона оживає)
4. Зміст пояснювальної записки
Вступ
Розділ 1. Аналіз проблематики, методів та засобів вирішення задачі
Розділ 2. Проектування та розробка програмного забезпечення
Розділ 3. Опис роботи з програмним додатком та його тестування
Висновки
Перелік літературних джерел
Додатки
5. Дата видачі завдання "8" жовтня 2019 р.

3
КАЛЕНДАРНИЙ ПЛАН
№ з/п
Назва етапів курсового проекту
Строк виконання етапів проекту
% виконання
1
Вступ.
20.10.2019 р.
5 2
Аналіз проблематики, методів та засобів вирішення задачі
02.11.2019 р.
10 3
Проектування та розробка програмного забезпечення
17.11.2019 р.
30 4
Опис роботи з програмним додатком та його тестування
30.11.2019 р.
25 5
Висновки.
05.11.2019 р.
10 6
Перелік посилань.
10.12.2019 р.
5
Всього
100
Студентка _________ О.О. Ясінська
Керівник роботи ___________ В.Л. Левківський

4

з/п
П.І.Б.
Шифр
для заповнення штампів
пояснювальної записки
курсової роботи
38
Ясінська Олександра Олександрівна
121.12.62.245.38-ПЗ

Змн. Арк.
№ докум.
Підпис Дата
Арк.
5 121.12.62.245.38-ПЗ
Розробив
Ясінська О.О.
Керівник
Левківський В.Л.
Рецензент
Н. Контр.
Затвердив
Журавська К.О.
Ігрова програма «Життя»
Пояснювальна записка
Літ.
Аркушів
43
ІТ; гр. П 33 4
РЕФЕРАТ
Пояснювальна записка до курсової роботи на тему «Гра Конвея “Життя”» складається з переліку умовних скорочень, вступу, трьох розділів, висновків, списку використаної літератури та додатку.
Текстова частина викладена на 31 сторінках друкованого тексту.
Пояснювальна записка має 12 сторінок додатків. Перелік літературних джерел містить 15 найменувань і займає 1
сторінку. В роботі наведено 18 рисунків та 1 таблиця. Загальний обсяг роботи – 43 сторінки.
У першому розділі було обґрунтувано створення гри Конвея «Життя».
У другому розділі проведено проектування і розробка програмного продукту.
У третьому розділі проведено тестування програмного продукту.
Висновок містить в собі результати виконаної роботи створення програми.
У додатку представлений лістинг розробленого програмного продукту.
Ключові слова: КЛІТИННИЙ АПАРАТ, ПОКОЛІННЯ, КОНФІГУРАЦІЯ,
ЕВОЛЮЦІЯ.

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
6
ЗМІСТ
ВСТУП .......................................................................................................................... 7
РОЗДІЛ 1 АНАЛІЗ ПРОБЛЕМАТИКИ, МЕТОДІВ ТА ЗАСОБІВ ВИРІШЕННЯ
ЗАДАЧІ ......................................................................................................................... 9 1.1
Аналіз задачі, засобів та методів її вирішення ............................................ 9 1.2 Аналіз існуючого програмного забезпечення за тематикою курсової роботи................................................................................................................ 10 1.3 Технічне завдання на курсову роботу ....................................................... 13
Висновки до першого розділу ......................................................................... 15
РОЗДІЛ 2 ПРОЕКТУВАННЯ ТА РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
..................................................................................................................................... 16 2.1 Проектування загального алгоритму роботи програми ........................... 16 2.2 Розробка функціональних алгоритмів роботи програми ......................... 17 2.3 Розробка програмного забезпечення ......................................................... 19
Висновки до другого розділу ........................................................................... 24
РОЗДІЛ 3 ОПИС РОБОТИ З ПРОГРАМНИМ ДОДАТКОМ ТА ЙОГО
ТЕСТУВАННЯ ........................................................................................................... 25 3.1 Опис роботи з програмним додатком ....................................................... 25 3.2 Тестування роботи програмного забезпечення ........................................ 28
Висновки до третього розділу ......................................................................... 29
ВИСНОВКИ ............................................................................................................... 30
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ................................................................... 31
ДОДАТКИ .................................................................................................................. 32

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
7
ВСТУП
Дана курсова робота присвячена розробці гри «Життя». Ця гра є клітинним автоматом розробленим у 1970 році британським математиком Джоном Конвеєм.
Конвей зацікавився проблемою, запропонованою в 1940-х роках відомим математиком Джоном фон Нейманом, який намагався створити гіпотетичну машину, яка може відтворювати сама себе. Йому вдалося створити математичну модель такої машини з дуже складними правилами. Конвей спробував спростити
ідеї запропоновані Нейманом і в результаті створив правила для своєї гри, які він ретельно підбирав та довго перевіряв їх «на практиці».
Вперше, опис гри «Життя» було опубліковано в жовтневому випуску (1970) журналу Scientific American. З моменту видання гра викликала великий інтерес через дивовижні способи розвитку патернів. Такі клітинні автомати, як «Життя», - це один з найпростіших прикладів «самоорганізованих систем». Ця предметна область привернула увагу вчених з різних галузей, таких як інформатика, фізика, біологія, біохімія, економіка, математика, філософія та генеративні науки. У ній вивчається побудова складних структур і форм поведінки на основі дуже простих правил.
Основна ідея «Життя» полягає в тому, щоб, почавши з якого-небудь простого розташування фішок (організмів), розставлених по одній в клітинці, простежити за еволюцією вихідної позиції під дією «генетичних законів» Конвея, які керують народженням, смертю і виживанням фішок.
Тема клітинних автоматів досить актуальна, адже може привести до розгадок багатьох питань в навколишньому світі та до абсолютно несподіваних результатів в різних галузях науки. Так, наприклад, еволюції деяких складних колоній дивним чином схематично повторюють етапи розвитку спіралеподібних галактик, також вони багато в чому збігаються з законами поведінки популяцій примітивних організмів, а ситуації, що з’являються в процесі гри, дуже схожі на реальні процеси, що відбуваються при зародженні, розвитку і загибелі колонії живих організмів. За цими причинами «Життя» можна віднести до категорії ігор,

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
8 що швидко розвиваються в наші дні та імітують процеси, які відбуваються в живій природі.
Гра може слугувати дидактичною аналогією, яка використовується для передачі дещо трохи нелогічного уявлення про те, що дизайн та організація можуть мимовільно виникнути за відсутності дизайнера. Наприклад, вчений
Даніель Деннетт широко використав аналогію «Всесвіту» Конвея, щоб проілюструвати можливу еволюцію складних філософських конструкцій, таких як свідомість і вільна воля, із відносно простого набору детермінованих фізичних законів, які можуть керувати нашим Всесвітом. Також гра «Життя» була застосована для аналізу соціально-економічних схем.
Мета дослідження: розробка гри Джона Конвея «Життя».
Об'єкт дослідження: вивчення можливостей інтерфейсу програмування додатків Windows Forms та аналіз клітинних автоматів, в особливості «Життя».
Предмет дослідження: відомості про клітинні автомати та гру «Життя».

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
9
РОЗДІЛ 1 АНАЛІЗ ПРОБЛЕМАТИКИ, МЕТОДІВ ТА ЗАСОБІВ ВИРІШЕННЯ
ЗАДАЧІ
1.1 Аналіз задачі, засобів та методів її вирішення
«Життя» - клітинний автомат, вигаданий англійським математиком Джоном
Конвеєм в 1970 році. Місце дії гри — «всесвіт» — являє собою площину, поділену на клітинки. Кожна клітинка може перебувати в одному з двох станів: бути живою або бути мертвою. Клітинка має вісім сусідів. Розподіл живих клітинок на початку гри називається першим поколінням. Кожне наступне покоління утворюється на основі попереднього за наведеними нижче правилами.
Основні правила гри:
• якщо в живої клітини два чи три живих сусіди – то вона лишається жити;
• якщо в живої клітини один чи немає живих сусідів – то вона помирає від «самотності»;
• якщо в живої клітини чотири та більше живих сусідів – вона помирає від «перенаселення»;
• якщо в мертвої клітини рівно три живих сусіди – вона оживає.
Дані правила отримали назву генетичних законів Конвея, вони задовольняють три основні умови:
1. не має бути жодної початкової конфігурації, для якої існувало б просте доведення можливості необмеженого росту популяції;
2. мають існувати такі початкові конфігурації, які заздалегідь мають здатність безмежно розвиватися;
3. мають існувати прості початкові конфігурації, які протягом значного проміжку часу ростуть, зазнають різноманітних змін і закінчують свою еволюцію одним із трьох наступних способів:
- повністю зникають;
- переходять у стійку конфігурацію та перестають змінюватися взагалі;

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
10
- виходять у коливальний режим з певним періодом.
Гравець не бере прямої участі у грі, а лише розставляє початкову конфігурацію «живих» клітин, які потім взаємодіють відповідно до правил, але вже без його участі [13].
Задачею даної курсової роботи є написання завершеного програмного продукту – гри «Життя». За основну мету було взято створення зручної і зрозумілої у використанні для користувачів програми яка допоможе їм досліджувати те, як розвиваються різні стартові конфігурації та проводити інші дослідження на основі даної гри.
Головною проблемою є те, що, фактично, поле гри є нескінченним, а пам’ять комп’ютера є обмеженою. Це приводить до проблем, коли активна область вторгається на кордон масиву. Існує декілька стратегій вирішення даної проблеми, але обрано було одну з найпростіших – кожна клітинка за межами масиву вважається мертвою.
Даний програмний продукт було реалізовано за допомогою інтегрованого середовища розробки програмного забезпечення Microsoft Visual Studio 2019, в додатку Windows Forms. Була обрана платформа .Net Framework і мова програмування С #. При реалізації був використаний об'єктно-орієнтований підхід.
1.2 Аналіз існуючого програмного забезпечення за тематикою курсової роботи.
Комп'ютери використовувались для керування конфігураціями «Життя» з моменту її першої реклами. Коли Джон Конвей вперше досліджував, як розвиваються різні стартові конфігурації, він відстежував їх вручну, використовуючи дошку Go зі своїми чорно-білими каменями. Це було нудно, а вірогідність допуску помилок була досить високою. Поки Конвей досліджував
R-pentomino, Джон Френсіс, студент магістратури Кембриджського університету,

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
11 написав програму, щоб перевірити результати Конвея. Ця програма показала, що конфігурація не досягла стабільного стану після 1000 поколінь.
Перша інтерактивна програма була написана в ранній версії Алгол
68С для PDP-7 по MJT Guy і SR Bourne. Результати були опубліковані в жовтневому випуску Scientific American 1970 року разом із твердженням: "Без його допомоги деякі відкриття щодо гри було б важко зробити".
Малкольм Банторп написав на BBC BASIC дві ранні реалізації «Life» на домашніх комп'ютерах. Перший був у випуску журналу «Acorn User» за січень
1984 року, а після цього Банторп випустив 3D-версію у травні цього ж року. Сьюзен Стіпні, професор комп’ютерних наук в Йоркському університеті, в
1988 році розробила програму «Життя на лінії», що створила одновимірні клітинні автомати.
Модифікації гри «Життя» можна розрізняти за: розмірністю - на площині, в об’ємі; кольоровістю - однотонна, чорно-біла (шахова), повнокольорова; напрямком алгоритму - прямий, зворотний; константами еволюції - класичні
(B3/S23), змінені; розмірами ігрового поля - обмежене, необмежене, напівобмежене; активністю поля - активне, пасивне; кількістю гравців - zero- game, один, два; активністю гри - пасивна, активна; геометрією поля - прямокутна, шестикутна.
Зараз у мережі є тисячі програм «Життя», тому повний список тут не надається. Нижче подано невеликий перелік програм з особливими претензіями на помітність, наприклад, популярність або незвичайні особливості. Більшість цих програм містять графічний інтерфейс користувача для редагування шаблонів та моделювання, можливість імітації декількох правил та велику бібліотеку цікавих шаблонів.

«Golly» - це багатоплатформова (Windows, Macintosh, Linux, а також iOS і Android) система моделювання з відкритим вихідним кодом для «Життя» та
інших клітинних автоматів написана Ендрю Треворроу і Томасом Рокицьким.
Вона включає в себе алгоритм Hashlife, який може імітувати поведінку дуже

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
12 великих структурованих або повторюваних патернів, а також можливість написання сценаріїв Lua або Python для редагування і моделювання [5]. а) Галактика Кока б) Петлі Ленґтона
Рис. 1.1 - Програма «Golly»

«Mirek's Cellebration» - це безкоштовна програма для перегляду, аналізу та редагування клітинних автоматів 1-D і 2-D для Windows. Вона містить в собі потужні засоби для імітації та перегляду широкого спектра правил клітинних автоматів, включаючи «Життя», та редактора з можливістю написання сценаріїв[5]. а) Версія 4.20 б) Версія 2.0
Рис. 1.2 - Програма «Mirek's Cellebration»

«Xlife» - це лабораторія клітинних автоматів Джона Беннетта.
Стандартний додаток для симуляції UNIX X11, також його було перенесено на
Windows. Він може обробляти правила клітинних автоматів з тією ж околицею, що і «Життя», і може містити до восьми можливих станів на комірку [5].

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
13
Рис. 1.3 - Програма «Xlife»

Також можна додати програми «The Game of Life» та «Life32»:
Рис. 1.4 - Програма «The Game
Рис. 1.5 - Програма «Life32» of Lіfe»
1.3 Технічне завдання на курсову роботу
Введення
Найменування програми: гра «Життя».
Короткий опис області застосування: програмний продукт призначений для роботи в якості додатку. Орієнтований на аудиторію, зацікавлену вивченням роботи клітинних автоматів та їх можливостей, а також для всіх охочих ознайомитись з роботою гри «Життя».
Актуальність: тема клітинних автоматів дуже актуальна, адже може привести до розгадок багатьох питань в різних сферах науки, а розробка такого

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
14 програмного продукту відчутно полегшить процес наукових досліджень в даній області.
Підстава для розробки
Розробка проводиться на основі завдання курсової роботи за спеціальністю
121 «Інженерія програмного забезпечення» Житомирського технологічного коледжу КНУБА.
Тема курсової роботи: «Гра Конвея “Життя”».
Призначення розробки
Функціональним призначенням програмного продукту є надання користувачеві можливості дослідження еволюції клітин в залежності від початкової конфігурації завдяки електронній реалізації гри «Життя».
Технічні вимоги до програмного продукту
Завершений програмний продукт повинен володіти такими функціональними можливостями:

Можливість вибору початкової конфігурації та розміру поля гри;

Можливість зміни стану клітини (жива – мертва) користувачем;

Кнопки управління грою (старт, стоп, крок, рестарт);

Наявність регулятора швидкості;

Наслідування правил гри «Життя»:
організм виживає, якщо має два або три сусіди і помирає в противному разі, новий організм зароджується якщо кількість сусідів рівна трьом.
Основна вимога до інтерфейсу програми - він має бути доступним та зрозумілим для користувача.
Стадії та етапи розробки
Розробка програмного засобу включає наступні етапи:
▪ Аналіз задачі, засобів та методів її вирішення.
▪ Проектування загального алгоритму роботи програми.
▪ Розробка функціональних алгоритмів роботи програми.
▪ Розробка програмного забезпечення.
▪ Тестування програми.

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
15

Завершення та здача роботи.
Висновки до першого розділу
В ході виконання першого розділу були отримані знання про клітинні автомати та гру «Життя», а також проаналізовані програмні продукти з подібним функціоналом та сформовано уявлення про програму, що розробляється.
Отримано теоретичний фундамент для розробки додатку. Були розглянуті різні способи вирішення даної задачі та обраний найдоцільніший з них, визначені необхідні інструменти для розробки ПЗ.

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
16
РОЗДІЛ 2 ПРОЕКТУВАННЯ ТА РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
2.1 Проектування загального алгоритму роботи програми
На даному етапі розробки програми розглянемо загальний алгоритм роботи програми. Загальна схема програми наведена нижче.
Рис. 2.1 - Загальна схема роботи програми
Так
Ні
Завершити гру?
Кінець
Початок
Налаштування параметрів гри
Розпочати гру
Хід гри

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
17
Опис загального алгоритму роботи ПЗ
Програма починає роботу з виклику початкової форми, де користувач задає параметри початкової конфігурації поля і натискає кнопку «Розпочати гру». Після цього відкривається основне вікно. Воно приймає дані з першого і, залежно від цих даних, в графічному елементі вікна з’являється відповідне зображення, що являє собою візуалізацію початкового покоління. Якщо натиснути кнопку «Крок», то поточне покоління зміниться наступним, відповідно до правил гри. При натисканні на «Старт» вмикається таймер, який у свою чергу запускає безперервний виклик функції Krok і покоління змінюються одне за одним з відповідною швидкістю, яку можна регулювати за допомогою спеціального регулятора. Проте кнопка «Стоп», що з’являється після натискання кнопки
«Старт», зупиняє таймер. Кнопка «Очистити» - очищає поле. Останньою кнопкою
є «Рестарт», при натисканні на яку знову викликається початкове вікно.
2.2 Розробка функціональних алгоритмів роботи програми
Розглянемо більш детально деякі функціональні алгоритми програми.
На початку гри потрібно обрати з випадаючих списків початкові параметри поля. Нижче приведено рисунок що зображує можливі варіанти вибору.
Рис. 2.2 - Опис можливих параметрів запуску гри
Налаштування параметрів гри
Вибір початкової конфігурації поля гри
Вибір розміру поля гри
- Пусте поле
- Планерна рушниця госпера
- Хрест
- Галактика Кока
- Рандомне заповнення поля
- 30×30
- 40×40
- 50×50
- 60×60
- 70×70
Розмір клітинок
Визначається автоматично, з урахуванням двох попередніх параметрів
Form1( )
/*Обрані дані передаються до головної форми в якості параметрів*/

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
18
Далі на основі цих даних алгоритм створює поле з відповідним зображенням.
У свою чергу хід гри містить в собі декілька функціональних команд.
Рис. 2.3 - Опис кнопок гри та їх функцій
Більш детально ці та інші методи описані в підпункті 2.3.
Стан клітинки визначається за наступним алгоритмом:
Рис. 2.4 - Алгоритм визначення стану клітинки
Хід гри
Крок
Старт/Стоп
Рестарт
Очистити
Викликає метод Krok( )
Запускає та зупиняє таймер
Application.Restart();
Очищує поле гри
Жива?
Сусіди
Сусіди
«Жива»
«Мертва»
«Мертва»
< 2
> 3
Так
Ні
[2; 3]
Наступна клітина
Наступний етап
«Жива»
«Мертва»
3
!= 3

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
19 2.3 Розробка програмного забезпечення
Даний етап можна умовно поділити на дві частини: розробка візуальної та функціональної частин програми.
Розробка візуальної частини програми
Програма має два вікна: початкове та основне. Початкове вікно оформлене максимально мінімалістично, та містить перелік правил гри та елементи що відповідають за налаштування параметрів поля гри, а саме: два елементи
ComboBox та два елементи TextBox. Перший ComboBox відповідає за вибір початкової конфігурації поля, другий – за розмір поля (якщо для деякої конфігурації розмір поля є незмінним, то ComboBox змінюється на TextBox), останнім елементом є TextBox, що відповідає за вивід на екран розміру клітинок.
Основне вікно має чотири кнопки (Крок, Старт/Стоп, Очистити та Рестарт),
TextBox, в якому знаходиться номер поточного покоління, регулятор швидкості та PictureBox, що являється основним графічним елементом.
Рис. 2.5 - Елементи початкової форми
Label
Button
TexBox
TexBox/
ComboBox
ComboBox

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
20
Рис. 2.6 - Елементи головної форми
Розробка функціональної частини програми
Нижче приведено таблицю яка містить найбільш важливі функції та методи.
Таблиця 2.1 Опис функціональних команд програми.
Код
Опис public void
PererobkaPolya(
string a, string n, string rozm)
{ int
N = 0; if
(n ==
"40x40"
) N = 40; if
(n ==
"50x50"
) N = 50; if
(n ==
"60x60"
) N = 60; if
(n ==
"30x30"
) N = 30; if
(n ==
"70x70"
) N = 70; pole = new bool
[N, N]; if
(rozm ==
"4"
) rozmir = 4; if
(rozm ==
"5"
) rozmir = 5; if
(rozm ==
"6"
) rozmir = 6; if
(rozm ==
"7"
) rozmir = 7; if
(rozm ==
"8"
) rozmir = 8; if
(rozm ==
"14"
) rozmir = 14; if
(rozm ==
"13"
) rozmir =13; if
(rozm ==
"12"
) rozmir = 12; if
(rozm ==
"10"
) rozmir = 10; if
(rozm ==
"11"
) rozmir = 11; if
(rozm ==
"9"
) rozmir = 9;
Цей метод відповідає за початковий вигляд поля: початкову конфігурацію, розмір поля і клітинок.
Button
Label
TrackBar
Timer
PictureBox
TextBox

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
21 if
(a ==
"Хрест"
)
Pole_hrest(); else if
(a ==
"Планерна рушниця Госпера"
)
Pole_Planer(); else if
(a ==
"Рандомне заповнення"
)
Random_pole(pole); else if
(a ==
"Галактика Кока"
)
Galaktuka_Koka(); pictureBox1.Size = new
Size(pole.GetLength(0) * rozmir, pole.GetLength(1) * rozmir);
} private void
PictureBox1_Paint(
object sender,
PaintEventArgs e)
{
Graphics g = e.Graphics;
Brush alive = Brushes.White;
Brush dead = Brushes.Black; for
(
int x=0; x
{ for
(
int y = 0; y < pole.GetLength(1); y++)
{
Brush b; if
(pole[x, y]) b = alive; else b = dead; g.FillRectangle(b, x*rozmir, y*rozmir, rozmir, rozmir);
}
}
}
Відповідає за колір
«живих» та
«мертвих» клітинок private void
Krok()
{ pole = NextGeneration(pole); pictureBox1.Invalidate();
}
Змінює поточне покоління наступним private bool
[,] NextGeneration(
bool
[,] Pole)
{ generation++; textBox1.Text = generation.ToString(); bool
[,] newpole = new bool
[Pole.GetLength(0),
Pole.GetLength(1)]; for
(
int x = 0; x
{ for
(
int y=0; y
Рахує покоління, створює нове поле, яке відображає наступне покоління, відповідно до правил гри. Також зупиняє таймер якщо на полі не

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
22
{ int sysidu = getAliveSysidu(Pole, x, y); if
(Pole[x, y])
{ newpole[x,y]=(sysidu>=2 && sysidu<=3);
} else
{ newpole[x, y] = sysidu == 3;
}
}
} int k_t=0; for
(
int x = 0; x < Pole.GetLength(0); x++)
{ for
(
int y = 0; y < Pole.GetLength(1); y++)
{ if
(newpole[x, y] == true
)
{ k_t++;
}
}
} if
(k_t == 0)
{ timer1.Stop(); button2.Text =
"PLAY"
;
} return newpole;
} лишилось жодної живої клітинки. private int getAliveSysidu(
bool
[,]Pole, int x, int y)
{ int sysidu = 0; int maxX = Pole.GetLength(0); int maxY = Pole.GetLength(1); for
(
int dx=-1; dx<=1; dx++)
{ for
(
int dy = -1; dy <= 1; dy++)
{ int cx = x + dx; int cy = y + dy; if
(cx == x && cy == y) continue
; if
(cx < 0 || cx >= maxX)
Підраховує та повертає кількість
«живих» сусідніх клітинок для кожної клітинки поля

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
23 continue
; if
(cy < 0 || cy >= maxY) continue
; if
(pole[cx, cy]) sysidu++;
}
} return sysidu;
} private void
PictureBox1_MouseDown(
object sender, MouseEventArgs e)
{ int x = e.X / rozmir; int y = e.Y / rozmir; isDrawing = true
; drawColor = !pole[x, y]; pictureBox1.Invalidate();
} private void
PictureBox1_MouseMove(
object sender, MouseEventArgs e)
{ if
(!isDrawing) return
; int x = e.X / rozmir; int y = e.Y / rozmir; if
(x < 0 || x >= pole.GetLength(0)) return
; if
(y < 0 || y >= pole.GetLength(1)) return
; pole[x, y] = drawColor; pictureBox1.Invalidate();
} private void
PictureBox1_MouseUp(
object sender, MouseEventArgs e)
{ isDrawing = false
;
}
Методи, що відповідають за те, що при натисканні на деяку клітинку поля, вона
«оживає» або
«помирає» в залежності від її попереднього стану. private void
Timer1_Tick(
object sender,
EventArgs e)
{
Krok();
}
Безперервний виклик функції
Krok()

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
24
Висновки до другого розділу
В даному розділі курсової роботи було проведено розробку загального і функціонального алгоритмів програми на основі сформованого уявлення про задачі, які повинно вирішувати дане ПЗ та функціонал, який воно повинно містити.
Розроблено загальний алгоритм функціонування роботи програми. При розробці функціонального алгоритму розробили уявлення про методи розробки програмного коду додатку. При розробці інтерфейсної частини було змодельовано два вікна та детально описано їх елементи. На заключному етапі розділу було розроблено програмний код додатку, що розробляється.
В результаті було отримано готовий програмний продукт з потрібною функціональністю, який виконує всі поставлені задачі та вимоги.

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
25
РОЗДІЛ 3 ОПИС РОБОТИ З ПРОГРАМНИМ ДОДАТКОМ ТА ЙОГО
ТЕСТУВАННЯ
3.1 Опис роботи з програмним додатком
При запуску додатку з’являється початкове вікно гри, що містить перелік правил та елементи для налаштування параметрів запуску.
Рис. 3.1 - Початкове вікно гри
У першому полі потрібно обрати з випадаючого списку один з варіантів початкової конфігурації поля гри.
Рис. 3.2 - Перелік шаблонів початкової конфігурації

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
26
Другий елемент управління містить в собі інформацію про розмір поля.
Якщо конфігурація передбачає можливість вибору розміру поля, то елементом управління буде випадаючий список, в противному разі – текстове поле. Третій елемент відображає інформацію про розмір клітинок поля.
Рис. 3.3 - Розмір поля з можливістю вибору
Рис. 3.4 - Розмір поля з можливістю вибору

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
27
Після того як користувач обрав потрібні параметри і натиснув кнопку
«Розпочати гру», з’являється друге, основне, вікно програми. Воно містить головні елементи управління програмою – кнопки «Крок», «Старт/Стоп»,
«Очистити», «Рестарт», текстовий елемент, що відображає номер покоління, а також регулятор швидкості. Але головним елементом є графічне поле, на якому відображається обрана користувачем конфігурація та процес її еволюції.
Рис. 3.5 - Головне вікно гри
При натисканні кнопки «Крок» поточне покоління переходить в наступне і зображення змінюється. а) перше покоління б) друге покоління
Рис. 3.6 - Зміна першого покоління другим
Якщо натиснути кнопку «Старт», то надпис на ній зміниться на «Стоп», а картинка буде безперервно змінюватися.

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
28 а) Надпис «Старт» б) Надпис «Стоп»
Рис. 3.7 – «Старт» змінюється на «Стоп» при натисканні
Кнопка «Очистити» перетворює всі «живі» клітинки в «мертві» і таким чином очищує поле.
Натискання кнопки «рестарт» знову запускає початкове вікно і тим самим дає користувачу можливість обрати інші параметри гри.
Завершити гру і закрити програмне вікно можна за допомогою хрестика в правому верхньому кутку вікна.
3.2 Тестування роботи програмного забезпечення
На поточний час, програмний продукт повністю завершений і необхідно провести повне тестування в реальних умовах, порівняти бажаний результат з отриманим.
Головною задачею курсової роботи було створення гри «Життя». На початку проектування поставало декілька важливих завдань для повноцінної роботи програмного забезпечення (їх можна переглянути в розділі 1.3.). В ході розробки програми усі поставлені завдання були реалізовані.
Як результат, отриманий програмний додаток повністю відповідає вимогам.
Гра має зрозумілий для користувача інтерфейс, потрібні елементи управління та цілком наслідує правила, розроблені Джоном Конвеєм.
Основним недоліком даного ПЗ є відсутність великої бібліотеки шаблонів, а також обмежене за розміром поле гри.

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
29
Висновки до третього розділу
В даному розділі було проведено аналіз вже створеного програмного продукту та виявлено його відповідність до технічного завдання.
Опис роботи з додатком включає в себе розробку текстової та
ілюстраційної частин, які пояснюють принципи роботи з додатком та опис елементів інтерфейсу для його користувачів. При описі було роз’яснено призначення кожного з елементів інтерфейсу усіх наявних у роботі вікон та проілюстровано роботу деяких з них.
При проведенні тестування додаток було запущено на виконання у реальних умовах і він впорався з усіма поставленими йому задачами.

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
30
ВИСНОВКИ
Отже, під час розробки даного програмного забезпечення, було закріплено пройдений матеріал з дисципліни «Об’єктно-орієнтоване програмування», а саме мови С# та її особливостей.
Розробку даної програми можна умовно поділити на 3 основні розділи, кожен з яких містить 2-3 підрозділи. У першому розділі було здійснено аналіз задачі, засобів та методів її вирішення. Також було проведено аналіз аналогів
існуючого програмного забезпечення за тематикою курсової роботи, а саме програм Golly, Mirek's Cellebration, Xlife, The Game of Life та Life32. У другому розділі були розроблені функціональні алгоритми програми, була сконструйована блок-схема загального принципу роботи програми та деяких окремих функціональних частин. Здійснювалося написання коду. На заключному етапі розділу було отримано готовий програмний продукт з потрібною функціональністю, який виконує всі поставлені задачі та вимоги. У третьому розділі було проведено опис роботи з додатком та його тестування. Під час тестування було виявлено відповідність завершеного програмного додатка до технічного завдання, даний продукт повністю відповідає як візуальним, так і функціональним вимогам. Під час користування у користувача не виникає труднощів з роботою програми.
Для реалізації даного програмного продукту було використано програму
Microsoft Visual Studio 2019 та додаток Windows Form. Було створено дві форми: початкову (в ній відбувається налаштування параметрів початкової конфігурації поля гри) та основну (саме в ній ми можемо досліджувати еволюцію обраної конфігурації, вона містить головні елементи управління грою). В програмі були застосовані такі елементи управління, як LABEL, TEXTBOX, BUTTON,
COMBOBOX, PICTUREBOX, TRACKBAR, TIMER.

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
31
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. C# 4.0 полное руководство – Герберт Шилдт – Вильямс, 2011 – 1056 с.
2. Троелсен, Джепикс: Язык программирования C# 7 и платформы .NET и
.NET Core – Вильямс, 2018 – 1328с.
3. Васильев А. Н. Программирование на C# для начинающих. – СПб: Бомбора,
2018 – 582 с.
4. Джозеф Албахарі, Бен Албахарі. C# 6.0. Справочник. Полное описание языка. – Вильямс, 2016 – 1040 с.
5. Павловская Т. А. С#. Программирование на языке высокого уровня.
Учебник для вузов. — СПб: Питер, 2009 — 432 с.
6. Ватсон Б. С# 4.0 на примерах – СПб: БХВ-Петербург, 2011 – 608 с.
7. Руководство по программированию в Windows Forms [Електронний ресурс]
– Режим доступу: https://metanit.com/sharp/windowsforms/
8. Conway's Game of Life [Електронний ресурс] – Режим доступу:
https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life.
9. Игра «Жизнь» — клеточный автомат [Електронний ресурс] – Режим доступу:
http://textarchive.ru/c-2586159-pall.html.
10. Мир, который построил Конуэй [Електронний ресурс] – Режим доступу:
http://beluch.ru/life/conway.htm.
11. Игра «Жизнь» (обзор Гарднера) [Електронний ресурс] – Режим доступу:
https://life.written.ru/game_of_life_review_by_gardner.
12. Игра «Жизнь» и родственные клеточные автоматы, программа Golly
[Електронний ресурс] – Режим доступу: https://www.conwaylife.com
13. Життя
(гра)
[Електронний ресурс]

Режим доступу: https://uk.wikipedia.org/wiki/Життя_(гра)
14. Поиграем в жизнь [Електронний ресурс] – Режим доступу: https://habr.com/ru/post/63848/
15. System.Windows.Forms Пространство имен [Електронний ресурс] – Режим доступу: https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.forms

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
32
ДОДАТКИ

.
Змн. Арк.
№ докум.
Підпис Дата
Арк.
121.12.62.245.38-ПЗ
33
Додаток А
Лістинг програми

скачати

© Усі права захищені
написати до нас