Створення ігрової програми "Морський бій"

Історія та правила гри "Морський бій". Огляд існуючих аналогів онлайн-ігор. Створення програмного забезпечення з урахуванням вимог і побажань користувача. Принципи розробки користувальницького інтерфейсу. Аналіз проектування моделей елементів гри.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 03.12.2018
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД

«КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ

ІМЕНІ ВАДИМА ГЕТЬМАНА»

КРИВОРІЗЬКИЙ ЕКОНОМІЧНИЙ ІНСТИТУТ

КУРСОВА РОБОТА

з дисципліни «Основи програмування на Python»

на тему: «Морський бій»

Студентки

Трофімової Олени Андріївни

Науковий керівник:

Дубан Р.М.

м. Кривий Ріг - 2018 рік

ЗМІСТ

ВСТУП

РОЗДІЛ 1. ДОСЛІДЖЕННЯ ПРЕДМЕТНОЇ ОБЛАСТІ

1.1 Історія та правила гри

1.2 Огляд існуючих аналогів

1.3 Постановка задачі

РОЗДІЛ 2. ПРОЕКТУВАННЯ ГРИ

2.1 Розробка інтерфейсу

2.2 Проектування моделей елементів гри

2.3 Розробка алгоритмів

РОЗДІЛ 3. РЕАЛІЗАЦИЯ ГРИ

3.1 Реалізація інтерфейсу

3.2 Реалізація алгоритмів

3.3 Тестування гри

ВИСНОВОК

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

ВСТУП

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

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

У даній курсовій роботі мова піде про створення ігрової програми «Морський бій», яка і буде об'єктом дослідження.

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

Наочна область даного проекту - гра «Морський бій». Вона реалізується за допомогою натиснень на клавіші миші (розміщення кораблів і постріли по кораблях противника, вдалі попадання фіксуються хрестиком)

РОЗДІЛ 1. ДОСЛІДЖЕННЯ ПРЕДМЕТНОЇ ОБЛАСТІ

1.1 Історія та правила гри

«Морський бій» -- гра для двох учасників, у якій гравці по черзі називають координати на невідомій їм карті суперника. Якщо у суперника в тому місці є корабель (координати зайняті), то корабель або його частина «тоне», а той, хто влучив, здобуває право зробити ще один хід. Мета гравця -- першим потопити всі кораблі супротивника.

Гру вперше випустила у вигляді настільної гри компанія Milton Bradley Company 1931 року.

Варіанти гри в «Морський бій»

Коли гра в потоплення кораблів тільки з'явилася, то варіант здійснення битви мав єдиний екземпляр - «Морський бій», розкреслений на папері. Відтепер для фанатів ненудного розваги з'явилася відмінна перспектива провести бій за допомогою комп'ютера або придбати настільну версію. Отже, як грають у «Морський бій», які види гри існують?

На папері:

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

Правила морського бою на папері дуже прості. На аркуші чертится два однакових квадрата (10 на 10 клітин) - перший для своєї флотилії, а на другому будемо шукати кораблі суперника. Кожен гравець «скидає бомбу» на ворожий корабель по черзі. Будь-яке попадання відзначається зарисованным квадратиком, промах - точкою. Виграти вдається тому гравцю, який першим потопив всі ворожі судна.

Настільна:

Самий перший настільний «Морський бій» з'явився більше 80 років тому.

кораблів цієї гри вже була об'ємною, гарно прикрашеному.

Рис 1.1. Настільна гра «Морський Бій»

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

один лінкор (на 4 клітини): найчастіше він виявляється швидко, тому що цей корабель найбільший з наявних в наборі судів;

два крейсера або два підводних човни (середніх габаритів, клітини 3):

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

3-4 есмінця (2 клітини): такі кораблі мають можливість довго ховатися від пострілів опонента, їх важко відшукати, особливо на останніх хвилинах бою.

На комп'ютері:

З'явилася прекрасна перспектива грати з комп'ютером в морський бій або завантажити гру на телефон, планшет і схожі пристрої.

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

Приміром, онлайн-гра ммо321 морський бій користується високою популярністю серед любителів боїв на воді.

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

Класичні правила гри «Морський бій»

Умови ведення бою можуть різнитися, що залежить від типу розваги. Як правильно грати в морський бій? Класичні правила гри існують і донині. Їм слідують віддані фанати по всьому світу.

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

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

Розстановка кораблів

