Симулятор вскрытия бустеров Magic: The Gathering для iOS
BoosterCraft - это iOS-приложение-симулятор вскрытия бустеров, в частности, коллекционной карточной игры Magic: The Gathering. Приложение предоставляет пользователям возможность погрузиться в атмосферу открытия настоящих бустеров, но в цифровом формате.
- Приложение предлагает бустеры из последних 5 изданий Magic: The Gathering:
- Final Fantasy (TDM)
- Tarkir: Dragonstorm (TDR)
- AETHERDRIFT (AED)
- Duskmourn: House of Horror (DSK)
- Bloomburrow (BLB)
- Каждый бустер содержит 12 случайных карт, соответствующих реальному составу оригинальных бустеров
- Цены карт берутся из актуальной базы данных Scryfall API
- Поддерживаются два типа бустеров: Play и Collector
- Внутриигровая валюта (монеты) для покупки бустеров
- Получение валюты через ежедневные награды (+20 монет в день)
- Продажа карт из коллекции для получения дополнительной валюты
- Полная история транзакций с детализацией операций
- Интерактивный процесс открытия бустера с анимациями
- Возможность выборочной продажи карт сразу после открытия
- Опции: "Продать все", "Продать выбранные", "Оставить все"
- Реальные изображения карт, загружаемые из Scryfall API
- Автоматическое добавление не проданных карт в коллекцию
- Группировка карт по сетам (изданиям)
- Возможность продажи карт из коллекции через быстрое нажатие
- Отображение количества копий каждой карты
- Система ежедневных наград с защитой от повторного получения
- Автоматическое обновление доступности награды каждый день
- Интеграция с системой транзакций
- Язык: Swift 5.0+
- Платформа: iOS 15.0+
- Архитектура: MVC (Model-View-Controller)
- UI Framework: UIKit с программатическим созданием интерфейса
- Scryfall API: Получение актуальных данных о картах, сетах и ценах
- UserDefaults: Локальное хранение коллекции и баланса пользователя
- NotificationCenter: Система уведомлений для обновления UI
// Card.swift - Модель карты MTG
struct Card: Codable, Equatable {
let id: String
let name: String
let type_line: String?
let mana_cost: String?
let oracle_text: String?
let rarity: String?
let set: String?
let set_name: String?
let image_url: String?
let price_usd: String?
var count: Int
}
// ScryfallSet.swift - Модель сета MTG
struct ScryfallSet: Codable {
let code: String
let name: String
let set_type: String
let card_count: Int
let released_at: String
let icon_svg_uri: String?
}- ScryfallServiceManager: Синглтон для работы с Scryfall API
- Асинхронная загрузка карт и изображений
- Обработка пагинации для больших наборов данных
- Кэширование изображений карт
- UserDataManager: Централизованное управление пользовательскими данными
- Локальное хранение коллекции карт
- Управление балансом и транзакциями
- Сохранение неоткрытых бустеров
- Программатический UI: Все интерфейсы создаются кодом без Storyboard
- Адаптивный дизайн: Поддержка различных размеров экранов
- Кастомные шрифты: PirataOne-Regular, Bungee-Regular
- Анимации: Плавные переходы и интерактивные элементы
- Цветовая схема: Темная тема с акцентными цветами для каждого сета
BlackMagic/
├── Controllers/ # Контроллеры экранов
│ ├── MainViewController.swift
│ ├── BoosterOpenedViewController.swift
│ ├── MyCollectionViewController.swift
│ ├── DailyRewardViewController.swift
│ └── ScryfallServiceManager.swift
├── Models/ # Модели данных
│ ├── Card.swift
│ ├── ScryfallSet.swift
│ ├── UserCollection.swift
│ ├── Transaction.swift
│ └── UserDataManager.swift
├── Views/ # Кастомные UI компоненты
│ ├── BoosterCardView.swift
│ ├── CardCell.swift
│ ├── BalanceButton.swift
│ └── OpenBoosterCardView.swift
├── Extensions/ # Расширения UIKit
│ ├── UIColor+normalRGBInit.swift
│ ├── UIImage+load.swift
│ ├── UIView+Pin.swift
│ └── UIViewController+setupNavigationBar.swift
└── Assets.xcassets/ # Ресурсы приложения
- Scryfall API: Основной источник данных о картах MTG
- Endpoints:
GET /cards/named?fuzzy={name}- поиск карты по имениGET /sets- получение всех сетовGET /cards/search?q=e:{setCode}- карты конкретного сета
- Обработка ошибок: Graceful degradation при сбоях сети
- Rate limiting: Соблюдение лимитов Scryfall API
- UserDefaults: Баланс, коллекция карт, транзакции
- Структуры данных:
UserCollection: Коллекция карт пользователяTransaction: История транзакцийUserBooster: Неоткрытые бустеры
- Xcode 12.0+
- iOS 14.0+
- Swift 5.0+
- Клонируйте репозиторий
- Откройте проект в Xcode
- Выберите симулятор или устройство
- Нажмите Run (⌘+R)
Проект «BoosterCraft»
- Лабус Мирон Антонович
- Сергеев Алексей Алексеевич
- Пономаренко Егор Сергеевич
Приложение создано для любителей Magic: The Gathering, которые хотят испытать эмоции от открытия бустеров без необходимости тратить реальные деньги, при этом сохраняя аутентичность процесса благодаря использованию реальных данных о картах и их стоимости.
Этот проект создан в образовательных целях и не связан с Wizards of the Coast или Scryfall.