Rice University - Comp 212 - Intermediate Programming

Spring 2007

Lecture #38 -  Games For Two


The game of Tic-Tac-Toe is a often used as an example for two-person games where each player takes turn to place a game piece on a two dimensional game board.  The discussion of such a game serves to illustrate the notion game trees, and in particular, the min-max principle: how to compute the values of the game tree nodes and select the best next move.  Even though these algorithms are initially described in high-level abstract terms, this is not reflected in their standard implementations.

Traditional Tic-Tac-Toe code from

As one can see from the above examples of Tic-Tac-Toe code, the algorithm code is intertwined with low-level game board implementation details.  This not only obscures the essence of the solution, but also makes it impossible to re-use in different types of games.  What  essentially “throw-away” code.

To remedy this situation, we seek to design an OO model for two-person games that enables us to express all facets of the games at the highest level of abstraction.  The result is a system of cooperating objects that possesses many of the essential  qualities in software engineering: correctness, robustness, extensibility, flexibility, and reusability.  The demo program below shows the what an OO game model can do.

The Best Little Tic-Tac-Toe Game in Texas

As one can see from the demo, the program is not really about playing Tic-Tac-Toe but is about using a 2-pesron game design as a vehicle to learn BIGGER concepts in computing:

PowerPoint Presentation: DP4Games.ppt


Copyright 2004, Dung X. Nguyen - All rights reserved.