Skip to content

skv0r/CardGame21

Repository files navigation

CardGame21

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

CardGame21 - это карточная игра, разработанная в рамках практики. Цель проекта - создать консольную игру с возможностью взаимодействия нескольких игроков.

Демо

Скриншот игры Ссылка на видео с демонстрацией игры ->(https://youtu.be/YoAv0CP3xms)

Технологии

Проект разработан с использованием следующих технологий:

  • Язык программирования: C#
  • Движок проекта: Unity
  • Среда разработки: Visual Studio Code

Уникальные особенности проекта

  • Опциональные варианты игры (Hit, Stand, Pass).
  • Новые правила для 21 (BlackJack). Включающие себя, простые правила из 21, а также исходы из классического BlackJack.
  • Использование случайных чисел для перетасовки карт.
  • Быстрая скорость работы.

Техническое описание проекта

Установка

  1. Клонируйте репозиторий:
    git clone https://github.com/skv0r/CardGame21.git
  2. Откройте проект в Visual Studio Сode.
  3. Соберите и запустите проект.

Описание скрипта GameManager.cs

Этот скрипт управляет основной логикой игры BlackJack, включая действия игрока и дилера, обработку ставок и завершение раундов.

Функции

  • DealClicked()

    • Описание: Начинает новый раунд игры, раздавая карты игроку и дилеру.
  • HitClicked()

    • Описание: Добавляет карту игроку и проверяет, не превысил ли он 21 очко.
  • StandClicked()

    • Описание: Завершает ход игрока и начинает ход дилера.
  • HitDealer()

    • Описание: Добавляет карту дилеру и проверяет, не превысил ли он 21 очко. Продолжается до тех пор, пока дилер не наберет минимум 17 очков.
  • RoundOver()

    • Описание: Проверяет итог игры и определяет победителя. Сравнивает очки игрока и дилера и обновляет состояние игры.
  • BetClicked()

    • Описание: Обновляет ставку игрока и запускает новый раунд, если ставка валидна.

Описание скрипта CardScript.cs

Этот скрипт управляет отдельными картами в игре BlackJack, включая их значения, отображение и сброс.

Функции

  • ResetCard()

    • Описание: Сбрасывает значение карты и визуальное отображение.
  • SetSprite(Sprite newSprite)

    • Описание: Устанавливает изображение карты, обновляя его новым спрайтом.
  • GetSpriteName()

    • Описание: Возвращает имя текущего изображения карты.
  • SetValue(int newValue)

    • Описание: Устанавливает новое значение карты.
  • GetValueOfCard()

    • Описание: Возвращает текущее значение карты.

Описание скрипта DeckScript.cs

Этот скрипт управляет колодой карт в игре BlackJack, включая их значения, перемешивание, раздачу и отображение рубашки карты.

Функции

  • GetCardValues()

    • Описание: Возвращает массив значений всех карт в колоде.
  • Shuffle()

    • Описание: Перемешивает карты в случайном порядке.
  • DealCard()

    • Описание: Возвращает первую карту из колоды и удаляет её из списка.
  • GetCardBack()

    • Описание: Возвращает спрайт рубашки карты.

Описание скрипта PlayerScript.cs

Этот скрипт управляет действиями игрока/дилера в игре BlackJack, включая начало раздачи, получение карт, проверку туза, корректировку денег и сброс руки.

Функции

  • StartHand()

    • Описание: Раздает две карты и инициализирует руку игрока.
  • GetCard(GameObject card)

    • Описание: Добавляет карту в руку игрока и обновляет его очки.
  • AceCheck()

    • Описание: Корректирует значение туза, чтобы избежать превышения 21 очка.
  • AdjustMoney(int amount)

    • Описание: Изменяет баланс игрока на указанную сумму.
  • ResetHand()

    • Описание: Очищает руку и обнуляет очки игрока.

Вспомогательные файлы для сцен

Эти скрипты помогают управлять различными аспектами сцен в игре BlackJack, такими как музыка, перезагрузка сцен, переключение сцен и управление громкостью.

MusicScript.cs

Описание: Этот скрипт управляет воспроизведением фоновой музыки в игре.

Функции

  • PlayMusic()

    • Описание: Начинает или возобновляет воспроизведение аудиотрека.
  • StopMusic()

    • Описание: Останавливает текущий аудиотрек.
  • SetVolume(float volume)

    • Описание: Устанавливает значение громкости и применяет его.

SceneRestart.cs

Описание: Этот скрипт отвечает за перезагрузку текущей сцены.

Функции

  • RestartScene()
    • Описание: Перезагружает активную сцену.

SceneSwitcher.cs

Описание: Этот скрипт управляет переключением между сценами в игре.

Функции

  • SwitchToScene(string sceneName)
    • Описание: Принимает имя сцены и загружает её.

VolumeVolume.cs

Описание: Этот скрипт управляет общим уровнем громкости в игре.

Функции

  • SetMasterVolume(float volume)
    • Описание: Устанавливает общее значение громкости и применяет его.

Проблемы и решения

Проблемы

  • Первоначально возникли сложности с реализацией алгоритма перемешивания карт.
  • Были проблемы с поиском Sprites, многие шаблоны имели некачественные модели/ Маленькие размера для большинства пользователей.
  • Проблемы с неправильной работой анимаций на подобъектах, который находились на разных Layers in order, в следствии чего неправильно работающие алгоритмы и сцены.
  • Проблемы с синхронизацией ходов и фишек в момент ставки и игры.

Решения

  • Для перемешивания карт был использован алгоритм Фишера-Йетса.
  • Множество моделей были отрисованы вручную, что позвонило удобнее компановать сцены, сохраняя удобство пользователям.
  • Для правильной работы алгоритвом и анимаций, они были разделены два уровня Canvas, что способстовало возможности установки подуровней Layers in order и удобной компановке объектов.
  • Синхронизация ходов была реализована с использованием флагов состояния.

Контакты

About

Card Game Blackjack

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages