Удар в генераторе реализован в виде отдельных сущностей.
реализация каждого из видов удара в настоящий момент существенно различается.
На вход функции удара с игры подается игрок с мячом, который решился нанести удар по воротам. Берутся координаты этого игрока, игрок выбирает какой тип удара он будет делать (прямой удар, обводящий удар, удар щекой). Сморится по какой траектории мог бы полететь мяч.
Площадь ворот условно делится на 21 клетку по линии ворот и 7 клеток в высоту.
…(зарезервированное место, для описания, которое пока не написано)…
Удар может быть заблокирован защитниками.
Условно считается, что защитники могут закрыть собой часть площади ворот. При этом обыгранные игрок (находящиеся в списке обыгранных не учитываются).
Заблокировать удар может либо защитник находящий в клетке с бьющим, либо защитник, находящий в 6,2.
От закрытости бьющего игрока зависит то, сколько клеток ворот будет «занято» защитниками.
Попадание мяча при ударе в клетку, «занятую» защитником, еще не означает что защитник смог блокировать удар. Для каждой клетки считается вероятность того, что защитник смог помешать полету мяча. Эта вероятность зависит от числа защитников и от силы каждого из них с учетом наличия Ускорения и Выбора позиции (в равной мере). (в равной мере).
Удар блокирует самый сильный игрок с учетом наличия у него Ускорения и Выбора позиции (в равной мере).