Футбольный менеджер ТЗ

696
.
╭∩╮ (`-`) ╭∩╮
# desay (25.02.2016 / 19:14)
AlkatraZ, в спорт потянуло старого
Не, совсем не в спорт.
А просто разминаю мозг головоломкой с центральным алгоритмом задачи.
.
AlkatraZ, это надо,но мне на работе таких разминок предостаточно Когда просят сделать то,что,сами не могут обьяснить))
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Пойдем дальше, точнее "глубже" и спустимся до единицы - игрока на поле.
Для этого создаем класс, в котором методами будут описаны возможные действия игрока.

Вот тут то и напрягите мозги.
ЧТО может сделать игрок и с какой вероятностью?

ИГРОК БЕЗ МЯЧА
- бежать в сторону мяча
- бежать на защиту ворот
- попробовать отобрать мяч у соперника (если рядом с мячем)
- принять пас ногой
- переслать пас головой
- [остальное сами додумайте]

ИГРОК С МЯЧЕМ
- рвануть к воротам
- отдать пас (удачно, или неудачно)
- пробить по воротам (если близко от ворот)
- нарушить правила
- [ну и далее додумайте]

Чтоб игра получилась не тупой, надо как то учитывать положение игрока на поле, расстояние до ворот и от игрока до игрока. Это сложно, но без этого нормального матча не получится, иначе будет: подсчитал общие очки каждой команды и вывел победителя
.
╭∩╮ (`-`) ╭∩╮
Это разумеется, если нужен "псевдоживой" матч, с онлайн комментариями, возможностью следить за действиями игрока (без вмешательства) и в перерывах принимать оперативные действия.
---
А иначе все намного проще.
Никакого цикла не надо, просто сложной формулой, на основе очков прокачки игроков комманд, сразу вычисляешь победителя.
.
╭∩╮ (`-`) ╭∩╮
И разумеется, для каждого полевого игрока надо писать свой класс: для вратаря, защитника, нападающего и т.д.. Для каждого будет свой алгоритм поведения.
Если нападающий с большей вероятностью сделает рывок к воротам, то защитник скорее всего (если далеко от ворот) отдаст пас своему игроку.
.
╭∩╮ (`-`) ╭∩╮
На ООП, используя структурный подход и наследование, можно реализовать довольно сложные алгоритмы поведения, при том не сильно запутывая код. Есть несколько подходящих под данную ситуацию паттернов проектирования.
.
╭∩╮ (`-`) ╭∩╮
ЗАКЛЮЧЕНИЕ

Посему, начинайте обсуждать с конца и с главного. То есть, с самого матча.
- Как будете определять победителя?
- Нужны ли подробные каменты хода матча?
- Нужен ли поведенческий алгоритм полевых игроков?
- Может просто тупо "померять пиписьки" и без всяких каментов сразу определить. кто выйграл, а кто проиграл?
Всего: 27