У відповідності зі стандартною версією гри, кількість кораблів - 10 штук. Розстановка виглядає наступним чином:

1 чотирипалубних корабель (4 клітинки);

2 трьохпалубний судна (3 клітин);

3 корабля, що складаються з 2 клітин (двопалубні);

4 судна по 1 клітці (однопалубники).

На момент розташування кораблів на ігровому полі, варто пам'ятати про декілька важливих моментів:

намалювати суду на картинці дозволяється так, щоб вони не торкалися один до одного бортами;

між кораблями повинна бути одна вільна клітинка мінімум;

ігрові одиниці флоту мають виключно вертикально чи горизонтально;

намальовані суду можуть торкатися країв поля.

Початок гри

Перед тим як починати грати в морський бій, необхідно розмістити свої кораблі

по заздалегідь намальованому полю (10 на 10 квадратів). «Стінка» по вертикалі

пронумеровується від 1 до 10, горизонталь позначається буквами алфавіту

(російського, латинського, якого зручно).

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

Хід гри

Продовження полягає в самій битві. Гравець, який ходить першим, називає передбачувані координати ворожого судна: «Б3», «Г7», «І4» і так далі. Якщо озвучена клітина є кораблем (1 клітина) або його частиною, то суперник відповідає «потоплений» або «поранений».

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

Виграшна стратегія і тактика

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

Найпростіше і основне правило - листок з накресленим флотом ва тримати таким способом, щоб суперник не мав жодних шансів підглядати.рто завжди

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

Не рекомендується малювати суду по кутах ігрового квадрата, тому що суперники-новачки часто скидають бомби» точно в ці місця.

Ветерани морських битв радять спочатку придумати стратегію для розташування судів на полі. Відмінних результатів добиваються гравці, розставляють одиниці флотилії нерівномірно. Наприклад, зберіть трьох - і четырехпалубные кораблі в одну групу, а маленькі суду (однопалубники) заховати. Завдяки такому стратегічному рішенню, опонент відразу розіб'є групу великих судів, а ось пошуки «малюків» займуть у нього чимало часу.

Як було сказано раніше, потоплений корабель, відзначається по колу точками. Тому, супротивник, який убив ваше судно з 4 клітин, відкриває за раз 18 клітин (18 відсотків поля), потоплення кораблів з трьох клітин розсекретить 15 ігрових клітин, двопалубного судна - 12 відсотків, однопалубного - 9 квадратів. Прорисовуючи великий корабель до стінки поля, відкриється 12 квадратів, а якщо в кут, то 10 клітин. Краще застосовувати цей хід разом з пунктом 5, щоб опонент не здогадався про встановлення судів по краю.

Тактичні прийоми стрільби по флотилії ворога бувають різними. Основний спосіб знищення ворожого флоту - відразу винищити судно з 4 клітин. Пошуки краще почати зі стрільби по діагоналях поля, «бомбити» квадрати через 3 на 4-й.

Після потоплення великого корабля, потрібно рухатися за спаданням - шукаємо трехпалубные кораблі, потім двопалубні і однопалубники.

1.2 Огляд існуючих аналогів

1) Розглянемо онлайн гру «Sea Battleship»

Для початку потрібно обрати режим гри: на двох або з комп'ютером і підготуйте свій флот до битви:

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

Можна використати кнопку випадкового вибору і флот сам розміститься:

Здійснюйте постріли по черзі з противником, якщо залп виявився успішним на ворожому полі з'явиться червоний хрест і ви зможете зробити постріл позачергово:

Той, хто перший розбомбить ворожий флот в Sea Battleship, той і виграє:

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

2) Розглянемо гру «Морський Бій онлайн»

В цій грі можна грати з реальнми людьми з усього світу, а не лише з комп'ютером. Також можна грати зі своїми знайомими та друзями:

У Цю гру можна грати доти, доки є гравці онлайн:

1.3 Постановка задачі

Щоб розробити метод і алгоритм створення гри «Морський бій», необхідно вирішити наступні задачі:

- проаналізувати методи створення гри;

- використовуючи метод випадкових чисел виконати алгоритм гри комп'ютера;

- розробити алгоритм розташування кораблів на полі комп'ютера;

