# Snake (C#)

Классическая игра «Змейка» на .NET 8 с разделением логики и интерфейсов.

## Структура решения

| Проект | Назначение |
|--------|------------|
| `Snake.Core` | Игровая логика: поле, змейка, еда, движение, коллизии |
| `Snake.CLI` | Консольный интерфейс |
| `Snake.Avalonia` | Графический интерфейс (Avalonia UI) |

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

- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)

## Запуск

```bash
# Консольная версия
dotnet run --project Snake.CLI

# Avalonia UI (требуется графическая среда)
dotnet run --project Snake.Avalonia
```

## Git Flow

Проект использует [Git Flow](https://nvie.com/posts/a-successful-git-branching-model/):

| Ветка | Назначение |
|-------|------------|
| `main` | Стабильные релизы |
| `develop` | Интеграционная ветка для текущей разработки |
| `feature/*` | Новые функции (ветвление от `develop`) |
| `release/*` | Подготовка релиза (ветвление от `develop`) |
| `hotfix/*` | Срочные исправления в production (ветвление от `main`) |

### Типичный workflow

```bash
# Начать новую функцию
git checkout develop
git checkout -b feature/my-feature

# Завершить функцию
git checkout develop
git merge --no-ff feature/my-feature
git branch -d feature/my-feature

# Релиз
git checkout -b release/1.0.0 develop
# ... финальные правки, тег версии ...
git checkout main
git merge --no-ff release/1.0.0
git tag -a v1.0.0
git checkout develop
git merge --no-ff release/1.0.0
```

## Игровая логика (Snake.Core)

- `Board` — размеры поля и проверка границ
- `Snake` — сегменты тела, направление, движение
- `Food` — случайное размещение еды на свободных клетках
- `SnakeGame` — игровой цикл, счёт, коллизии со стенами и собой
