Розробка програми редактору блок-схем. Гра П’ятнашки
Обґрунтування створення програми редактору блок-схем за допомогою альтернативного програмного забезпечення. Шифрування текстів за допомогою багатоалфавітних замін та їх криптоаналіз. Проведення проектування, розробки і тестування програмного продукту.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 09.01.2017 |
Размер файла | 2,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЖИТОМИРСЬКИЙ ТЕХНОЛОГІЧНИЙ КОЛЕДЖ
КИЇВСЬКОГО НАЦІОНАЛЬНОГО УНІВЕРСИТЕТУ БУДІВНИЦТВА І АРХІТЕКТУРИ
Циклова комісія інформаційних технологій
Напрям підготовки 5.050103 "Програмна інженерія"
КУРСОВИЙ ПРОЕКТ (ПОЯСНЮВАЛЬНА ЗАПИСКА)
з дисципліни: "Об'єктно-орієнтоване програмування"
на тему: "Розробка програми редактору блок-схем. Гра П'ятнашки"
Керівник викладач ,
Левківський В.Л.
Житомир
2016
Реферат
Пояснювальна записка до курсового проекту на тему "Розробка програми редактору блок-схем" складається з переліку умовних скорочень, вступу, трьох розділів, висновків, списку використаної літератури та додатку.
Текстова частина викладена на 31 сторінках друкованого тексту.
Пояснювальна записка має 22 сторінок додатків. Список використаних джерел містить 6 найменувань і займає 1 сторінку. В роботі наведено 25 рисунків. Загальний обсяг роботи - 41 сторінок.
У першому розділі було обґрунтувано створення програми редактору блок-схем за допомгою іншого програмного забезпечення.
У другому розділі проведено проектування і розробка програмнго продукту.
У третьому розділі проведено тестування програмнго продукту.
Висновок містить в собі результати виконаної роботи створення програми шифрування текстів за допомогою багатоалфавітних замін та їх криптоаналіз.
У додатку представлений лістинг розробленого програмного продукту.
Ключові слова: ГРА, ГРА П'ЯТНАШКІ, ПРОГРАМА П'ЯТНАШКІ, ДОДАТОК П'ЯТНАШКІ, П'ЯТНАШКІ.
Зміст
Вступ
Розділ 1. Аналіз проблематики, методів та засобів вирішення задачі
1.1 Аналіз задачі, засобів та методів її вирішення
1.2 Аналіз існуючого програмного забезпечення за тематикою курсової роботи
1.3 Технічне завдання на курсову роботу
Розділ 2. Проектування та розробка програмного забезпечення
2.1 Проектування загального алгоритму роботи програми
2.2 Розробка функціональних алгоритмів роботи програми
2.3 Розробка програмного забезпечення
Розділ 3. Опис роботи з програмним додатком та його тестування
3.1 Опис роботи з додатком
3.2 Тестування роботи з програмним забезпеченням
Висновки
Список використаних джерел
Додатки
Вступ
В даній курсовій роботі реалізується гра-додаток для Windows - "Гра п'ятнашкі". Зміст додатку полягає в реалізації гри, прототипом якої стала всім відома гра - П'ятнашкі.
Зміст гри полягає в тому, що числа випадково сортуються на полі. Стандартний розмір поля - 4х4, але можуть бути і доповнення. Числа потрібно розташувати в порядку зростання від 1-го до 15-ти.
При цьому кожен крок гравця буде зараховуватись. Коли гравець розташує всі числа правильно - отримає повідомлення з кількістю здійснених кроків та часом, який був затрачений на проходження даної гри.
При реалізації програми "Гра п'ятнашкі" буде використаний Об'єктно-орієнтований підхід розробки, що дасть змогу унаслідувати вихідний код програми. Це в свою чергу дасть змогу підтримувати та розвивати програмний продукт без безпосереднього впливу на існуючу на даний момент версію додатку, тобто не знищувати те, що вже існує, і при цьому створювати щось абсолютно нове.
Для написання цього програмного продукту обраний фреймворк .NET Framework на базі мови C#. Це дає змогу дуже швидко, просто, та зручно написати програму. Так як .NET Framework дає велику кількість класів, які виконують багато роботи за програміста. Також даний фреймворк є досить надійним. Тобто такі помилки як так звана "утечка памяти", в даному середовищі просто не можлива.
Розділ 1. Аналіз проблематики, методів та засобів вирішення задачі
1.1 Аналіз задачі, засобів та методів її вирішення
Гру в п'ятнашки називають - гра в 15. Гра в 15, п'ятнашки, такенний - популярна головоломка, придумана в 1878 році Ноєм Чепмен. Являє собою набір однакових квадратних кісточок з нанесеними числами, ув'язнених у квадратну коробку. Довжина сторони коробки в чотири рази більше довжини сторони кісточок для набору з 15 елементів, відповідно в коробці залишається незаповненим одне квадратне поле. Мета гри - переміщуючи кісточки по коробці, домогтися упорядкування їх за номерами, бажано зробивши якомога менше рухів.
З 1891 року до самої смерті Семюел Лойд стверджував, що винайшов головоломку саме він, і довгий час вважалося, що це дійсно так. Однак існують докази того, що він не був причетний ні до створення "квача", ні до варіації з переставленими фішками 14 і 15. Пік популярності головоломки в США припав на першу половину 1880 роки; при цьому не було виявлено ніяких згадок Сема Лойда в зв'язку з "плямками" аж до січня 1891 года. Зокрема, The New York Times двічі публікувала матеріали про головоломці, 22 березня 1880 року та 11 червня 1880 року, жодного разу не згадавши при цьому Лойда, незважаючи на те що Лойд жив в Нью-Йорку.
Справжнім винахідником головоломки був Ной Палмер Чепмен, поштмейстер з Канастоті, який ще в 1874 році показував друзям головоломку, що складається з шістнадцяти пронумерованих квадратиків, які треба було скласти в ряди по чотири штуки так, щоб сума чисел в кожному ряду дорівнювала 34.
Син Ноя Чепмена, Френк Чепмен, привіз допрацьовані головоломки в Сіракузи (штат Нью-Йорк) і передав їх Ганні і Джеймсу Бельдій (Anna and James Belden). Вони, в свою чергу, забрали головоломку в Вотч-Хілл (Род-Айленд), де були зроблені копії головоломки; одна з цих копій невідомих в точності шляхом потрапила в Хартфорд, де слухачі Американської школи для слабочуючих почали робити грубі копії головоломки. До 1879 року головоломка вже продавалася не тільки в Хартфорді, а й в Бостоні. Тоді про "п'ятнашки" дізнався художник по дереву Маттіас Райс (Matthias J. Rice). У грудні 1879 Маттіас Райс почав в Бостоні бізнес з виробництва нової головоломки під назвою "Дорогоцінна головоломка" (англ. The Gem Puzzle).
У початку 1880 року якийсь Чарльз Певі, дантист з Вустера, привернув увагу громадськості, запропонувавши грошову винагороду за вирішення завдання збирання головоломки, що додало популярності нової забаві. Навесні того ж року гра досягла Європи.
21 лютого 1880 року Ной Чепмен спробував оформити патент на свій винахід під назвою "Block Solitaire Puzzle" ( "Головоломка-пасьянс з блоками") [20], однак заявка на патент була відхилена; не збереглося записів, що пояснюють, чому це сталося. Мабуть, це було викликано тим, що, на думку патентного інспектора Бурке, нова заявка мало відрізнялася від патенту "Хитрі блоки", "Puzzle-Blocks", виданого Ернесту У. Кінсі (Ernest U. Kinsey) більш ніж за рік до того, як Ной Чепмен подав свою заявку.
6 січня 1880 року в газеті Boston Evening Transcript [en] з'явилося оголошення про головоломці під назвою Boss Puzzle. 12 січня Boston Transcript згадала кілька версій інших виробників, включаючи Gem Puzzle, Solitaire, Fifteen і Number Puzzle. 19 січня в тій же газеті була анонсована головоломка під назвою The New Puzzle; на наступний же день Worcester Gazette розмістила оголошення про головоломці The Boss Puzzle. Популярність головоломки стрімко росла, і підприємці вже почали її виробництво і продаж.
У проміжок часу з 26 по 30 січня Boston Evening Transcript опублікувала оголошення Маттіаса Райса, розсердженого появою копій головоломки. В оголошенні говорилося:
У лютому 1880 року в різних газетах почали з'являтися докладні статті, присвячені головоломці. Ряд журналів національного масштабу, включаючи The Youth's Companion, Illustrated Newspaper, Harper's Weekly, Scientific American, The Independent, протягом декількох тижнів публікували оголошення про головоломці. Новини про головоломці поширювалися в інші міста. До початку березня багато виробників випускали версії головоломки під різними назвами.
12 лютого газета Boston Herald опублікувала поему про головоломці, за якою послідував ряд творів у віршованій формі в інших газетах. 17 лютого в газеті Rochester Democrat and Chronicle була опублікована стаття про вплив головоломки на суспільство. 20 лютого в нью-йоркському журналі Ontario County Journal з'явилася замітка такого змісту:
Ймовірно, Н. П. Чепмен, поштмейстер з Канастоті, протягом найближчих декількох тижнів буде самим проклинати людиною в країні. Він винайшов Гру в 15.
17 березня 1880 року газета Boston Daily Advertiser опублікувала статтю, яка описувала "початок божевілля" в Бостоні три місяці тому (в грудні 1879).
На підставі газетних оголошень і статей автори книги The 15 Puzzle Слокум і Зонневельд роблять висновок, що в більшості міст "безумство" тривало один-два місяці; втім, у багатьох містах головоломка ставала популярною до появи публікацій в місцевих газетах і залишалася популярною навіть тоді, коли публікації припинялися.
У березні 1880 року головоломка почала поширюватися за межами США. До кінця березня вона досягла Канади і Франції. Протягом квітня "безумство" досягло Англії, Німеччини, Латвії, Австрії, Естонії, Норвегії, Швеції, Росії, Фінляндії, в травні - Нової Зеландії, Нідерландів, Італії, Мексики, Данії, Австралії.
25 квітня 1880 року газета St. Petersburg Herold німецькою мовою розмістила оголошення "Neues Spiel - Das Spiel der Funfzehn" ( "Нова гра - Гра в 15").
У головоломці The Gem Puzzle, яку в 1879 році виробляв і продавав Матіас Райс, гравець висипав плитки з коробочки і випадковим чином укладав їх назад, після чого намагався відновити впорядковану конфігурацію:
Помістіть блоки в коробочку безладним чином, потім проведіть, поки вони не вишикуються в правильному порядку.
У цій версії завдання виявлялося нерозв'язною рівно в половині випадків.
В іншій версії все плитки, за винятком 14 і 15, спочатку знаходяться на своїх місцях; завдання полягає в тому, щоб поміняти місцями неправильно стоять плитки 14 і 15. Це завдання нерозв'язна; тим не менш, в цьому випадку можна впорядкувати плитки з порожньою осередком у верхньому лівому кутку або вибудувати фішки стовпцями.
Випущено безліч варіантів головоломки. У деяких варіантах замість упорядкування чисел ставиться мета відновити деяке зображення. Замість чисел можуть використовуватися літери; присутність хоча б двох однакових букв може зробити рішення головоломки нетривіальним завданням.
Можна показати, що рівно половину з усіх можливих 20 922 789 888 000 (= 16!) Початкових положень квача неможливо привести до зібраного увазі: нехай квадратик з числом i розташований до (якщо вважати зліва направо і зверху вниз) k квадратиків з числами меншими i. Будемо вважати n_ {i} = k, тобто якщо після кісточки з i-м числом немає чисел, менших i, то k = 0. Також введемо число e - номер ряду порожній клітини (рахуючи з 1). якщо сума
Якщо допустити поворот коробки на 90 градусів, при якому зображення цифр виявляться лежачими на боці, то можна перевести нерозв'язні комбінації в розв'язні (і навпаки). Таким чином, якщо замість цифр на кісточки нанести точки і не фіксувати положення коробки, то нерозв'язних комбінацій взагалі не виявиться.
"П'ятнашки" різних розмірів з 1960-х років регулярно використовуються в дослідженнях в галузі ШІ; зокрема, на них випробовуються і порівнюються алгоритми пошуку в просторі станів з різними евристичними функціями та іншими оптимізаціями, що впливають на число відвіданих в процесі пошуку конфігурацій головоломки (вершин графа). У дослідженнях так чи інакше використовувалися головоломки розмірів 3 Ч 3, 4 Ч 4, 5 Ч 5, 6 Ч 6 , 2 Ч 7 , 3 Ч 5.
Можна перерахувати основні причини вибору квача як "випробувального стенду" для алгоритмів пошуку:
· простір станів класичних квача є доступним для аналізу, але все ж досить великим, щоб представляти інтерес і використовувати і порівнювати різноманітні евристики;
· не відомий жоден алгоритм, що знаходить найкоротший рішення для узагальнених квача n Ч n за розумний час;
· сама задача пошуку найкоротшого рішення для квача проста для розуміння і програмного маніпулювання; головоломка піддається опису за допомогою невеликого і чітко визначеного набору простих правил;
· для моделювання головоломки не потрібно передачі семантичних тонкощів, властивих більш складним предметних областях;
· завдання з плямками - вдалі представники класу проблем, в яких потрібно знайти найкоротший шлях між двома заданими вершинами неориентированного кінцевого графа;
· розмір графа пошуку залежить від розміру головоломки n експоненціально, хоча будь-який стан можна описати з витратою O (n2) пам'яті;
· одна і та ж евристична функція може застосовуватися до всіх станів, так як всі стани описуються однаково; в реальних застосуваннях різні стани можуть мати різні описи, що вимагає введення декількох евристик;
· використання в дослідженнях ігор і головоломок не породжує фінансових або етичних проблем.
Як алгоритм пошуку може використовуватися алгоритм A *, IDA *, пошук в ширину.
Головоломка 3 Ч 3 легко вирішується будь-яким алгоритмом пошуку. Довільні конфігурації квача 4 Ч 4 вирішуються за допомогою сучасних алгоритмів пошуку за кілька мілісекунд. Для оптимального вирішення головоломки 5 Ч 5 потрібні великі витрати ресурсів навіть із застосуванням сучасних комп'ютерів і алгоритмів; процес пошуку може тривати кілька тижнів і генерувати трильйони вузлів. Оптимальне рішення довільних конфігурацій головоломки 6 Ч 6 до сих пір знаходиться за межами можливостей, в зв'язку з чим в дослідженнях робляться лише спроби передбачити відносну продуктивність алгоритму IDA * з різними евристичними функціями.
Одна з найпростіших евристик для квача може бути виражена таким чином:
Число ходів, необхідних для вирішення, не менш, ніж число плиток, що знаходяться не на своїх місцях.
Вірність затвердження, тобто допустимість евристичної функції "число плиток, що знаходяться не на своїх місцях", випливає з того, що за один хід може бути поставлена на місце тільки одна плитка.
Ця евристика не використовує всю наявну інформацію: наприклад, вона не бере до уваги відстані, на які повинні бути переміщені окремі плитки.
Більш "розумна" евристика зіставляє кожному розташуванню плиток суму відстаней від поточної позиції кожної плитки до її цільової позиції. У літературі ця евристика зустрічається під ім'ям "Манхеттенського відстань" (Manhattan distance).
Допустимість функції випливає з того, що за один хід переміщається тільки одна фішка, і відстань між цією фішкою і її кінцевою позицією змінюється на 1. Проте, ця евристика також не використовує всю наявну інформацію, через те, що в одній позиції не можуть перебувати одночасно дві плитки. Існують більш інформовані варіанти "манхеттенського відстані", такі, як Linear Conflic.
Для швидкого пошуку оптимального рішення головоломки 4 Ч 4, а також для можливості знаходити оптимальне рішення головоломки 5 Ч 5 в розумні терміни, розроблені евристики, засновані на базах даних зразків (pattern databases) .
Подібні евристики є по суті заздалегідь обчисленими і зберігаються в оперативній пам'яті таблицями, в яких закодовані оптимальні рішення для підзадач; кожна з підзадач зводиться до переміщення в цільові позиції певної групи плит. Ці евристики також можуть бути застосовані до кубику Рубіка і іншим головоломок.
Способом або методом вирішення даної задачі є створення гри П'ятнашки для операційної системи Windows. Програмний продукт повинен включати в себе всі необхідні елементи з оригінальної гри, а також зручний інтерфейс.
Інтерфейс гри повинен бути вельми зручним для гравців. Повинен мати таймер відліку, який би рахував за який період часу гравець пройшов гру, або просто скільки вже грає.
Також одним з головних елементів інтерфейсу є - лічильник кроків. Лічильник кроків відображає скільки переміщень вже відбулося.
Вся ця інформація (час гри та кількість кроків) відображається при закінченні гри.
Це дає можливість будувати якісь таблиці переможців, та їх рекорди. Дана можливість в першому випуску програми не буде доступною, але в майбутньому планується.
1.2 Аналіз існуючого програмного забезпечення за тематикою курсової роботи
На сучасному ринку програмного забезпечення існує велика кількість копій цієї гри. В кожній з них є деякі відмінності від оригіналу. Проведемо аналіз існуючих програмних продуктів за даною тематикою:
Флеш гра 15 підлітків
Старі відомі п'ятнашки. Але, хто криється під ними? Збери 15 квадратиків по зростанню і постав новий рекорд!
Рисунок 1.1. Гра 15 підлітків
Флеш гра Смішарики: П'ятнашка
Рисунок 1.2. Гра Смішаріки - Пятнашка
Флеш игра Пятнашки
Цель "классических" пятнашек заключается в том, чтобы расположить фишки в порядке возрастания от 1 до 15.
Рисунок 1.3. Класичні пятнашки
Флеш гра Складний вибір ослика
Гра дуже схожа на популярну головоломку "П'ятнашки". У цій грі вам належить зібрати з перемішаних плиток доріжку, по якій можна буде провести ослика. Для того щоб перемістити плитку з елементом доріжки на вільну ділянку, клікніть по ньому мишею.
Рисунок 1.5. Гра Складний вибір ослика
Китайський аналог гри Пятнашкі - собери залізну дорогу:
Рисунок 1.6. Китайські пятнашкі
На ринку програмних продуктів, а семе - ігор за мотивами пятнашкі дуже багато. Деякий список кращих із них:
Рисунок 1.7. Список ігор №1
Рисунок 1.8. Список ігор №2
1.3 Технічне завдання на курсову роботу
Найменування й область застосування
Програмний продукт під назвою "Гра пятнашкі" взаємно доповнює область програмного забезпечення, напряму зв'язану з діаграмами, та схожими математичними візуалізаціями.
Підстава для розробки
Документ, на підставі якого ведеться розробка: завдання на курсову роботу по дисципліні "Об'єктно-орієнтоване програмування".
В завданні зазначена тема курсового проекту.
Організація, яка затвердила документ - Житомирський Технологічний коледж.
Призначення розробки
Даний програмний продукт це безкоштовна гра, яка створена за прототипом дуже давньої гри - Гра в 15. Розробка даного додатку для Windows призначена для тих користувачів, для яких всі інші версії гри були не достатньо ідеальними. Саме ця гра має вельми простий та функціональний інтерфейс.
Технічні вимоги до програми чи програмного продукту
З вимог до функціональних характеристик можна віднести:
· Програма повинна моделювати та наслідовати функціонал від знаменитої гри - гри в 15.
· Обовязковим критерієм є запис кожного кроку гравця.
· Програма повинна містити таймер, для того щоб можна було відслідити кількість кроків та час, за які гра була пройдена.
· Важливою вимогою є досить велика гнучкість, яка позволяла б переносити програму на накопичувачах, та використовувати в доцільних цілях.
Вимогами до надійності можна відзначити:
· Час відновлення працездатності програми повинен бути мінімальним.
Належними умовами експлуатації є користування програмним продуктом в ОС Windows. За для користування цією програмою не потрібен спеціально навчений персонал.
Технічні засоби:
· оснащені всіма обов'язковими технічними пристроями (монітор, миша, клавіатура), також мінімальним (для сучасного світу) об'ємом оперативної пам'яті - 128мб. А також об'ємом фізичної пам'яті задля збереження тестів та встановлення програми - 20мб.
· Програма повинна бути повністю сумісна з OC Windows.
Вихідний код повинен бути добре оформлений, з коментарями. Програма повинна бути написана на мові C# з використанням .NET Framework. Захист інформації не є обов'язковим.
Спеціальних вимог немає.
Техніко-економічні показники
На сучасному ринку програмного забезпечення існує декілька всім відомих аналогів програми для тестування.
Стадії та етапи розробки
Зміст етапу або стадії |
Срок |
||
Початок |
Кінець |
||
Вибір програмних засобів |
04.10.16 |
21.10.16 |
|
Складання технічного завдання |
23.10.16 |
30.10.16 |
|
Проектування програми |
1.11.16 |
4.11.16 |
|
Складання програми |
6.11.16 |
30.11.16 |
|
Тестування програми |
1.12.16 |
8.12.16 |
|
Оформлення пояснювальної записки |
16.12.16 |
20.12.16 |
Порядок контролю і прийняття
Так як контроль розробки відбувається 2-3 рази на тиждень, робота може бути достроково завершена та прийнята (по бажанню замовника - викладача дисципліни). З іспитів на якість програми можна відокремити:
· тестування звичайним користувачем ПК
· перевірка на функціональність (перемога в грі, поразка в грі, можливість набору великої кількості кроків)
Розділ 2. Проектування та розробка програмного забезпечення
2.1 Проектування загального алгоритму роботи програми
Опис роботи програми
При відкритті програми, перед нами з'являється можливість вибрати розмір ігрового поля (3х3, 4х4, 5х5). Після вибору поля ми потрапляємо на форму самої гри. Коли гравець здійснює якісь рухи - лічильник кроків збільшується.
Коли пятнашкі будуть повністю зкладені, ми отримаємо повідомлення про це, а також кількість кроків, яких для цього потребувалося, та час, за який гравець зумів скласти їх.
На панелі меню є декілька функціональних кнопок - Почати гру, завершити гру, вийти з програми. Також є кнопка яка дозволяє прочитати правила гри (для тих, хто вперше зустрівся з подібною грою).
Також на панелі меню доступні кнопки з інформацією про програмний продукт та про його автора.
2.2 Розробка функціональних алгоритмів роботи програми
2.3 Розробка програмного забезпечення
Розробка програмного забезпечення - гри "П'ятнашкі" розпочинається з вибору моделі життєвого циклу програмного забезпечення. Для даної розробки, на мою думку, найкраще підійде Спіральна модель.
Суттєва особливість спіральної моделі ЖЦ ПЗ полягає в тому, що прикладне ПЗ створюється не відразу, а частково, з використанням методу прототипування. Прототип - це програмний компонент, що реалізує окремі функції і зовнішні інтерфейси ПЗ. Створення прототипів здійснюється кількома ітераціями. Кожна ітерація відповідає створенню фрагмента або версії ПЗ, уточнюються цілі і характеристики проекту, оцінюється якість отриманих результатів і плануються роботи наступної ітерації. На кожній ітерації виробляється ретельна оцінка ризику перевищення термінів і вартості проекту, щоб визначити необхідність виконання ще однієї ітерації, ступінь повноти і точності розуміння вимог до системи, а також доцільність припинення проекту. Спіральна модель позбавляє користувачів і розробників ПЗ від необхідності повного й точного формулювання вимог до системи на початковій стадії, оскільки вони уточнюються на кожній ітерації. У такий спосіб уточнюються і послідовно конкретизуються деталі проекту і зрештою вибирається обґрунтований варіант, який і реалізується.
Ітераційний процес розроблення відображає об'єктивно спіральний цикл створення системи. Неповне завершення робіт на кожній стадії дає змогу переходити на наступну стадію, не чекаючи повного завершення роботи на поточній. При ітеративному способі розроблення відсутню стадію можна буде виконати на наступній ітерації. Головне завдання - якнайшвидше показати користувачам системи працездатний продукт, активізуючи процес уточнення і доповнення вимог.
Спіральна модель не виключає використання каскадного підходу на кінцевих стадіях проекту в тих випадках, коли вимоги до системи стають цілком чіткими.
Основна проблема спірального циклу - визначення моменту переходу на наступну стадію. Для її вирішення необхідно ввести часові обмеження на кожну зі стадій життєвого циклу.
Перехід здійснюється відповідно до плану, навіть якщо не вся запланована робота закінчена. План складається на основі статистичних даних, отриманих у попередніх проектах, і особистого досвіду розробників.
Створення безпосереднь програми почалося з етапу прототипіювання:
Рисунок 2.1. Прототип головного вікна гри
Функція, яка відповідає за розміщення на полі програмним способом клітинок -
Рисунок 2.2. Функція розположення клітинок
Рисунок 2.3. Функція розміщення клітинок №2
Рисунок 2.4. Функція розміщення клітинок №3
Дана функція користується масивом кнопок btn[,], які є полями класу.
На мою думку, для тесту даної гри пішло б дуже багато часу. Тому я вирішив додати спеціально кнопку, за допомогою якої всі клітинки на полі гри розташовувалися б по порядку. Саме це нам і потрібно для того зоб перемогти.
Рисунок 2.5. Реалізація кнопки для тестової перемоги
Функція, яки визначає, переміг гравець, чи ні, виглядає наступним чином:
Рисунок 2.6. Функція для перевірки на кінець гри
Логікою програми обумовлено, що перевірка на перемогу повинна бути проведена з якоюсь певною частотою. Тому був створений таймер, за допомогою якого і реалізовані наступні можливості:
Рисунок 2.7. Перевірка на перемогу в таймері
Також був доданий ще один таймер, який відповідає за годинник, який відліковує кількість часу, який гравець витратив на гру.
Рисунок 2.8. Таймер 2
Так як даний програмний продукт повинен бути досить гнучким в використанні, також створена функція, яка дозволяє закінчити гру достроково, щоб потім розпочати нову.
Дана можливість реалізована без перезапуску гри, наступною функцією:
Рисунок 2.9. Функція для закінчення гри
В процесі гри, головне поле виглядає наступним чином:
Рисунок 2.10. Гра в дії
Розділ 3. Опис роботи з програмним додатком та його тестування
3.1 Опис роботи з додатком
При відкритті програмного продукту, перед нами з'являється головне вікно програми, яке не містить нічого зайвого.
Рисунок 3.1. Головне вікно програми
Для тесту виберимо розмір поля 5х5. Ось так виглядає гра в дії:
Рисунок 3.2. Гра в дії
Можливість дострокової перемоги, що надає зручний спосіб тестування перемоги вигоядає наступним чином:
Рисунок 3.3. Перемога для тестування
Справка містить наступні поля:
Рисунок 3.4. Справка
Рисунок 3.5. Про програму
Рисунок 3.6. Про розробника
Правила гри, в справці, дають можливість неознайомленим гравцям також зіграти в дану гру, без спеціальних навочик. Тільки прочитавши наступне:
Рисунок 3.7. Правила гри
Іконка даного додатку має досить приємний вигляд
Рисунок 3.8. Іконка
3.2 Тестування роботи з програмним забезпеченням
Розробка програми велася за спіральною моделлю Життєвого циклу програмного забезпечення. А це означає що тестування велося після кожного доданого об'єкту функціоналу.
Тестування проводилося тестувальщиками-початківцями, які надали свої послуги за оплату.
Програма тестувалася по декілька разів. Таких помилок як "Утечка памяти" бути не може, тому що при розробці використовувася .NET Framework на базі мови C#, який в свою чергу є досить безпечним фреймворком.
Вразливих місць в даному програмному продукті немає.
Тестування корегованою перемогою дає можливість зрозуміти, що все працює так як повинно.
Рисунок 3.1. Тестування перемоги
Висновки
При виконанні курсового проекту в першому розділі було проаналізовано поставлене завдання. На основі первинного аналізу визначено схему подальшої розробки програмного додатку.
Виконано порівняльний аналіз програм аналогічного призначення, визначено їх сильні та слабкі сторони, визначено основні виконувані та найбільш необхідні функції.
Визначено схему створюваного програмного забезпечення - організацію пакету програм, схему їх взаємодії, основний та додатковий функціонал програми.
В другому розділі курсового проекту проведено розробку загального і функціонального алгоритмів програм.
Розроблено загальний алгоритм функціонування програми, в якому розбили проектований програмний додаток на складові частини. При розробці функціонального алгоритму розробили уявлення про методи розробки програмного коду додатку. Розробили візуальну складову програми - інтерфейс взаємодії з користувачем. Перейшли до написання програмного коду, та відпрацювання реакції на дії користувача. Обробили помилки.
В останньому розділі курсового проекту було описано методологію користування створеним програмним продуктом та проведено тестування.
В результаті тестування програми на деякому комп'ютері отримали висновок - програма працює точно і безвідмовно.
В результаті отримали готовий програмний продукт з потрібною функціональністю, який виконує всі поставлені вимоги та задачі.
Список використаних джерел
Для написання програмного коду та вивчення предметної області були використані наступні джерела:
А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд - Язык программирования C#. Классика Computers Science. 4-е изд.
Дж. Рихтер - CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#. 4-е изд.
Дж. Ликнесс - Приложения для Windows 8 на C# и XAML
Ч. Петцольд - Программирование для Microsoft Windows 8. 6-е изд.
Э. Стиллмен, Дж. Грин - Head First. Изучаем C#. 3-е изд.
Сеть разработчиков Microsoft ------ https://msdn.microsoft.com/ru-ru/
Матеріал з вільної енциклопедії ---------
https://uk.wikipedia.org/wiki/Гра_Пятнашкі
Додатки
Лістинг вихідного коду програми
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Пятнашки
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.SelectedIndex = 1;
}
bool game = false;
Button[,] btn;
private void refresh(int[,] arr, int n)
{
int count = n;
Random rand = new Random();
for (int i = 0; i < 200; ++i)
{
int x = rand.Next(count);
int y = rand.Next(count);
int x2 = rand.Next(count);
int y2 = rand.Next(count);
int temp = arr[x, y];
arr[x, y] = arr[x2, y2];
arr[x2, y2] = temp;
}
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
if (arr[i, j] == n * n)
{
arr[i, j] = arr[n - 1, n - 1];
return;
}
}
}
}
int xEnabled = 0;
int yEnabled = 0;
private void Drawing(int n)
{
N = n;
btn = new Button[n, n];
int s = 1;
int[,] mass = new int[n, n];
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
mass[i, j] = s++;
refresh(mass, n);
int x = 20;
int y = 40;
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
btn[i, j] = new Button();
btn[i, j].Size = new Size(50, 50);
btn[i, j].Location = new Point(x, y);
btn[i, j].Tag = new Tuple<int, int>(i, j);
btn[i, j].Click += Form1_Click;
btn[i, j].BackColor = Color.White;
//
btn[i, j].Text = mass[i, j].ToString();
//
btn[i, j].FlatAppearance.BorderSize = 0;
btn[i, j].FlatStyle = FlatStyle.Flat;
//
this.Controls.Add(btn[i, j]);
btn[i, j].Font = new System.Drawing.Font("Microsoft Sans Serif", 14, System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point, ((byte)(204)));
x += 55;
}
x = 20;
y += 55;
}
btn[n - 1, n - 1].Enabled = false;
btn[n - 1, n - 1].Text = "";
xEnabled = n - 1;
yEnabled = n - 1;
//_____________________________
Height = (n + 1) * 55 + 40;
Width = (n + 1) * 55 + 120;
lblTime = new Label();
lblTime.Location = new Point(55 * n + 50, 40);
lblTime.Text = "0:00";
lblTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 14, System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point, ((byte)(204)));
Controls.Add(lblTime);
lblSteps = new Label();
lblSteps.Location = new Point(55 * n + 30, 70);
lblSteps.Text = "Steps: " + steps;
lblSteps.Font = new System.Drawing.Font("Microsoft Sans Serif", 12, System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point, ((byte)(204)));
Controls.Add(lblSteps);
}
int N = 0;
Label lblTime;
Label lblSteps;
private void Form1_Click(object sender, EventArgs e)
{
var tuple = (sender as Button).Tag as Tuple<int, int>;
try
{
if (tuple.Item1 + 1 == yEnabled)
if (tuple.Item2 == xEnabled)
{
btn[yEnabled, xEnabled].Enabled = true;
btn[yEnabled, xEnabled].Text = btn[tuple.Item1, tuple.Item2].Text;
btn[tuple.Item1, tuple.Item2].Enabled = false;
btn[tuple.Item1, tuple.Item2].Text = "";
yEnabled = tuple.Item1;
xEnabled = tuple.Item2;
steps++;
}
if (tuple.Item1 == yEnabled)
if (tuple.Item2 + 1 == xEnabled)
{
btn[yEnabled, xEnabled].Enabled = true;
btn[yEnabled, xEnabled].Text = btn[tuple.Item1, tuple.Item2].Text;
btn[tuple.Item1, tuple.Item2].Enabled = false;
btn[tuple.Item1, tuple.Item2].Text = "";
yEnabled = tuple.Item1;
xEnabled = tuple.Item2;
steps++;
}
if (tuple.Item1 - 1 == yEnabled)
if (tuple.Item2 == xEnabled)
{
btn[yEnabled, xEnabled].Enabled = true;
btn[yEnabled, xEnabled].Text = btn[tuple.Item1, tuple.Item2].Text;
btn[tuple.Item1, tuple.Item2].Enabled = false;
btn[tuple.Item1, tuple.Item2].Text = "";
yEnabled = tuple.Item1;
xEnabled = tuple.Item2;
steps++;
}
if (tuple.Item1 == yEnabled)
if (tuple.Item2 - 1 == xEnabled)
{
btn[yEnabled, xEnabled].Enabled = true;
btn[yEnabled, xEnabled].Text = btn[tuple.Item1, tuple.Item2].Text;
btn[tuple.Item1, tuple.Item2].Enabled = false;
btn[tuple.Item1, tuple.Item2].Text = "";
yEnabled = tuple.Item1;
xEnabled = tuple.Item2;
steps++;
}
}
catch
{
}
}
private void button1_Click(object sender, EventArgs e)
{
startGame();
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
int minutes = 0;
int seconds = 0;
int steps = 0;
private void timer1_Tick(object sender, EventArgs e)
{
seconds++;
if (seconds == 60)
{
minutes += 1;
seconds = 0;
}
if (seconds < 10)
{
lblTime.Text = minutes + ":0" + seconds;
}
else
{
lblTime.Text = minutes + ":" + seconds;
}
}
private void startGame()
{
game = true;
timer1.Start();
timer2.Start();
panel1.Hide();
Drawing(Convert.ToInt32(comboBox1.Text.First().ToString()));
}
private void начатьToolStripMenuItem_Click(object sender, EventArgs e)
{
if (!game)
startGame();
}
bool end = false;
private void proverka()
{
int num = 1;
int pravilno = 0;
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
{
if (btn[i, j].Text == (num++).ToString())
{
pravilno++;
}
}
}
if (pravilno == N * N - 1)
end = true;
else end = false;
}
private void правилаИгрыToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Необходимо расставить цифры в следующем порядке:\n1\t2\t3\t4\n5\t6\t7\t8\n9\t10\t11\t12\n13\t14\t15\t_");
}
private void button2_Click(object sender, EventArgs e)
{
if (!game) return;
int num = 1;
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
{
if (num == N * N) break;
btn[i, j].Text = (num++).ToString();
btn[i, j].Enabled = true;
}
}
btn[N - 1, N - 1].Text = "";
btn[N - 1, N - 1].Enabled = false;
}
private void timer2_Tick(object sender, EventArgs e)
{
lblSteps.Text = "Steps: " + steps;
proverka();
if (end)
{
timer1.Stop();
timer2.Stop();
if (seconds < 10)
{
if (minutes < 10)
MessageBox.Show("Вы победили! За \'0" + minutes + ":0" + seconds + "\' , и за " + steps + " шагов!");
else MessageBox.Show("Вы победили! За \'" + minutes + ":0" + seconds + "\' , и за " + steps + " шагов!");
}
else if (minutes < 10) MessageBox.Show("Вы победили! За \'0" + minutes + ":" + seconds + "\' , и за " + steps + " шагов!");
else MessageBox.Show("Вы победили! За \'" + minutes + ":" + seconds + "\' , и за " + steps + " шагов!");
minutes = 0;
seconds = 0;
steps = 0;
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
{
btn[i, j].Dispose();
}
}
lblSteps.Dispose();
lblTime.Dispose();
Refresh();
panel1.Show();
game = false;
}
}
private void закончитьИгруToolStripMenuItem_Click(object sender, EventArgs e)
{
if (!game) return;
game = false;
timer1.Stop();
timer2.Stop();
minutes = 0;
seconds = 0;
steps = 0;
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
{
btn[i, j].Dispose();
}
}
lblSteps.Dispose();
lblTime.Dispose();
Refresh();
panel1.Show();
}
private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Программа \'Игра пятнашки\' разработана в качестве курсового проекта с дисциплины \'Объектно ориентированное программирование\'", "О программе", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void оРазработчикеToolStripMenuItem_Click(object sender, EventArgs e) програмний шифрування багатоалфавітний криптоаналіз
{
MessageBox.Show("Разработчик игры \'Пятнашки\' - Любченко В. - студент 3-го курса ЖТК КНУБА", "О программе", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Пятнашки
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
namespace Пятнашки
{
partial class Form1
{
/// <summary>
/// Обязательная переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Требуемый метод для поддержки конструктора -- не изменяйте
/// содержимое этого метода с помощью редактора кода.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.менюToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.начатьToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.закончитьИгруToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.выходToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.спарвкаToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.правилаИгрыToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.оПрограммеToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.оРазработчикеToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.button2 = new System.Windows.Forms.Button();
this.timer2 = new System.Windows.Forms.Timer(this.components);
this.button1 = new System.Windows.Forms.Button();
this.menuStrip1.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.менюToolStripMenuItem,
this.спарвкаToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(396, 24);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// менюToolStripMenuItem
//
this.менюToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.начатьToolStripMenuItem,
this.закончитьИгруToolStripMenuItem,
this.toolStripSeparator1,
this.выходToolStripMenuItem});
this.менюToolStripMenuItem.Name = "менюToolStripMenuItem";
this.менюToolStripMenuItem.Size = new System.Drawing.Size(53, 20);
this.менюToolStripMenuItem.Text = "Меню";
//
// начатьToolStripMenuItem
//
this.начатьToolStripMenuItem.Name = "начатьToolStripMenuItem";
this.начатьToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.начатьToolStripMenuItem.Text = "Начать игру";
this.начатьToolStripMenuItem.Click += new System.EventHandler(this.начатьToolStripMenuItem_Click);
//
// закончитьИгруToolStripMenuItem
//
this.закончитьИгруToolStripMenuItem.Name = "закончитьИгруToolStripMenuItem";
this.закончитьИгруToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.закончитьИгруToolStripMenuItem.Text = "Закончить игру";
this.закончитьИгруToolStripMenuItem.Click += new System.EventHandler(this.закончитьИгруToolStripMenuItem_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(157, 6);
//
// выходToolStripMenuItem
//
this.выходToolStripMenuItem.Name = "выходToolStripMenuItem";
this.выходToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.выходToolStripMenuItem.Text = "Выход";
this.выходToolStripMenuItem.Click += new System.EventHandler(this.выходToolStripMenuItem_Click);
//
// спарвкаToolStripMenuItem
//
this.спарвкаToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.правилаИгрыToolStripMenuItem,
this.toolStripSeparator2,
this.оПрограммеToolStripMenuItem,
this.оРазработчикеToolStripMenuItem});
this.спарвкаToolStripMenuItem.Name = "спарвкаToolStripMenuItem";
this.спарвкаToolStripMenuItem.Size = new System.Drawing.Size(65, 20);
this.спарвкаToolStripMenuItem.Text = "Справка";
//
// правилаИгрыToolStripMenuItem
//
this.правилаИгрыToolStripMenuItem.Name = "правилаИгрыToolStripMenuItem";
this.правилаИгрыToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
this.правилаИгрыToolStripMenuItem.Text = "Правила игры";
this.правилаИгрыToolStripMenuItem.Click += new System.EventHandler(this.правилаИгрыToolStripMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(159, 6);
//
// оПрограммеToolStripMenuItem
//
this.оПрограммеToolStripMenuItem.Name = "оПрограммеToolStripMenuItem";
this.оПрограммеToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
this.оПрограммеToolStripMenuItem.Text = "О программе ";
this.оПрограммеToolStripMenuItem.Click += new System.EventHandler(this.оПрограммеToolStripMenuItem_Click);
//
// оРазработчикеToolStripMenuItem
//
this.оРазработчикеToolStripMenuItem.Name = "оРазработчикеToolStripMenuItem";
this.оРазработчикеToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
this.оРазработчикеToolStripMenuItem.Text = "О разработчике";
this.оРазработчикеToolStripMenuItem.Click += new System.EventHandler(this.оРазработчикеToolStripMenuItem_Click);
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
"3x3",
"4x4",
"5x5"});
this.comboBox1.Location = new System.Drawing.Point(171, 9);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(76, 24);
this.comboBox1.TabIndex = 4;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.label1.Location = new System.Drawing.Point(3, 10);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(162, 16);
this.label1.TabIndex = 3;
this.label1.Text = "Выберите размер поля:";
//
// panel1
//
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.button1);
this.panel1.Controls.Add(this.comboBox1);
this.panel1.Location = new System.Drawing.Point(67, 27);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(250, 70);
this.panel1.TabIndex = 6;
//
// timer1
//
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// button2
//
this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.button2.Location = new System.Drawing.Point(222, 0);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(174, 24);
this.button2.TabIndex = 7;
this.button2.Text = "Победить (для тестирования)";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// timer2
//
this.timer2.Tick += new System.EventHandler(this.timer2_Tick);
//
// button1
//
this.button1.Location = new System.Drawing.Point(45, 42);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(103, 23);
this.button1.TabIndex = 5;
this.button1.Text = "Начать игру";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.PowderBlue;
this.ClientSize = new System.Drawing.Size(396, 104);
this.Controls.Add(this.button2);
this.Controls.Add(this.panel1);
this.Controls.Add(this.menuStrip1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.MaximizeBox = false;
this.Name = "Form1";
this.Text = "Пятнашки";
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
#endregion
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem менюToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem начатьToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripMenuItem выходToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem спарвкаToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem оПрограммеToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem оРазработчикеToolStripMenuItem;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.ToolStripMenuItem правилаИгрыToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Timer timer2;
private System.Windows.Forms.ToolStripMenuItem закончитьИгруToolStripMenuItem;
private System.Windows.Forms.Button button1; }
Размещено на Allbest.ru
...Подобные документы
Огляд існуючих методів розробки компіляторів, детальний опис мови. Характеристика та специфіка процесу розробки програми компілятора на рівні блок-схем і тексту програми. Подання тексту компілятора, а також результатів тестування розробленої програми.
курсовая работа [510,2 K], добавлен 03.06.2011Історія виникнення та розвиток методів шифрування. Особливості розробки програми, що виконує шифрування за допомогою доповнювального модуля, який надає доступ до самої програми. Вибір ефективного методу шифрування даних. Розробка відповідного інтерфейсу.
курсовая работа [1,9 M], добавлен 21.07.2011Програма автотестування (POST). Призначення діагностичного програмного забезпечення, категорії програм діагностики. Використання утилітів пошуку несправностей, неполадок і оптимізації. Проведення тестування комп’ютера за допомогою програми CHECKІT.
лабораторная работа [13,6 K], добавлен 03.10.2010Аналіз технічного забезпечення, вибір інструментального програмного забезпечення та середовища розробки програм. Створення класів для реалізації необхідних функцій для роботи програмного засобу. Розробка інтерфейсу для користувача та лістинг програми.
курсовая работа [343,9 K], добавлен 24.08.2012Вибір і обґрунтування інструментальних засобів. Проектування блок-схем алгоритмів та їх оптимізація. Розробка вихідних текстів програмного забезпечення. Інструкція до проектованої системи. Алгоритм базової стратегії пошуку вузлів та оцінки якості.
дипломная работа [2,8 M], добавлен 05.12.2014Визначення та застосування фракталів. Огляд предметної області, вибір засобів розробки програмного забезпеченя. Побудова діаграми варіантів використання, послідовності дій, класів та компонентів, математичної моделі. Тестування програмного продукту.
дипломная работа [1,9 M], добавлен 24.05.2015Проектування і реалізація навчального програмного продукту "Побудова геометричних фігур". Використання C++ Builder 6 у якості програмного середовища для реалізації даної навчальної програми. Інструкція з використання розробленого програмного забезпечення.
курсовая работа [2,2 M], добавлен 05.05.2014Характеристика об’єкта автоматизації, вимоги до системи, склад та зміст системи. Розробка функціональної схеми програмного продукту. Тестування підпрограми програмного продукту. Розробка бази даних та налаштування ECO компонент в Borland Developer Studio.
практическая работа [1,8 M], добавлен 05.06.2014Інструменти середовища C++Builder, які були використані в програмі. Робота з файлами, їх відкриття, відображення та закриття. Розробка основних функцій для реалізації програми. Тестування програмного забезпечення. Блок-схема та алгоритм програми.
курсовая работа [924,3 K], добавлен 14.01.2014Тестування програмного забезпечення як процес його дослідження для отримання інформації про якість. Автоматизація тестування програми Join It - Jigsaw Puzzle. Методика тестування, структура пакету та його модулів. Вимоги до програмного забезпечення.
дипломная работа [2,4 M], добавлен 24.07.2013Основні розрахунки резисторів мікросхеми. Розробка алгоритму рішення задачі методом блок-схем. Характеристика та розробка програми на мові С++ з використанням принципів модульного і структурного програмування. План тестування і налагоджування програми.
курсовая работа [2,9 M], добавлен 05.12.2012Дослідження алгоритму роботи та коду програми. Оцінка методом "чорного ящика". Тестування і налагодження розробленої програми на алгоритмічній мові високого рівня. Оцінювання якості програмного забезпечення за об’єктно-орієнтованими метриками зв’язності.
курсовая работа [143,1 K], добавлен 11.03.2021Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.
курсовая работа [3,4 M], добавлен 17.11.2014Побудова блок-схем алгоритмів програм. Створення блок схем алгоритмів за допомогою FCEditor. Експорт блок-схеми в графічний файл. Огляд програмних та апаратних засобів. Мови програмування високого рівня. Цикли та умовний оператор IF з лічильником.
дипломная работа [1,4 M], добавлен 15.12.2013Формування електронного реєстру та презентація обліку зайнятості населення. Основні завдання обліку зайнятості (біржі праці). Обґрунтування доцільності створення програмного модуля. Вимоги до програмного продукту. Тестування програмного продукту.
курсовая работа [399,7 K], добавлен 30.04.2016Аналіз програмного забезпечення для проведення тестування в комп’ютерному класі. УТК (Універсальний тестовий комплекс). Асистент 2. OPEN TEST. Порівняння програм для тестування. Організація інтерактивного тестування за допомогою програми OPEN TEST.
реферат [30,3 K], добавлен 19.09.2008Опис методів і алгоритмів вирішення задачі в середовищі розробки Myeclipse. Основні функції програмного продукту, його структура. Розробка алгоритму та програми, інструкція користувачу. Результати тестування, лістинг основних блоків. Вікно головного меню.
курсовая работа [1,8 M], добавлен 24.02.2014Характеристика видів крипто-аналітичних атак. Особливості симетричних та асиметричних систем шифрування. Розробка програми, призначеної для криптографічного дешифрування повідомлення методом гамування за допомогою лінійного рекурентного регістру.
курсовая работа [171,4 K], добавлен 25.08.2014Проектування універсальної контролюючої програми для перевірки концентрації уваги учнями. Дослідження програмного середовища Borland Delphi 7 для створення програми. Вивчення етапів розробки програмних продуктів. Тестування програми на працездатність.
курсовая работа [913,0 K], добавлен 05.03.2015Розробка програми калькулятора, що може виконувати найголовніші арифметичні операції над двома числами. Вимоги до апаратного і програмного забезпечення. Опис форм та компонентів програми. Розробка алгоритмів програмного забезпечення. Опис коду програми.
курсовая работа [57,1 K], добавлен 31.05.2013