Skip to content

berrrchik/sudoku-swift-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Судоку - Мобильное приложение

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

Судоку - это мобильное приложение для iOS, разработанное с использованием SwiftUI. Приложение предлагает классическую игру Судоку с современным интерфейсом, несколькими уровнями сложности, поддержкой подсказок, заметок и проверкой решения.

Основные функции

1. Игровой процесс

  • Три уровня сложности (Лёгкий, Средний, Сложный)
  • Система подсказок (до 5 подсказок на игру)
  • Режим заметок для записи возможных значений
  • Функция отмены последнего действия
  • Автоматическая проверка решения

2. Визуальные особенности

  • Подсветка выбранной ячейки и связанных с ней
  • Выделение конфликтующих значений
  • Отображение заметок в ячейках
  • Визуальное разделение блоков 3x3

3. Система достижений

  • Подсчёт решённых головоломок по уровням сложности
  • Система начисления очков
  • Статистика игрока
  • Профиль с достижениями

Пользовательский интерфейс

Основные экраны

  1. Авторизация - вход и регистрация пользователя
  2. Выбор сложности - выбор уровня игры
  3. Игровое поле - основной экран с судоку
  4. Профиль - статистика и достижения игрока

Компоненты интерфейса

  • Адаптивная сетка судоку
  • Цифровая клавиатура для ввода значений
  • Панель инструментов с кнопками управления
  • Индикатор оставшихся подсказок
  • Таймер игры

Особенности реализации

Архитектура

  • MVVM архитектура
  • Реактивное обновление данных
  • Интеграция с Firebase
  • Локальное хранение игрового прогресса

Генерация головоломок

  • Алгоритм создания уникальных судоку
  • Проверка единственности решения
  • Различные уровни сложности

Скриншоты

Экран авторизации Экран регистрации Экран выбора уровня Экран профиля Пустое поле Судоку

Требования

  • iOS 14.0 или новее
  • iPhone или iPad
  • Учетная запись Firebase для сохранения прогресса
  • Интернет-соединение для синхронизации данных

Технические детали

Используемые технологии

  • Swift 5.0
  • SwiftUI
  • Firebase Authentication
  • Firebase Firestore
  • Combine

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

sudokuApp/
├── App/
│   └── sudokuAppApp.swift
├── Views/
|   ├── ContentView.swift
│   ├── Authentication/
│   │   ├── LoginView.swift
│   │   └── RegistrationView.swift
│   ├── Game/
│   │   ├── DifficultySelectionView.swift
│   │   ├── SudokuGameView.swift
│   │   ├── SudokuGridView.swift
│   │   └── SudokuCellView.swift
│   └── Profile/
│       └── ProfileView.swift
├── ViewModels/
│   ├── AuthViewModel.swift
│   └── SudokuViewModel.swift
├── Models/
│   ├── SudokuModel.swift
│   └── UserModel.swift
└── Utils/
    └── SudokuGenerator.swift

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

Необходимые инструменты:

  • Mac с macOS Ventura (13.0) или новее
  • Xcode 14.0 или новее
  • Учетная запись Apple ID
  • Учетная запись Firebase

Шаги по установке:

  1. Подготовка окружения

    • Установите Xcode из Mac App Store
    • Установите Git, если он отсутствует
  2. Клонирование проекта

git clone https://github.com/berrrchik/sudoku-swift-app
cd sudoku-app
  1. Настройка Firebase

    • Создайте проект в Firebase Console
    • Добавьте iOS приложение в проект
    • Скачайте GoogleService-Info.plist
    • Добавьте файл в корень проекта
  2. Настройка проекта

    • Откройте sudokuApp.xcodeproj в Xcode
    • В настройках проекта выберите вашу команду разработки
    • Обновите Bundle Identifier
    • Включите автоматическое управление подписями
  3. Запуск приложения

    • Выберите целевое устройство/симулятор
    • Нажмите ▶️ или ⌘R для запуска

Возможные проблемы:

  1. Ошибки подписи

    • Проверьте настройки команды разработки
    • Убедитесь в правильности Bundle Identifier
  2. Проблемы с Firebase

    • Проверьте наличие GoogleService-Info.plist
    • Убедитесь в правильности настроек Firebase
  3. Ошибки компиляции

    • Обновите Xcode до последней версии
    • Очистите проект (⇧⌘K)
    • Проверьте совместимость iOS

Судоку - развивайте логическое мышление с удовольствием!