- реалізувати розроблені методи й алгоритми у вигляді комп'ютерної моделі. Розробити ігрову програму «Морський бій», яка включає ігрову панель, що складається з двох полів для людини і комп'ютера. На полі розставляються 10 кораблів різного класу. Чотири кораблі розміром в один осередок, три кораблі розміром в дві осередки, два кораблі розміром в три осередки, і один корабля розміром в чотири осередки. По черзі противникам надається можливість пострілу по чужому полю, результати якого відображаються на ньому. При попаданні в корабель надається можливість додаткового пострілу. Перемога присуджується гравцю, що топив всі кораблі противника.

Довідкова інформація містить правила гри і автора роботи.

РОЗДІЛ 2. ПРОЕКТУВАННЯ ГРИ

2.1 Розробка інтерфейсу

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

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

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

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

Три принципи розробки користувальницького інтерфейсу формулюються так:

1) контроль користувачем інтерфейсу;

2) зменшення завантаження пам'яті користувача;

3) послідовність користувальницького інтерфейсу.

Де знайти принципи розробки користувальницького інтерфейсу?

Хансен представив перший список принципів проектування . Принципи такі:

1) знати користувача;

2) скоротити запам'ятовування;

3) оптимізувати операції;

4) усунути помилки.

Багато великих виробників операційних систем, випусти на ринок свої нові продукти, публікують відповідні інструкції та вказівки. У цих виданнях розкриваються принципи підходу до проектування інтерфейсу. Керівництва випускали Apple Computer, Inc. (1992), IBM Corporation (1992), Microsoft Corporation (1995) та UNIX OSF / Motif (1993).

Читачі можуть використовувати названі публікації як посібник під час навчання. Термінологія по інтерфейсу в різних довідниках може відрізнятися, але адресація матеріалу, рівень складності та описані принципи користувальницького інтерфейсу єдині для всіх книг.

Важливість дотримання принципів

"Несумісність інтерфейсу може коштувати великої компанії мільйонів доларів збитку через втрату продуктивності і збільшення вартості технічної підтримки." - Джессі Бріст.

Ці принципи застосовні до всього програмного і апаратного забезпечення, у всіх типах і стилях інтерфейсів. Вироблялися вони протягом досить тривалого часу: вироблялися дослідження в галузі програмного інтерфейсу, здійснювалися розробки, опитувалися користувачі багатьох комп'ютерних платформ, в тому числі Macintosh і PC.

Дані принципи витримали перевірку часом і появою нових комп'ютерних технологій. Якоб Нільсен зауважив: "Принципи залишаться основними навіть якщо програма буде мати футуристичний тривимірний дизайн з печаткою" DataGlove ", що служить для введення, будуть розпізнаватися руху та" живі "відеозображення. Вони будуть актуальні, оскільки виражають основну ідею діалогу з машиною за допомогою команд".

Трактування цих принципів буде залежати від апаратного забезпечення, операційної системи, складових користувальницького інтерфейсу і його завдань. Найчастіше ділове рішення тяжіє над використанням принципів проектувальниками. Користувальницькі моделі та моделі проектувальника також різні й впливають на те, як будуть застосовуватися принципи. На деяких важливих етапах розробки проекту може постати питання: "Що відбудеться далі?". Відповідь має бути таким: "Що захоче користувач!".

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

2.2 Проектування моделей елементів гри

Гра розробляється за моделлю локального додатки. Всі компоненти програми будуть об'єднані в один файл, що встановлюється на пристрій. Додатки взаємодіятиме з необхідними рівнями ОС.

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

Основним і головним компонентом додатка є клас, що містить в собі функцію, яка створює активний процес. Даний компонент використовує необхідні для роботи компоненти, включені в готовий інсталяційний файл, або пропонований ОС.

Головний компонент програми звертається до файлів із зображеннями, файлу manifest, в якому описані дозволу при роботі програми. Статистика та акаунти зберігаються в базі даних Sqlite. Велику частину часу система перебувати в очікуванні дії користувача. Очікування ходу противника займається невелика кількість часу, проте, хід не відбувається миттєво. Для здійснення противником ходу використовується невипадковий алгоритм вибору клітини.

Алгоритм заснований на передбачуваному розміщенні кораблів гравця. Штучний противник не має відомостей про розташування кораблів гравця, завдяки чому

опоненти знаходяться у відносно однакових умовах.

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

2.3 Розробка алгоритмів

Алгоритм розташування кораблів на ігровому полі

Ігрове поле потрібно якось зберігати в пам'яті комп'ютера. Найбільш проста реалізація - у вигляді матриці 10x10 кліток (вічок).

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

