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

One of the first tasks I performed for this project was writing the Requirements Document, in which I describe end-user program features as well as features of the engine available to game developers. There are a few changes that I have made in the final version, compared to this initial feature list, which I will explain here.

An important aspect of Solitaire Pack is the game menu, which allows you to choose which game you want to play. The original document specified:

  • 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

I ended up not liking the way the menu was being displayed, so I decided to make several changes. First, the game menu always keeps track of what is the "active game." Initially, the active game is the first game of the first registered game library. When the user single-clicks on a game link, that game becomes the active game. Double-clicking on a game link hides the menu and starts the game.

The list of games is displayed on the left side of the window, with details about the active game displayed on the right. The following information is displayed:

  • The name of the game
  • The game's difficulty
  • A link to toggle whether to show or hide the Game Instructions help pane
  • A link to start playing the game
  • The author of the game's library
  • The e-mail address of the author
  • The web site address of the author

I'm not very satisfied with this UI for the game menu either, but it gets the job done. Future versions of the program would hopefully use a better menu interface.

A feature that originally I had planned to leave out of this version was that of sound events. Since I had already developed a component (bmws_cpsounds) which handled all the grunt work of tracking sound events and presenting a user interface for changing them, I decided to add this feature. The game is much more enjoyable when a fanfare plays when you win.

An aspect of the developer feature specifications that I changed significantly is that of dealing with the fragment. The original spec stated that fragments are "based upon an existing pile"; you would create a fragment based on a pile, add cards from that pile to the fragment, and then move them to wherever they are supposed to go. After designing my animation algorithm, I decided that I would eliminate the restriction that the fragment can only contain cards from the pile upon which it was based; there is now simply one fragment, to which you can add anything from any pile. Although this ended up complicating other aspects of the program, it is a feature which I found to be useful when implementing the game La Belle Lucie.

Besides these things listed here, I haven't deviated much at all from the original requirements document. For more information on what features future versions of Solitaire Pack would support, see Future Enhancements.

  May 9, 2002 jmhoersc@mtu.edu