CardGame21 - это карточная игра, разработанная в рамках практики. Цель проекта - создать консольную игру с возможностью взаимодействия нескольких игроков.
Ссылка на видео с демонстрацией игры ->(https://youtu.be/YoAv0CP3xms)
Проект разработан с использованием следующих технологий:
- Язык программирования: C#
- Движок проекта: Unity
- Среда разработки: Visual Studio Code
- Опциональные варианты игры (Hit, Stand, Pass).
- Новые правила для 21 (BlackJack). Включающие себя, простые правила из 21, а также исходы из классического BlackJack.
- Использование случайных чисел для перетасовки карт.
- Быстрая скорость работы.
- Клонируйте репозиторий:
git clone https://github.com/skv0r/CardGame21.git
- Откройте проект в Visual Studio Сode.
- Соберите и запустите проект.
Этот скрипт управляет основной логикой игры BlackJack, включая действия игрока и дилера, обработку ставок и завершение раундов.
-
DealClicked()
- Описание: Начинает новый раунд игры, раздавая карты игроку и дилеру.
-
HitClicked()
- Описание: Добавляет карту игроку и проверяет, не превысил ли он 21 очко.
-
StandClicked()
- Описание: Завершает ход игрока и начинает ход дилера.
-
HitDealer()
- Описание: Добавляет карту дилеру и проверяет, не превысил ли он 21 очко. Продолжается до тех пор, пока дилер не наберет минимум 17 очков.
-
RoundOver()
- Описание: Проверяет итог игры и определяет победителя. Сравнивает очки игрока и дилера и обновляет состояние игры.
-
BetClicked()
- Описание: Обновляет ставку игрока и запускает новый раунд, если ставка валидна.
Этот скрипт управляет отдельными картами в игре BlackJack, включая их значения, отображение и сброс.
-
ResetCard()
- Описание: Сбрасывает значение карты и визуальное отображение.
-
SetSprite(Sprite newSprite)
- Описание: Устанавливает изображение карты, обновляя его новым спрайтом.
-
GetSpriteName()
- Описание: Возвращает имя текущего изображения карты.
-
SetValue(int newValue)
- Описание: Устанавливает новое значение карты.
-
GetValueOfCard()
- Описание: Возвращает текущее значение карты.
Этот скрипт управляет колодой карт в игре BlackJack, включая их значения, перемешивание, раздачу и отображение рубашки карты.
-
GetCardValues()
- Описание: Возвращает массив значений всех карт в колоде.
-
Shuffle()
- Описание: Перемешивает карты в случайном порядке.
-
DealCard()
- Описание: Возвращает первую карту из колоды и удаляет её из списка.
-
GetCardBack()
- Описание: Возвращает спрайт рубашки карты.
Этот скрипт управляет действиями игрока/дилера в игре BlackJack, включая начало раздачи, получение карт, проверку туза, корректировку денег и сброс руки.
-
StartHand()
- Описание: Раздает две карты и инициализирует руку игрока.
-
GetCard(GameObject card)
- Описание: Добавляет карту в руку игрока и обновляет его очки.
-
AceCheck()
- Описание: Корректирует значение туза, чтобы избежать превышения 21 очка.
-
AdjustMoney(int amount)
- Описание: Изменяет баланс игрока на указанную сумму.
-
ResetHand()
- Описание: Очищает руку и обнуляет очки игрока.
Эти скрипты помогают управлять различными аспектами сцен в игре BlackJack, такими как музыка, перезагрузка сцен, переключение сцен и управление громкостью.
Описание: Этот скрипт управляет воспроизведением фоновой музыки в игре.
-
PlayMusic()
- Описание: Начинает или возобновляет воспроизведение аудиотрека.
-
StopMusic()
- Описание: Останавливает текущий аудиотрек.
-
SetVolume(float volume)
- Описание: Устанавливает значение громкости и применяет его.
Описание: Этот скрипт отвечает за перезагрузку текущей сцены.
- RestartScene()
- Описание: Перезагружает активную сцену.
Описание: Этот скрипт управляет переключением между сценами в игре.
- SwitchToScene(string sceneName)
- Описание: Принимает имя сцены и загружает её.
Описание: Этот скрипт управляет общим уровнем громкости в игре.
- SetMasterVolume(float volume)
- Описание: Устанавливает общее значение громкости и применяет его.
- Первоначально возникли сложности с реализацией алгоритма перемешивания карт.
- Были проблемы с поиском Sprites, многие шаблоны имели некачественные модели/ Маленькие размера для большинства пользователей.
- Проблемы с неправильной работой анимаций на подобъектах, который находились на разных Layers in order, в следствии чего неправильно работающие алгоритмы и сцены.
- Проблемы с синхронизацией ходов и фишек в момент ставки и игры.
- Для перемешивания карт был использован алгоритм Фишера-Йетса.
- Множество моделей были отрисованы вручную, что позвонило удобнее компановать сцены, сохраняя удобство пользователям.
- Для правильной работы алгоритвом и анимаций, они были разделены два уровня Canvas, что способстовало возможности установки подуровней Layers in order и удобной компановке объектов.
- Синхронизация ходов была реализована с использованием флагов состояния.
- Разработчик: Буренков Григорий
- Email: skvorgrand@gmail.com