Cache calls to gameBoard.getPiece(#, #)
gameBoard.getPiece(#, #) should be called twice per move/attack no matter what. Once for x1 y1, and once for x2 y2.
This is to make mocking easier.
If need be, these cached references should be passed to other checking methods to avoid unneeded .getPiece calls.