По правилах гри два кораблі не можуть стикатися один з одним, тобто між ними має бути порожній простір мінімум в одну клітку. Нам знадобиться допоміжна функція, яка дозволить визначити, чи можна поставити однопалубний корабель у вказане вічко чи ні. Для цього необхідно перевірити саму це вічко і всі сусідні (їх 8 штук). І лише якщо всі вони не зайняті можна дати позитивну відповідь (True), інакше - негативний (False)

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

Це, власне, і все, що стосується розміщення кораблів комп'ютера.

Стратегія гри комп'ютера

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

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

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

1. Простріл ігрового поля по випадкових координатах до попадання по кораблю, після чого перехід в другий стан;

2. Обстріл довкола підбитого вічка поля для визначення напряму корабля (вертикальне або горизонтальне), після чергового попадання - перехід в третій стан;

3. Розстріл корабля в отриманому напрямі до повного його знищення, після чого перехід в перший стан.

І так, вся гра зациклена на трьох основних діях: простріл, обстріл і розстріл. Всі ці дії повинні продовжуватися до тих пір, поки в однієї із сторін не будуть знищені всі кораблі.

Простріл

На цьому етапі комп'ютер повинен зловити який-небудь з кораблів противника. Для цього він стрілятиме по довільних незайнятих клітках поля гравця.

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

Обстріл

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

Розстріл

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

Висновки до розділу 2

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

РОЗДІЛ 3. РЕАЛІЗАЦИЯ ГРИ

3.1 Реалізація інтерфейсу

Графічний інтерфейс користувача винайшли завдяки дослідженням, проведеним у 60-ті роки в науково дослідному інституті Стенфорда Дугласом Енгельбартом.Згодом концепцію GUI перейняли дослідники з лабораторії Xerox PARC у 1970-х. 1973 року влабораторії Xerox PARC зібрали молодих учених і дали їм свободу досліджень.У підсумку, крім усього іншого, на світ з'явилася концепція графічного інтерфейсу WIMP (Windows, Icons, Menus, Point-n-Click) і в рамках цієї концепції було створено комп'ютер Alto. Його не виробляли як комерційний продукт, але він широко застосовувався на фірмі Xerox як корпоративний інструмент.

1979 року Three Rivers Computer Corporation побудувала робочу станцію PERQ, схожу за принципами роботи на Alto. 1981 року Xerox розробила наступника Alto -- Star.

Комерційне втілення концепція GUI отримала 1984 року в продуктах корпорації Apple Computer. В операційній системі AmigaOS GUI з багатозадачністю був застосований 1985 року.

Зараз GUI є стандартном для більшості доступних на ринку операційних систем і додатків. Приклади систем, що використовують GUI: Mac OS, GEM, Atari TOS, Microsoft Windows, Solaris, GNU/Linux, NeXTSTEP, OS/2, BeOS, Android, iOS, Bada, MeeGo.

Хоча в переважній більшості систем GUI є надбудовою для операційної системи, існують і незалежні його реалізації. Відомий варіант графічної програми BIOS Setup, коли, ще до завантаження ОС, управління настройками IBM PC-сумісної ЕОМ здійснюється мишею, аналогічно повноцінному GUI. Втім, такий варіант BIOS не пройшов перевірку часом. Також є GUI для Мікроконтролерів, які не потребують ОС.

3.2 Реалізація алгоритмів

Алгоритм розташування кораблів на ігровому полі

Ігрове поле потрібно якось зберігати в пам'яті комп'ютера. Найбільш проста реалізація - у вигляді матриці 10x10 кліток (вічок).

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

По правилах гри два кораблі не можуть стикатися один з одним, тобто між ними має бути порожній простір мінімум в одну клітку. Нам знадобиться допоміжна функція, яка дозволить визначити, чи можна поставити однопалубний корабель у вказане вічко чи ні. Для цього необхідно перевірити саму це вічко і всі сусідні (їх 8 штук). І лише якщо всі вони не зайняті можна дати позитивну відповідь (True), інакше - негативний (False)

Як відомо з правил гри, на полі повинні знаходитися наступні кораблі: один чотири палубний, два трьохпалубних, три двопалубних і чотири однопалубних.

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

Код гри «Морський бій»:

from Tkinter import Tk, Button

from tkFont import Font

from copy import deepcopy

