Game #1
Reversi the Kirby

For one of my assignments in Object-Oriented Programming, I was tasked with programming a game called Reversi. Reversi is a multi-player game where users are represented by either a black (represented by Kirby in our version) or white (Meta Knight) disc; both compete against each other and aim to flip as many of the opponent's discs as possible. Whoever has the most number of discs on their side wins the game. A standard game of Reversi employs a square-shaped board, but for our assignment, we were instructed to design a hexagonal version of Reversi. We used a Model View Controller approach when designing our program.

Graphical User Interface

Reversi the Kirby GUI Reversi the Meta Knight GUI

Additional Features

Game #2
Klondike Solitaire

For one of our first projects in Object-Oriented Programming, we designed Klondike (also known as Solitaire), a popular single-player card game played with a standard 52-card deck. The objective is to build four foundation piles in ascending order from Ace to King, with each pile representing one suit.

Klondike Game Runthrough Klondike Game Runthrough 2

Implementation Details

This assignment required implementing the Model-View-Controller (MVC) design pattern. The view displays a textual representation showing the piles, current score, and the first card of the draw pile. Users interact with the game through textual commands sent to the controller, which updates the model accordingly.

Game Variants

Design Approach

Abstraction & Code Reusability

To avoid redundant code, I abstracted the basic rules of Klondike that apply across all three variants into an abstract base class. Each variant (Basic, Whitehead, and Limited Draw) extends this abstract class, inheriting common functionality while implementing their specific rule variations. This design demonstrates proper object-oriented principles including inheritance, polymorphism, and the DRY (Don't Repeat Yourself) principle.

← Back to Games