| dx, -dx | | dy, -dy | | get dy, W pressed | -dy, get dy | get dy, S pressed | dy | get dx, A pressed | -dx, get dx | get dx, D pressed | dx | loop | input, player, enemies, cull, re-loop | input | poll | player | get dx:max, get dy:max || loop | update enemy | track player | enemies, last enemy | | enemies | update enemy, next enemy | cull | remove dead enemies | re-loop | loop | get dy, W pressed | -dy, get dy | get dy, S pressed | dy | get dx, A pressed | -dx, get dx | get dx, D pressed | dx | loop | input, player, enemies, cull, re-loop | input | poll | player | get dx:max, get dy:max | update enemy | track player | enemies, last enemy | | enemies | update enemy, next enemy | cull | remove dead enemies | re-loop | loop