The upper part of the JFrame (i.e., the class Player) should be occupied by a threaded Canvas. The thread is responsible to execute the animation loop described in class using page flipping. Use the methods start, update, draw of the Board class for staring, updating, and drawing the board.
Implement the update and draw in the class Factory. These methods are called from the corresponding methods in the class Board
The class Robot has a number of animations which can be selected using the method setCurrentAnimation. These animations should be started in the methods turn, halfturn, and move of this class. If the robot moves on the board (or turns), the image should slowly move (or turn) to this new location. Once the animation is completed any thread waiting in waitForRobot has to be notified. Implement those methods accordingly.