class Board:

def __init__(self, other=None):

self.player = 'X'

self.opponent = 'O'

self.empty = ' '

self.size = 3

self.fields = {}

for y in range(self.size):

for x in range(self.size):

self.fields[x, y] = self.empty

# copy constructor

if other:

self.__dict__ = deepcopy(other.__dict__)

board = Board(self)

board.fields[x, y] = board.player

(board.player, board.opponent) = (board.opponent, board.player)

return board

def __minimax(self, player):

if self.won():

if player:

return (-1, None)

else:

return (+1, None)

elif self.tied():

return (0, None)

elif player:

best = (-2, None)

for x, y in self.fields:

if self.fields[x, y] == self.empty:

value = self.move(x, y).__minimax(not player)[0]

if value > best[0]:

best = (value, (x, y))

return best

else:

best = (+2, None)

for x, y in self.fields:

value = self.move(x, y).__minimax(not player)[0]

if value < best[0]:

best = (value, (x, y))

return best

def best(self):

return self.__minimax(True)[1]

def tied(self):

for (x, y) in self.fields:

if self.fields[x, y] == self.empty:

return False

return True

def won(self):

# horizontal

for y in range(self.size):

winning = []

for x in range(self.size):

if self.fields[x, y] == self.opponent:

winning.append((x, y))

if len(winning) == self.size:

return winning

# vertical

for x in range(self.size):

winning = []

for y in range(self.size):

if self.fields[x, y] == self.opponent:

winning.append((x, y))

if len(winning) == self.size:

return winning

# diagonal

winning = []

for y in range(self.size):

x = y

if self.fields[x, y] == self.opponent:

winning.append((x, y))

if len(winning) == self.size:

return winning

# other diagonal

winning = []

for y in range(self.size):

x = self.size - 1 - y

if self.fields[x, y] == self.opponent:

winning.append((x, y))

if len(winning) == self.size:

return winning

# default

return None

def __str__(self):

string = ''

for y in range(self.size):

for x in range(self.size):

string += self.fields[x, y]

string += "\n"

return string

class GUI:

def __init__(self):

self.app = Tk()

self.app.title('OX')

self.app.resizable(width=False, height=False)

self.board = Board()

self.font = Font(family="Helvetica", size=32)

self.buttons = {}

for x, y in self.board.fields:

handler = lambda x=x, y=y: self.move(x, y)

button = Button(self.app, command=handler, font=self.font, width=2, height=1)

button.grid(row=y, column=x)

self.buttons[x, y] = button

