eario13 / tic-tac-toe
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
Requires
- php: >=8.0
- gabordemooij/redbean: ^5.7
- wp-cli/php-cli-tools: ^0.12.6
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 (глобально установленный)
Установка и запуск
-
Клонировать репозиторий (если еще не сделали):
git clone https://github.com/Eario13/tic-tac-toe.git cd tic-tac-toeПримечание: Для лабораторной работы 4, проект должен находиться в
Task04/tic-tac-toe. Если вы клонируете этот репозиторий как отдельный, он будет в корневой папкеtic-tac-toe. -
Установить зависимости:
composer install
-
Сгенерировать автозагрузку:
composer dump-autoload -o
-
Запустить игру (с указанием интерпретатора):
php bin/tic-tac-toe --new-game --board-size=5 --player-name="MyPlayer"Для проверки работы команды
--list-gamesили--replay-game:php bin/tic-tac-toe --list-games
-
Запустить игру (глобально, если установлен через Composer global require): Если пакет
eario13/tic-tac-toeбыл установлен глобально с помощью Composer, вы можете запускать игру так:tic-tac-toe --new-game -s 4 -p "GlobalPlayer"
Установка через Packagist (для глобального использования)
Вы можете установить игру напрямую как пакет Packagist. Это позволит запускать игру из любой директории.
-
Глобальная установка:
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 -
Проверка запуска: После глобальной установки вы сможете запустить игру, просто набрав
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 # Документация проекта