Home
   Home  |  Preliminary Docs  |  Design Diagrams  |  Reference  |  Development Docs  |  Download  |  Source Code  |  Final Reports  |
Requirements Document

Intended Consumer Market

Solitaire Pack targets end users of all computer skill levels, from novice to advanced. The interface will be easy for inexperienced users to learn, while power users can customize many aspects of the games and the interface. In addition, this product targets all people regardless of their skills at particular solitaire games. Online help will guide the new solitaire player and the experienced alike.

The project will be developed for an English-specific audience; however, the program will be developed in a way that would allow for easy localization.

Developer Audience

One of the main goals for Solitaire Pack is to allow game modules ("libraries") to be "plugged into" the product at runtime. This allows me to develop additional games after releasing the product, as well as allows third parties to develop their own games.

As outlined in "Preliminary Design Decisions," the target platform for this project is Windows, and the underlying architecture will be the Component Object Model (COM). Thus, third-party developers must have experience with Windows and COM development.

End-user Features

Note: I will not be implementing all of these features. Those marked with a * are features that would be ideal, but will not be present in this release due to time limitations.

  1. Installation/maintenance:
    • Program is installed via a standard "Setup" program, which copies program files to installation folder of the user’s choice, and creates Start menu entries.
    • Removable via the Windows Control Panel’s Add/Remove Programs applet
    • The standard games library will be "registered" along with the program
    • Additional game libraries can be registered via a menu option
    • * Libraries can be uninstalled via a menu option or game manager
    • * If a registered library cannot be found, the user is notified, and can try to find the library file or remove its registration
  2. Startup Experience
    • Splash screen, displaying application name/logo, copyright, and product registration status
    • Splash screen remains while the application initializes itself
    • First screen presented to the user is the "Game Menu," listing the games that the registered game library(s) contain
    • Game names are accompanied by a small, decorative suit image (heart, spade, ...) (together, called the "game link")
    • When hovering over a game link, part of the screen labeled "Game Details" will display the following:
      • The library that contains the game
      • A button or link that will display library information (author, email, etc.)
      • Game difficulty (easy, medium, hard, ...)
      • A link that will display the game’s rules
    • Clicking on the game link will leave the Game Menu and invoke the game
  3. Game Control
    • A game will be dealt automatically when the game is invoked from the
    • The menu bar’s "Game" menu (not to be confused with the "Game Menu") contains the following items:
      • "Deal", which ends the current game and deals a new one
      • "Undo" and "Redo" step backward and forward through the user’s moves (no maximum undo level)
      • "Autoplay" plays all possible cards to any foundations (game-specific behavior)
      • "Game Menu" ends the current game and returns to the "Game Menu"
      • "Exit" quits Solitaire Pack
    • The current score is displayed in the status bar
  4. Game Playing
    • The contents of the games are determined by the individual game, depending on which game the user selected from the Game Menu
    • Card faces, card backs, and pile base images (i.e., images which indicate that the pile is a foundation, for instance) are standard between all games
    • Moving cards:
    • Cards are moved by drag and drop
    • Clicking on a card and holding the mouse button, and then moving it, will do one of the following, depending on the rules of the game:
      • "Pick up" the card itself and allow it to be moved
      • "Pick up" the card and accompanying cards if they must be moved as a unit
      • Do nothing at all, if the card cannot be moved
    • When the mouse button is released:
      • If the "picked up" card(s) are released over a pile, the rules of the game determine if the cards can be added to the pile
      • If the cards cannot be added, or are not released over a pile, the cards return to their original position
    • Right-clicking on a card performs Autoplay on the individual card, playing it to a foundation if possible (game-specific)
    • Single left-click is used to "turn over" face down cards, etc.
    • Winning: When the game is won, the game will be disabled and a 3D animation will be displayed
  5. Help/Registration
    • Two different types of help are available
    • * Solitaire Pack help (which opens a separate Help window) contains information on using the main program
    • Game help opens the "Help Pane" along the bottom of the window
    • Pane can be resized and closed
    • Pane contains instructions for the specific game
    • "About" menu item displays the About box, which displays:
      • Program/company information, copyright
      • Web site link
      • Registration status
    • "Register" menu item allows the user to enter their name and registration code
    • In this version, registration status makes no difference in program functionality
  6. Solitaire Pack Options
    • Toggle card animation on and off
    • Toggle tool tips on and off
    • * Display elapsed time/pause functionality
    • * Customize card backs
    • * Choose between different card face image sets
    • Choose background image, colors
    • * Choose sounds for events such as shuffle, game won, card flips, etc.
    • Toggle 3D animation (when a game is won) on and off
    • Toggle status bar (displaying score) on and off
    • Play in full screen mode


Developer Features

This section describes the capabilities of the game engine that are used in creating games.

  1. Piles
    • Engine provides the means to create piles of various types
    • The "Deck" type includes 52 cards; multiple decks can be used
    • Piles can be shuffled (not just decks, but any pile)
    • X, Y coordinates of the piles can be set
    • Width, height of the piles is determined by the number of cards in the pile, and the type of pile
    • The game can retrieve the width and height of an existing pile
    • The game can retrieve the width and height that a pile would take up, providing its type and number of cards
    • Game receives notification when a pile is clicked
    • The pile’s "base image" can be customized
    • Game can query for number of cards
    • Game can retrieve a specific card object from the pile
    • Game can add and remove cards from a pile
    • * The game can define custom pile types (with custom positioning rules)
    • A pile can have tooltip help text associated with it
    • The tooltip can also display the number of cards in the pile, optionally
  2. Cards
    • A card has the following traits:
      • An "index" (0-52 for the standard cards, * or 53 for Joker)
      • A "rank" (Ace through King)
      • A "suit" (Heart, Diamond, Spade, Club)
    • All cards are part of a pile
    • Their positions cannot be set directly; they are determined by the pile that they are in
    • A card can ask the game to "autoplay" it if possible
    • * The game can create additional, single cards, separate from a whole deck (i.e. Jokers)
  3. Custom Game Commands and Options
    • Game can provide custom commands
    • Engine determines where these commands are actually displayed (menu, link in window, etc.)
    • Command consists of an identifier, a text label, and brief "help" information
    • * Engine provides the ability to display/let the user change options for the specific game
  4. Undo/Redo Support
    • The game engine automatically tracks moves and provides built-in undo and redo, without specific interaction with the game
    • The engine provides the "Game Data" mechanism, through which the game object MUST store all "state data"
    • This way, state data will be rolled back and forward as the user undoes/redoes moves.
  5. Game Play
    • The engine displays the score that the game gives it
    • The engine notifies the game that the user wants to Autoplay the game
    • The engine provides the "fragment" mechanism:
    • Fragment is based upon an existing pile
    • Cards, when moved, are added to a fragment
    • Fragment’s contents can be moved to another pile
  January 27, 2002 jmhoersc@mtu.edu