handler = lambda: self.reset(

button = Button(self.app, text='Play Again', command=handler)

button.grid(row=self.board.size + 1, column=0, columnspan=self.board.size, sticky="WE")

self.update()

def reset(self):

self.board = Board()

self.update()

def move(self, x, y):

self.app.config(cursor="watch")

self.app.update()

self.board = self.board.move(x, y)

self.update()

move = self.board.best()

if move:

self.board = self.board.move(*move)

self.update()

self.app.config(cursor="")

def update(self):

for (x, y) in self.board.fields:

text = self.board.fields[x, y]

self.buttons[x, y]['text'] = text

self.buttons[x, y]['disabledforeground'] = 'black'

if text == self.board.empty:

self.buttons[x, y]['state'] = 'normal'

else:

self.buttons[x, y]['state'] = 'disabled'

winning = self.board.won()

if winning:

for x, y in winning:

self.buttons[x, y]['disabledforeground'] = 'red'

for x, y in self.buttons:

self.buttons[x, y]['state'] = 'disabled'

for (x, y) in self.board.fields:

self.buttons[x, y].update()

def mainloop(self):

self.app.mainloop(

if __name__ == '__main__':

GUI().mainloop()

3.3 Тестування гри

Щоб розробити метод і алгоритм створення гри «Морський бій», необхідно вирішити наступні задачі:

- проаналізувати методи створення гри;

- використовуючи метод випадкових чисел виконати алгоритм гри комп'ютера;

- розробити алгоритм розташування кораблів на полі комп'ютера;

- реалізувати розроблені методи й алгоритми у вигляді комп'ютерної моделі. Розробити ігрову програму «Морський бій», яка включає ігрову панель, що складається з двох полів для людини і комп'ютера. На полі розставляються 10 кораблів різного класу. Чотири кораблі розміром в один осередок, три кораблі розміром в дві осередки, два кораблі розміром в три осередки, і один корабля розміром в чотири осередки. По черзі противникам надається можливість пострілу по чужому полю, результати якого відображаються на ньому. При попаданні в корабель надається можливість додаткового пострілу. Перемога присуджується гравцю, що топив всі кораблі противника.

По правилах гри два кораблі не можуть стикатися один з одним, тобто між ними має бути порожній простір мінімум в одну клітку. Нам знадобиться допоміжна функція, яка дозволить визначити, чи можна поставити однопалубний корабель у вказане вічко чи ні. Для цього необхідно перевірити саму це вічко і всі сусідні (їх 8 штук). І лише якщо всі вони не зайняті можна дати позитивну відповідь (True), інакше - негативний (False)

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

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

Правила морського бою на папері дуже прості. На аркуші чертится два однакових квадрата (10 на 10 клітин) - перший для своєї флотилії, а на другому будемо шукати кораблі суперника. Кожен гравець «скидає бомбу» на ворожий корабель по черзі. Будь-яке попадання відзначається зарисованным квадратиком, промах - точкою. Виграти вдається тому гравцю, який першим потопив всі ворожі судна. Гра Морський бій пережила багато поколінь, якщо раніше в неї грали виключно на листочках в клітинку на уроках або лекціях, то тепер в епоху комп'ютерів і всіляких гаджетів.

ВИСНОВОК

В результаті виконання даної курсової роботи було отримано ігровий програмний продукт, названий «Морський бій». У результаті дослідження були виявлені такі недоліки отриманого програмного продукту:

1. Низький штучний інтелект, тобто хід комп'ютера здійснюється випадковим чином, що робить малоймовірним перемогу комп'ютера;

2. При повному затопленні корабля це ніяк не відображається;

3. Неможливість повернення на кілька ходів назад;

4. Працездатність програми лише в середовищі Windows;

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1) Python. Учебнийкурс В. В. Фаронов, [Текст]: 2001

2) Python 7.0. Початковий курс. [Електронний ресурс]: Учбова допомога Фаронов В. В.2000

3) ГлинскийЯ.. Python [Текст]: Учбова допомога / Глінський Я. - М.- ДиаСофт 2001, 208с. - ISBN 5-93772-006-7

4) Культін Н Програмування на Python [Текст]: підручник / Культін Н - М.- BHV-СПб 2004, 416с. - ISBN 5-8206-0063-0

5) Потопахин В. В. Python Рішення складних задач, [Текст]: 2006

6) Пайтон. Самовчитель, ВладімірПопов, [Електронний ресурс]: Питер 2004

7) Архангельський А. Я. - Програмування в Python для Windows[Текст]: Версії 2006, 2007, Python

Размещено на Allbest.ru

...

Подобные документы

  • Поняття та класифікація комп’ютерних ігор. Відтворення гри "Морський бій" у вигляді комп’ютерної програми. Компоненти програмного середовища Delphi, що були використані під час її створення. Алгоритм реалізації ігрового процесу та скріншоти з програми.

    дипломная работа [418,2 K], добавлен 12.07.2013

  • Аналіз технічного забезпечення, вибір інструментального програмного забезпечення та середовища розробки програм. Створення класів для реалізації необхідних функцій для роботи програмного засобу. Розробка інтерфейсу для користувача та лістинг програми.

    курсовая работа [343,9 K], добавлен 24.08.2012

  • Проектування та реалізація бази даних на фізичному рівні. Формування сутності з їх атрибутами. Вибір засобів розробки даного програмного забезпечення. Створення інтерфейсу для роботи з базою даних. Інструкція користувача, головне функціональне вікно.

    курсовая работа [1,7 M], добавлен 26.09.2013

  • Аналіз існуючих технологій для створення ігор. Вибір технологій та мов програмування для розробки логічної гри з елементами розвитку зорової пам’яті. Опис алгоритму функціонування програми. Компонування елементів на платформі Unity3D та UML-діаграми.

    дипломная работа [1,1 M], добавлен 08.06.2015

  • Онлайн-страхування в мережі Інтернет, його правовий аспект. Програмне забезпечення для організації веб-сайтів в мережі Інтернет: CMS. Система керування вмістом для публікації інформації в Інтернеті: Joomla. Описання процесу створення й реалізації програми

    курсовая работа [4,3 M], добавлен 30.09.2014

  • Проектування інтерфейсу користувача. Стилі взаємодії користувача з програмними системами. Стилі представлення інформації і доцільність графічного представлення даних. Правила проектування засобів підтримки користувача, вбудованих в програмне забезпечення.

    доклад [1,2 M], добавлен 08.12.2008

  • Ігрові програми та BORLAND C++ BUILDER, застосованна для їх створення. Основні прийоми, застосовувані при проектуванні користувальницького інтерфейсу. Середовище розробки. Приклад використання видимих і невидимих компонентів. Прототип оброблювача подій.

    курсовая работа [611,9 K], добавлен 24.03.2009

  • Визначення вимог до програмного забезпечення. Проектування архітектури програми, структури даних та інтерфейсу. Програмування графічного редактора, специфікація його класів та алгоритм роботи. Зміна архітектури редактора згідно нових вимог замовника.

    дипломная работа [1,2 M], добавлен 05.01.2014

  • Сучасні засоби обчислювальної техніки, їх внесок в розробку програмного забезпечення. Порівняльний аналіз мов програмування. Методика створення програми для знайдення оптимального розподілу задачі по мережі, таким чином, щоб час розв’язку був мінімальним.

    курсовая работа [26,6 K], добавлен 25.10.2009

  • Первинний опис програмного забезпечення графічний редактор. Функціональна специфікація класів. Проектування архітектури програми, структури даних та графічного інтерфейсу. Опис алгоритму природною мовою. Аналіз впливу зміни вимог на зміну архітектури.

    курсовая работа [2,4 M], добавлен 07.10.2014

  • Огляд засобів створення програмного забезпечення сучасних мікроконтролерів. Аналіз методів та налаштувань контролерів. Засоби генерації коду налаштувань. Детальний опис розробки програми генератора налаштувань ядра Cortex M4 та методики її тестування.

    курсовая работа [1,3 M], добавлен 20.05.2015

  • Дослідження середовища проектування та інструментів LabView: створення, редагування і відладка віртуальних інструментів, панелей, надписів. Логіко-функціональна схема роботи користувача, опис інтерфейсу програми. Економічна доцільність розробки продукту.

    дипломная работа [1,6 M], добавлен 26.10.2012

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

    курсовая работа [510,2 K], добавлен 03.06.2011

  • Програми лінійної та розгалуженої структури. Програмна реалізація функцій для роботи з датою та часом. Робота з візуальними компонентами керування. Створення інтерфейсу користувача стандартними подіями. Глобальні ідентифікатори Screen, Mouse, Application.

    отчет по практике [1,3 M], добавлен 24.02.2015

  • Специфікація програмного модуля. Документація, що створюється і використовується в процесі розробки програмних засобів. Інструменти комп’ютерної підтримки. Вимоги до користувальницького інтерфейсу. Програма для розрахунку значень складної функції.

    контрольная работа [34,5 K], добавлен 21.09.2009

  • Принципи технології створення програмних продуктів. Набір файлів, необхідних для створення програми в Delphi, варіанти роботи з ними. Програмування графічного інтерфейсу користувача. Зовнішній вигляд і лістинг програми, використані команди і компоненти.

    курсовая работа [550,5 K], добавлен 03.01.2014

  • Етапи розробки проекту. Вимоги до апаратного і програмного забезпечення, до користувача. Специфікація та структура даних, які мають бути розміщеними в системі. Вигляд інтерфейсу системи програмного забезпечення. Розробка бази даних косметичного салону.

    дипломная работа [1,8 M], добавлен 21.02.2015

  • Особливості системи онлайн-агрегаторів новин, універсальної програмної платформи Microsoft Window. Використання мови програмування C#, створення бази даних. Розробка програмного продукту, алгоритм його створення. Вихідний код та інструкція користувача.

    дипломная работа [730,9 K], добавлен 21.01.2016

  • Створення програмного забезпечення для управління продажем та орендою нерухомості. Аналіз роботи підприємства з продажу нерухомості; проектування системи взаємодії клієнта з продавцем; визначення вимог до програмного комплексу, який необхідно розробити.

    курсовая работа [3,1 M], добавлен 08.07.2012

  • Проектування і реалізація навчального програмного продукту "Побудова геометричних фігур". Використання C++ Builder 6 у якості програмного середовища для реалізації даної навчальної програми. Інструкція з використання розробленого програмного забезпечення.

    курсовая работа [2,2 M], добавлен 05.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.