eario13/tic-tac-toe

There is no license information available for the latest version (1.5) of this package.

Task05

Installs: 4

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:project

pkg:composer/eario13/tic-tac-toe

1.5 2025-10-28 12:22 UTC

This package is auto-updated.

Last update: 2025-10-28 12:34:44 UTC


README

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

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

Правила игры

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

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

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

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

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

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

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

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

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

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

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

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

    (или vendor/bin/tic-tac-toe --list-games если установлено через Composer)

  • Повторное воспроизведение игры: Используйте опцию --replay-game=<ID_игры> или -r <ID_игры> для повторного просмотра игры по ее идентификатору:

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

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

Требования

  • PHP >= 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. Это позволит запускать игру из любой директории.

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

    composer global require eario13/tic-tac-toe

    Примечание: Убедитесь, что ваш глобальный каталог Composer vendor/bin добавлен в системную переменную PATH. Обычно это ~/.composer/vendor/bin на Linux/macOS или %APPDATA%\Composer\vendor\bin на Windows. Актуальная страница пакета: https://packagist.org/packages/eario13/tic-tac-toe

  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 # Документация проекта