(07)
Chinese Checkers
Building a Chinese Checkers game with AI decision-making, multiplayer support, and an interactive graphical interface.
Overview
As the final project for Carnegie Mellon's introductory computer science course, I developed a complete implementation of Chinese Checkers in Python using Tkinter. The project included local multiplayer gameplay, an AI opponent, move hints, animations, and timed turns, requiring the design of both the game engine and the graphical user interface.
The project emphasized object-oriented software design, algorithm development, and interactive application programming.
Software Design
I designed the application using an object-oriented architecture to separate the game state, user interface, and gameplay logic. Because the Chinese Checkers board is not a rectangular grid, one of the primary challenges was representing the board and mapping between board coordinates and screen coordinates.
I developed coordinate conversion functions that accounted for the offset between alternating rows, enabling accurate rendering, mouse interaction, and move validation. I also implemented the complete game logic, including legal move generation, multi-jump sequences, turn management, win detection, and animated piece movement.
To support smooth gameplay, I implemented animated piece movement by continuously updating the position of moving pieces over time, creating a more responsive and intuitive user experience.
AI & Algorithms
I implemented a Minimax search algorithm to enable single-player gameplay against an AI opponent. The AI evaluates future game states by recursively exploring possible move sequences and selecting the move with the highest evaluation score.
The same search framework also powers the game's hint system by identifying strong candidate moves for the player. Implementing the AI required building a tree of game states and efficiently traversing it using recursive search.
Additional game logic was developed to correctly enforce chained jump sequences, ensuring that players completed all available jumps before ending their turn.
Results
The completed application supports multiplayer gameplay, AI opponents, move hints, animations, and timed turns within a fully interactive graphical interface.
This project strengthened my understanding of object-oriented programming, recursion, algorithm design, event-driven programming, and GUI development. It also provided experience designing a moderately complex software system from the ground up.