PHPackages                             eario13/tic-tac-toe - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. eario13/tic-tac-toe

ActiveProject

eario13/tic-tac-toe
===================

Task05

1.5(6mo ago)05PHPPHP &gt;=8.0

Since Sep 15Pushed 6mo agoCompare

[ Source](https://github.com/Eario13/tic-tac-toe)[ Packagist](https://packagist.org/packages/eario13/tic-tac-toe)[ RSS](/packages/eario13-tic-tac-toe/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (6)Used By (0)

Task04 — Игра "Крестики-нолики" с сохранением партий
====================================================

[](#task04--игра-крестики-нолики-с-сохранением-партий)

Описание проекта
----------------

[](#описание-проекта)

Программа для консольной игры "Крестики-нолики" (tic-tac-toe) с компьютером. Размер поля можно выбрать от 3x3 до 10x10. В данной версии проекта **реализована работа с базой данных SQLite**. Результаты игр и все ходы сохраняются, и их можно просмотреть или воспроизвести.

Правила игры
------------

[](#правила-игры)

- Всегда начинают крестики (X).
- Кем играет человек (X или O) — определяется случайным образом в начале каждой партии.
- Игрок и компьютер по очереди делают ходы, пока не появится победитель или не заполнится всё поле.
- После окончания игры результат **сохраняется** в базе данных SQLite.

Режимы работы программы (CLI-параметры)
---------------------------------------

[](#режимы-работы-программы-cli-параметры)

Программа поддерживает следующие параметры командной строки:

- `--new-game`, `-n`: Запустить новую игру.
- `--board-size=`, `-s=`: Установить размер игрового поля. Значение должно быть от 3 до 10. По умолчанию: 3.
- `--player-name=`, `-p=`: Установить имя игрока. По умолчанию: "Игрок".
- `--list-games`, `-l`: Вывести список всех сохранённых партий из базы данных.
- `--replay-game=`, `-r=`: Повторить сохранённую партию по её ID.
- `--help`: Показать справку по командам.

### Примеры запуска

[](#примеры-запуска)

- Запустить новую игру на поле 3x3 с именем игрока "John": ```
    php bin/tic-tac-toe --new-game --player-name="John" --board-size=3
    ```

    или ```
    tic-tac-toe -n -p "John" -s 3
    ```
- Показать справку: ```
    php bin/tic-tac-toe --help
    ```

    или ```
    tic-tac-toe --help
    ```
- Вывести список всех сохранённых игр: ```
    php bin/tic-tac-toe --list-games
    ```

    или ```
    tic-tac-toe -l
    ```
- Повторить игру с ID 1: ```
    php bin/tic-tac-toe --replay-game=1
    ```

    или ```
    tic-tac-toe -r 1
    ```

### Формат ввода координат ячеек

[](#формат-ввода-координат-ячеек)

Во время игры, когда будет ваш ход, программа запросит ввод в формате `строка,столбец`. Например, для хода в центральную ячейку поля 3x3 нужно ввести `2,2`. (Строки и столбцы нумеруются с 1).

Новые возможности (Task04)
--------------------------

[](#новые-возможности-task04)

В этой версии игры добавлен функционал для работы с базой данных SQLite. Теперь вы можете:

### Сохранение партий

[](#сохранение-партий)

Все новые игры автоматически сохраняются в базу данных `tictactoe.sqlite`, которая будет создана в корневой директории проекта при первом запуске. Сохраняются следующие данные:

- Размер доски
- Имена игроков (человек и компьютер)
- Время начала и окончания игры
- Победитель или факт ничьей
- Каждый сделанный ход (номер хода, символ игрока, строка, столбец)

### Воспроизведение сохраненных партий

[](#воспроизведение-сохраненных-партий)

Вы можете просмотреть историю всех сохраненных игр и запустить повторное воспроизведение любой из них.

- **Просмотр списка игр:**Используйте опцию `--list-games` или `-l` для вывода списка всех сохраненных партий:

    ```
    php bin/tic-tac-toe --list-games
    ```

    (или `vendor/bin/tic-tac-toe --list-games` если установлено через Composer)
- **Повторное воспроизведение игры:**Используйте опцию `--replay-game=` или `-r ` для повторного просмотра игры по ее идентификатору:

    ```
    php bin/tic-tac-toe --replay-game=1
    ```

    (или `vendor/bin/tic-tac-toe --replay-game=1` если установлено через Composer) Во время воспроизведения будет отображаться каждый ход с небольшой задержкой, чтобы вы могли следить за развитием партии.

Требования
----------

[](#требования)

- PHP &gt;= 8.0 (CLI-режим)
- Composer (глобально установленный)

Установка и запуск
------------------

[](#установка-и-запуск)

1. **Клонировать репозиторий (если еще не сделали):**

    ```
    git clone https://github.com/Eario13/tic-tac-toe.git
    cd tic-tac-toe
    ```

    **Примечание:** Для лабораторной работы 4, проект должен находиться в `Task04/tic-tac-toe`. Если вы клонируете этот репозиторий как отдельный, он будет в корневой папке `tic-tac-toe`.
2. **Установить зависимости:**

    ```
    composer install
    ```
3. **Сгенерировать автозагрузку:**

    ```
    composer dump-autoload -o
    ```
4. **Запустить игру (с указанием интерпретатора):**

    ```
    php bin/tic-tac-toe --new-game --board-size=5 --player-name="MyPlayer"
    ```

    Для проверки работы команды `--list-games` или `--replay-game`:

    ```
    php bin/tic-tac-toe --list-games
    ```
5. **Запустить игру (глобально, если установлен через Composer global require):**Если пакет `eario13/tic-tac-toe` был установлен глобально с помощью Composer, вы можете запускать игру так:

    ```
    tic-tac-toe --new-game -s 4 -p "GlobalPlayer"
    ```

Установка через Packagist (для глобального использования)
---------------------------------------------------------

[](#установка-через-packagist-для-глобального-использования)

Вы можете установить игру напрямую как пакет Packagist. Это позволит запускать игру из любой директории.

1. **Глобальная установка:**

    ```
    composer global require eario13/tic-tac-toe
    ```

    **Примечание:** Убедитесь, что ваш глобальный каталог Composer `vendor/bin` добавлен в системную переменную PATH. Обычно это `~/.composer/vendor/bin` на Linux/macOS или `%APPDATA%\Composer\vendor\bin` на Windows. Актуальная страница пакета:
2. **Проверка запуска:**После глобальной установки вы сможете запустить игру, просто набрав `tic-tac-toe` в командной строке (без `php bin/`):

    ```
    tic-tac-toe --new-game
    ```

Структура проекта
-----------------

[](#структура-проекта)

Task04/ └─ tic-tac-toe/ ├─ bin/ │ └─ tic-tac-toe # Запускной скрипт ├─ src/ │ ├─ Database/ │ │ └─ DatabaseManager.php # Класс для управления базой данных │ ├─ Board.php # Представление игровой доски │ ├─ CliApp.php # Обработка аргументов командной строки и запуск игры │ ├─ ComputerPlayer.php # Логика хода компьютерного игрока │ ├─ Game.php # Основная игровая логика (контроллер) │ ├─ HumanPlayer.php # Логика хода игрока-человека │ └─ Player.php # Абстрактный базовый класс для игроков ├─ vendor/ # Зависимости Composer ├─ tictactoe.sqlite # Файл базы данных SQLite (создается автоматически) ├─ composer.json # Настройки Composer ├─ composer.lock # Зафиксированные версии зависимостей └─ README.md # Документация проекта

###  Health Score

33

—

LowBetter than 74% of packages

Maintenance71

Regular maintenance activity

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~10 days

Total

5

Last Release

193d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6d1ef46381b97f7f8fb0f1c4a4be7e8a2317002239a7ff00acbc38bdea75f40c?d=identicon)[Eario13](/maintainers/Eario13)

---

Top Contributors

[![Eario13](https://avatars.githubusercontent.com/u/183649382?v=4)](https://github.com/Eario13 "Eario13 (7 commits)")

### Embed Badge

![Health badge](/badges/eario13-tic-tac-toe/health.svg)

```
[![Health](https://phpackages.com/badges/eario13-tic-tac-toe/health.svg)](https://phpackages.com/packages/eario13-tic-tac-toe)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
