--- tags: materials --- # Шашки Го ![](https://i.imgur.com/QzAlcBq.png) ## Класна робота Вивчити правила гри в Го та пройти туторіал: - https://online-go.com/learn-to-play-go ## Домашня робота ### Пазли Отримати на уроці номер завдання і вирішити 10+ пазлів з нього. Список: 1. https://online-go.com/puzzle/15438 2. https://online-go.com/puzzle/21075 3. https://online-go.com/puzzle/9681 4. https://online-go.com/puzzle/7834 5. https://online-go.com/puzzle/6401 6. https://online-go.com/puzzle/14773 7. https://online-go.com/puzzle/14785 8. https://online-go.com/puzzle/14801 9. https://online-go.com/puzzle/14812 10. https://online-go.com/puzzle/14725 11. https://online-go.com/puzzle/2868 12. https://online-go.com/puzzle/2888 13. https://online-go.com/puzzle/1295 14. https://online-go.com/puzzle/1309 15. https://online-go.com/puzzle/1382 При виконанні завдання: - намагатися ДУМАТИ при вирішенні пазлу, а не рандомно тикати або використовувати підказки - всі рішення повинні бути в одному документі - додавати посилання на конкретний пазл - додавати картинку-рішення для пазлу - писати чесно, чи вийшло зробити з першого разу, чи тикали поки не натикали :::info Додаткові вправи по вашому рівню можна знайти на https://online-go.com/puzzles ::: ## Вправи (Python) ### Поле для гри в Го З допомогою черепашки, намалювати поле для гри в Го. Ви вже робили завдання "Сітка" на минулих уроках, можете первеикористати для малювання сітки 9х9 або 13х13 або 19х19. ### Установка каменів - гра починається чорними - при кліку на полі потрібно поставити камінь в те місце - потім колір каменю міняється на протилежний і можна знову ставити камінь Реалізувати установку каменів можна через `turtle.shape("circle")`, `turtle.onscreenclick()` та `turtle.stamp()`, а зміну кольорів --- через глобальні змінні (або через перевизначення turtle.onscreenclick). Бонус: прив'язувати камені до сітки, а не просто ставити по координатам. ### Автозбереження - після кожного ходу зберігати цей хід в матрицю - зберігати матрицю та хто зараз ходить у файл після кожного ходу - при запуску гри зчитувати поле з файлу (якщо файл є) і починати гру з того місця де було закінчено ### Реалізувати правила гри - зробити перевірку ходів по правилам: не будь-де можна ставити камені - зробити детект закривання області каменями. Реалізувати забирання каменів. Для цього доведеться відмовитись від `turtle.stamp()` і зробити кожен камінь "черепашкою" (скільки каменів --- стільки і додаткових черепашок на сцені). - для початку можна реалізувати це тільки для випадку "4 камені оточили 1" - потім потрібно буде використовувати більш складний алгоритм для визначення чи якийсь камінь оточений. Може згодитись [алгоритм "заливки"](https://uk.wikipedia.org/wiki/%D0%97%D0%B0%D0%BB%D0%B8%D0%B2%D0%BA%D0%B0) - в кінці гри зробити підрахунок очків ### Гра по мережі Реалізувати сервер та клієнт версії, які спілкуються по сокетам (звичайним або websockets), щоб можна було грати двум гравцям на різних комп'ютерах. ### Автосолвер - написати алгоритм, який буде перебирати всі можливі варіанти - і він же буде грати за іншого гравця, тобто, зможе оцінити які ходи є виграшними - і буде вирішувати пазли, які можна вирішити за 5 ходів максимум ### Парсер картинок Написати алгоритм, який по картинці, зображенню гри (камені розставлені на дошці) визначить конфігурацію гри і відтворить її на екран.і