Это кроссплатформенная игра Minimal.io. При создании авторов вдохновила игра SuperBlust. В качастве базового каркаса игры была взята игра alliens invasion из учебника Python Crash Course a hands-on, Project-Based Introduction to Programming by Eric Matthes.
На данный момент есть реализация игры на Python (для сольной игры и игры с партнером).
Проект находится на стадии бета-тестирования. Есть много недочётов, которые мы постараемся исправить. Можно играть аккуратным образом.
В дальнейшем игра будет развиваться в кросс-платформенном режиме (desktop-версии версии) и возможно появится возможность игры с двумя играками по онлайну.
- Классовая UML-диаграмма программа доступна в данном репозитории и на данном сайте.
- Sequence UML-диаграмма программа доступна в данном репозитории и на данном сайте.
- 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.
- Patterns:
- Паттерн Деоратор static_vars (361 стр system/game_funktions.py) для счетчика тиков игры, чтобы регулировать чатоту обновления картинки (она обновляется реже, не на каждый основной цикл), благодаря чему экономится вычислительная мощность (обновление экрана доволно затратная операция)
- Паттерн Фасад (в файле system/engine.py)
- Паттерн комманда в "кнопках" (для комманды "завершить игру")
- Паттерн CoR ...
- Паттерн Observer для нашей игры не нужен. Поэтому и не добавлен. Единственно где он мог бы пригодиться, это функции изменяющие статус игры (активния / неактивная / в процессе вабора режима), и функции зависящие от статуса. Но для этого мы используем просто "глобальные переменные" которые видны из любого файла где они нужны, и данный паттерн ни уменьшит количество строчек кода ни колличество связей, поэтому не особо и нужен.
- Паттерн Template (для двух конкретных классов, наследующихся от класса Ball: Hero и Enemy). У обоих классов реализуется шаблонная функция update, которая выполняет набор абстрактных для класса Ball функций: check_edges(), update_coords(), fire_bullet()). Паттерн уменьшает количество повторяющихся строчек кода в схожих по реализации и по функциональности классов Ball и Enemy и предастовляет более единый интерфейс для работы с ними, поэтому полезен.
- Базовая обработка исключений. Теперь если пару вылетит только какая-то из функций в игре игра не вылетет (но трейсбек как и следует выведется, пока просто в консоль). Если же текущая игра конкретно ляжет, то просто начнется новая с сохранением данных прогресса. В крайнем случае когда ложится все, программа завершается и выводит трейсбек.