Skip to content

VikaDrozhak7/Tic_Tac_Toe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Опис проекту

Цей проект реалізує гру "Хрестики-нулики" на мові програмування C#. Гра дозволяє двом гравцям змагатися один проти одного, роблячи ходи по черзі на полі розміром 3x3. Гра завершується, коли один з гравців виграє або коли неможливо зробити хід (нічия). Після завершення гри є можливість почати нову гру.

Принципи проектування

Single Responsibility Principle (SRP): Кожен клас в програмі відповідає за одну конкретну відповідальність:

  • Player зберігає інформацію про гравця.
  • Board управляє станом і логікою гри на дошці.
  • GameView відповідає за взаємодію з користувачем (введення і виведення).
  • GameController керує логікою гри, координуючи взаємодію між Player, Board і GameView.

Open/Closed Principle (OCP): Програма спроектована таким чином, що нові функції можуть бути додані з мінімальними змінами до існуючого коду. Наприклад, можна легко змінити спосіб відображення гри або додати нові типи ігор, не змінюючи базову логіку.

Liskov Substitution Principle (LSP): Усі об'єкти можуть бути замінені на їх підкласи без порушення роботи програми (хоча тут не використовуються наслідування, принцип важливий для майбутніх розширень).

Interface Segregation Principle (ISP): Кожен клас має чітко визначений набір методів, які необхідні для його функціональності, і не містить зайвих методів.

Dependency Inversion Principle (DIP): Високорівневі модулі не залежать від низькорівневих модулів; і ті, і інші залежать від абстракцій. Наприклад, GameController залежить від абстракцій Board, Player, і GameView, а не від їх конкретних реалізацій.

Патерни проектування

Model-View-Controller (MVC): Архітектура проекту побудована на основі MVC:

  • Model: Моделі Player та Board представляють логіку гри і стан даних.
  • View: GameView відповідає за взаємодію з користувачем, відображення дошки і отримання введення гравців.
  • Controller: GameController об'єднує моделі та вигляд, керуючи процесом гри.

Observer Pattern (Implicit): Хоча патерн явно не реалізований, концепція розділення відповідальності між різними компонентами та оновлення вигляду відповідно до стану моделі слідує цій ідеї.

Функціонал програми

  • Ініціалізація гри: Гравці вводять свої імена перед початком гри.
  • Відображення ігрового поля: Після кожного ходу оновлюється ігрове поле.
  • Ходи гравців: Гравці по черзі роблять ходи, вводячи номер комірки від 1 до 9.
  • Перевірка правильності ходу: Програма перевіряє, чи введений хід є коректним (число від 1 до 9, і комірка не зайнята).
  • Перемога/нічия: Після кожного ходу перевіряється умова перемоги або нічиї.
  • Повтор гри: Після завершення гри гравці можуть обрати почати нову гру.
  • Очищення консолі: Консоль очищається після кожного ходу для зручності перегляду.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages