Design Patterns in OO Programming
Fall, 2009

CIS 4930
Term Project

 

Summary

Many games use customized card decks. On inspection, one will notice that the structure and layout of the cards (or within subsets of them) follows a regular pattern. Using a standard graphics program to construct each card individually from the source graphics (and text) would be a tedious, time consuming process—something best left to a computer. Your job is to design a script-driven card generator (SDCG) system.

Getting started

ASAP, familiarize yourself with the resources listed below. Meet with your team: ensure that you share a common understanding of how SDCGs work and identify the functionalities your platform will need to provide (i.e., develop the requirements specification). You will need to consider aspects of the physical card —

— and its representation —

— so they will be reflected in the system's capabilities.

After you have finalized the the system requirements, begin designing the system. Study the pattern catalog (including those we have not yet covered) and identify appropriate design patterns. You will need to have a good justification for why you did (and did not!) chose a particular pattern to solve a design issue.

What you shouldn't do

Please do not research how others have designed (and implemented) SDCGs. Obviously you need to understand what they do and how they work so you can apply your design skills to that domain. (To help understand where the proverbial line is drawn: if the project were to design an accounting system, one would need to understand the fundamental concepts and principles of accounting—but one would not need to study how others have implemented such systems.)

Antecedents

Exemplar: card images

One can spend a lot of time exploring the galleries at BoardGameGeek (and you are encouraged to do so). Here is a small sampling of card images that illustrate the kinds of things your SDCG should be able to produce:

Exemplar SDCG: nanDECK

The system that inspired this project is called nanDECK (homepage). Had I stumbled upon it's homepage first, I would have quickly moved on, not realizing its potential for generating beautiful cards (when supplied with a suitable script and images, of course). Be sure you download the manual, as it describe more commands than appear on the homepage and in the tutorials. You may also find the nanDECK Yahoo! group a useful resource.

I discovered nanDECK via I Don't Know, What Do You Want To Play?. Visit the page and pay particular attention to the forums articles on using SDCGs, the gallery for samples cards, and the files section for sample scripts.

Project

Required

Design (notimplement) a system that takes as input:

and outputs appropriately named, rasterized bitmaps (one per card). The underlying engine should be modular and (nicely) extensible.

The scripting language

While you may design a system that interprets the nanDECK scripting language, I would strongly urge you to design your own scripting language (I find nanDECK'S can be cumbersome with large, complex scripts).

Bonus: not required

Design a WYSIWYG tool for laying out a card-style template. The tool shall output the corresponding script.

This website is an original work, Copyright © 2009 by Dave Small. All rights reserved.