PREVIOUSLY KNOWN CLASSES: Tank Projectile ProjectileAP ProjectileHE NEW CLASSES: 1> Iteration 0: Initial Abstractions Game - the main application class Board - the 8x8 grid battlefield Player - represents a player in the the game Tank - represents an armor vehicle Projectile - represents a bullet that tanks fire 2> Iteration 1: Top-Level Abstractions Game class - board: Board - players: Player[] - currentTurn: Integer + start() + processMovement(Player, Direction) + processShot(Player, Projectile, Position) + nextTurn() + isGameOver() Board class - cells: Cell[][] - size: Integer + Board(Integer size) + getCell(Position pos) + isValidPosition(Position pos) + placeTank(Tank tank, Position pos) + moveTank(Tank tank, Position newPos) + getTanksInRadius(Position center, Integer radius) Cell class - position: Position - tank: Tank + Cell(Position pos) + isEmpty() + setTank(Tank t) + getTank() Position class - x: Integer - y: Integer + Position(Integer x, Integer y) + getDistance(Position other) + getAdjacent() Player class - id: Integer - tanks: Tank[] - control: Controls + Player(Integer id, Controls controls) + addTank(Tank tank) + removeTank(Tank tank) + hasLost() + getActiveTank() + nextTank() Controls class - moveUp: KeyCode - moveDown: KeyCode - turnCannonLeft: KeyCode - turnCannonRight: KeyCode - fireKey: KeyCode + createPlayer1Control() + createPlayer2Control()