add rotate
refactor moveBy and rotateBy
add collision detection and tick