Othello thumbnail

Othello

Developed with: EclipseIDE

Language(s): Java, JavaFX

Development Time: 4 days

Team Size: 1

About

This Othello project is a game application with multiple game modes including Human vs. Human, Human vs. CPU, and CPU vs. CPU. It was built entirely in Java using JavaFX for the GUI. A game that began as a simple in-class assignment turned into a passion project with modular applications featuring undo/redo functionality, game saving/loading, player strategy customization, and a game history log.

Technical Breakdown

I engineered the entire application from scratch, applying proper MVC architecture to cleanly separate game logic, UI, and user interaction. The view dynamically updates the board state based on the model, while the controller serves as the intermediary for all game actions. The GUI features dropdown menus for selecting player strategies (Human, Greedy CPU, or Random CPU), clickable and coordinate-based move inputs, and fully interactive turn handling. Additional functionality includes the ability to save and load games using file I/O, restart games, and maintain a turn-by-turn move history allowing for user to undo/redo game states. A few examples of design patterns I implemented are: • Strategy Pattern for player types, allowing users to switch between AI strategies or manual play. • Visitor Pattern for loading/saving game state to and from files, using abstract visitors and concrete operations. • Command Pattern to support undo and redo operations. The GameHistory interface tracks and executes these commands reliably, even across saved sessions.

What I Learned

This project solidified my understanding of design patterns and their practical application in Java software. I saw firsthand how powerful clean architecture can be when building systems with many features. It also gave me insight into GUI implementation and strengthened my understanding of how users prefer to interact with an interface.

Additional Notes