Skip to content

Unicorn-Dev/Minimal.io

Repository files navigation

Игра Minimal.io

Это кроссплатформенная игра Minimal.io. При создании авторов вдохновила игра SuperBlust. В качастве базового каркаса игры была взята игра alliens invasion из учебника Python Crash Course a hands-on, Project-Based Introduction to Programming by Eric Matthes.
На данный момент есть реализация игры на Python (для сольной игры и игры с партнером).

В стадии разработки

Проект находится на стадии бета-тестирования. Есть много недочётов, которые мы постараемся исправить. Можно играть аккуратным образом.

В дальнейшем игра будет развиваться в кросс-платформенном режиме (desktop-версии версии) и возможно появится возможность игры с двумя играками по онлайну.

Архитектура программы

UML

  1. Классовая UML-диаграмма программа доступна в данном репозитории и на данном сайте.
  2. Sequence UML-диаграмма программа доступна в данном репозитории и на данном сайте.
  3. Use Case UML-диаграмма программа доступна в данном репозитории и на данном сайте.

Запуск игры

Для начала необходимо установить все пакеты по списку из requirements.txt коммандой:

$ pip install -r requirements.txt

или

$ pip3 install -r requirements.txt

После чего запустить файл main.py интерпретатором Python (для пользователей mac необходима версия Python 3.7.2, иначе работоспосбность программы разработчиками не гарантируется):

$ python main.py

или

$ python3 main.py

Правила игры можно найти

Тут.

Обратная связь

Все пожелания и замечания можно писать в телеграме @AlexFreik, @cosdar.

About code

  1. Patterns:
    1. Паттерн Деоратор static_vars (361 стр system/game_funktions.py) для счетчика тиков игры, чтобы регулировать чатоту обновления картинки (она обновляется реже, не на каждый основной цикл), благодаря чему экономится вычислительная мощность (обновление экрана доволно затратная операция)
    2. Паттерн Фасад (в файле system/engine.py)
    3. Паттерн комманда в "кнопках" (для комманды "завершить игру")
    4. Паттерн  CoR ...
    5. Паттерн Observer для нашей игры не нужен. Поэтому и не добавлен. Единственно где он мог бы пригодиться, это функции изменяющие статус игры (активния / неактивная / в процессе вабора режима), и функции зависящие от статуса. Но для этого мы используем просто "глобальные переменные" которые видны из любого файла где они нужны, и данный паттерн ни уменьшит количество строчек кода ни колличество связей, поэтому не особо и нужен.
    6. Паттерн Template (для двух конкретных классов, наследующихся от класса Ball: Hero и Enemy). У обоих классов реализуется шаблонная функция update, которая выполняет набор абстрактных для класса Ball функций: check_edges(), update_coords(), fire_bullet()). Паттерн уменьшает количество повторяющихся строчек кода в схожих по реализации и по функциональности классов Ball и Enemy и предастовляет более единый интерфейс для работы с ними, поэтому полезен.
  2. Базовая обработка исключений. Теперь если пару вылетит только какая-то из функций в игре игра не вылетет (но трейсбек как и следует выведется, пока просто в консоль). Если же текущая игра конкретно ляжет, то просто начнется новая с сохранением данных прогресса. В крайнем случае когда ложится все, программа завершается и выводит трейсбек.

About

Cross-platform Python game

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages