Skip to content

Repository files navigation

Match-3 Game (Три в ряд)

Полнофункциональная игра "три в ряд" в стиле Homescapes, разработанная на HTML5/JavaScript с бэкендом на Go.

🎮 Особенности

  • 8x8 игровое поле с 6 типами фишек
  • Специальные элементы:
    • Полосатые фишки (горизонтальные/вертикальные) - уничтожают ряд/столбец
    • Бомбы - уничтожают область 3x3
    • Радужные - уничтожают все фишки одного цвета
  • Препятствия:
    • Коробки (1-3 удара)
    • Лёд (1-2 слоя)
    • Желе (1-3 слоя)
    • Цепи (блокируют движение)
  • Бустеры: Молоток, Ракеты, Бомба, Перемешивание
  • 50 уровней с возрастающей сложностью
  • Система достижений и лидерборды
  • Магазин с бустерами и монетами
  • Офлайн-режим с локальным сохранением

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

gameTri/
├── frontend/                 # Клиентская часть
│   ├── index.html           # Главная страница
│   ├── styles.css           # Главный CSS (импорты)
│   ├── styles/              # CSS модули
│   │   ├── variables.css    # CSS переменные
│   │   ├── base.css         # Базовые стили
│   │   ├── buttons.css      # Стили кнопок
│   │   ├── menu.css         # Главное меню
│   │   ├── level-map.css    # Карта уровней
│   │   ├── game.css         # Игровой экран
│   │   ├── popups.css       # Попапы
│   │   ├── shop.css         # Магазин
│   │   ├── settings.css     # Настройки
│   │   ├── leaderboard.css  # Лидерборд
│   │   ├── notifications.css # Уведомления
│   │   ├── animations.css   # Анимации
│   │   └── responsive.css   # Адаптивность
│   ├── src/
│   │   ├── utils/           # Утилиты
│   │   │   ├── Config.js    # Конфигурация
│   │   │   ├── Storage.js   # LocalStorage
│   │   │   ├── API.js       # API клиент
│   │   │   └── SoundManager.js
│   │   ├── game/            # Игровая логика
│   │   │   ├── BoardController.js
│   │   │   ├── GameEngine.js
│   │   │   ├── MatchDetector.js
│   │   │   ├── PowerUpManager.js
│   │   │   ├── AnimationEngine.js
│   │   │   ├── Particle.js
│   │   │   └── Renderer.js
│   │   ├── ui/              # Интерфейс
│   │   │   └── UI.js
│   │   └── main.js          # Точка входа
│   └── data/
│       └── levels/          # Конфиги уровней
│
├── backend/                  # Серверная часть (Go)
│   ├── cmd/
│   │   └── main.go          # Точка входа
│   ├── internal/
│   │   ├── config/          # Конфигурация
│   │   ├── database/        # PostgreSQL
│   │   ├── handlers/        # HTTP обработчики
│   │   ├── middleware/      # Middleware
│   │   └── models/          # Модели данных
│   └── go.mod
│
└── python/                   # Инструменты
    ├── level_generator.py   # Генератор уровней
    ├── analytics.py         # Аналитика
    └── requirements.txt

🚀 Запуск

Frontend (без сервера)

Просто откройте frontend/index.html в браузере. Игра работает в офлайн-режиме с локальным сохранением.

Backend с PostgreSQL (рекомендуется)

Вариант 1: Docker (рекомендуется)

  1. Убедитесь, что Docker установлен и запущен

  2. Запустите PostgreSQL:

# Windows
start_postgres.bat

# Linux/Mac
docker-compose up -d postgres
  1. Запустите бэкенд:
cd backend
go run cmd/main.go

Сервер будет доступен на http://localhost:8080

Adminer (веб-интерфейс для БД): http://localhost:8081

  • Система: PostgreSQL
  • Сервер: postgres
  • Пользователь: postgres
  • Пароль: postgres
  • База данных: gametri

Вариант 2: Локальный PostgreSQL

  1. Установите PostgreSQL и создайте базу данных:
CREATE DATABASE gametri;
  1. Настройте переменные окружения (или отредактируйте backend/.env):
# Linux/Mac
export USE_SQLITE=false
export DATABASE_URL="postgres://user:password@localhost:5432/gametri?sslmode=disable"
export JWT_SECRET="your-secret-key"

# Windows PowerShell
$env:USE_SQLITE="false"
$env:DATABASE_URL="postgres://user:password@localhost:5432/gametri?sslmode=disable"
  1. Запустите сервер:
cd backend
go mod download
go run cmd/main.go

Backend с SQLite (для разработки)

Если Docker недоступен, можно использовать SQLite:

  1. Установите в backend/.env:
USE_SQLITE=true
  1. Запустите сервер:
cd backend
go run cmd/main.go

Переменные окружения

Переменная По умолчанию Описание
USE_SQLITE false Использовать SQLite вместо PostgreSQL
DATABASE_URL postgres://postgres:postgres@localhost:5432/gametri?sslmode=disable URL подключения к PostgreSQL
SQLITE_PATH ./gametri.db Путь к SQLite файлу
SERVER_ADDR :8080 Адрес сервера
JWT_SECRET ... Секретный ключ для JWT токенов

Генерация уровней

cd python
python level_generator.py

🎯 Игровая механика

Совпадения

  • 3 в ряд - базовые очки
  • 4 в ряд - создаёт полосатую фишку
  • L/T-форма (5) - создаёт бомбу
  • 5 в ряд - создаёт радужную фишку

Комбинации специальных элементов

  • Полосатая + Полосатая = Крест
  • Полосатая + Бомба = Большой крест (3 ряда)
  • Бомба + Бомба = Огромный взрыв (5x5)
  • Радужная + Любая = Все фишки этого цвета → специальные

Система звёзд

  • ⭐ - выполнить цели уровня
  • ⭐⭐ - набрать 150% очков
  • ⭐⭐⭐ - набрать 200% очков

🛠 API Endpoints

Авторизация

  • POST /api/auth/register - Регистрация
  • POST /api/auth/login - Вход
  • POST /api/auth/guest - Гостевой вход
  • GET /api/auth/me - Текущий пользователь

Уровни

  • GET /api/levels - Список уровней с прогрессом
  • GET /api/levels/{id} - Конфиг уровня
  • POST /api/levels/{id}/start - Начать уровень
  • POST /api/levels/{id}/complete - Завершить уровень

Игрок

  • GET /api/player/progress - Прогресс игрока
  • PUT /api/player/progress - Обновить прогресс

Другое

  • GET /api/leaderboard/{period} - Лидерборд
  • GET /api/shop/items - Товары магазина
  • POST /api/shop/purchase - Покупка
  • GET /api/achievements - Достижения

📱 Адаптивность

Игра адаптирована для:

  • 📱 Мобильные телефоны (320px+)
  • 📱 Планшеты (768px+)
  • 💻 Десктопы (1024px+)

Поддерживаются touch-события для мобильных устройств.

🔧 Конфигурация

Основные настройки в frontend/src/utils/Config.js:

const Config = {
    GRID_WIDTH: 8,
    GRID_HEIGHT: 8,
    CELL_SIZE: 64,
    GEM_TYPES: ['red', 'blue', 'green', 'yellow', 'purple', 'orange'],
    SCORES: {
        MATCH_3: 50,
        MATCH_4: 100,
        MATCH_5: 200,
        // ...
    }
};

📄 Лицензия

MIT License

TriVrAAd

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages