┌─────────────────────────┐ │Screen │ ├─────────────────────────┤ │+ **void** draw() │ │+ **void** keyPressed() │ │+ **void** mouseClicked()│ └─────────────────────────┘ | | | ┌─────────────────────────────────────────────────────────────────┐ | │PlayingScreen │ | ├─────────────────────────────────────────────────────────────────┤ | │- **Player[]** game │ | │- **Player** currentPlayer │ | │- **int[]** winnerIndices │ ┌──────────────────────────────────────────┐ | │- **boolean** gameIsDraw │ │GameOverScreen │ | │- **String** highScoreText │ ├──────────────────────────────────────────┤ ┌─────────────────────────┐ │- **int** size │ │- **PlayingScreen** screen; │ │SplashScreen │ │- **int** xOffset │ │--- │ ├─────────────────────────┤ │- **int** yOffset │ │+ GameOverScreen(**PlayingScreen** screen)│ │+ **void** draw() │ │- **int** cellSize │ │--- │ │+ **void** keyPressed() │ │--- │ │+ **void** draw() │ │+ **void** mouseClicked()│ │+ PlayingScreen() │ │+ **void** keyPressed() │ └─────────────────────────┘ │--- │ │+ **void** mouseClicked() │ │+ **void** draw() │ └──────────────────────────────────────────┘ │+ **void** keyPressed() │ │+ **void** mouseClicked() │ │- **void** drawBoard() │ │- **void** drawWinnerIndices() │ │- **void** drawPlayerMarkers() │ │- **void** checkWinner() │ │- **void** endGame(**int[]** idx, **Player** m, **boolean** draw)│ └─────────────────────────────────────────────────────────────────┘