CISC370, Summer 2006, Project 1: Freecell (Total 200 pts) Due July 13 TA: Ke Li Java coding style - Formatting of code < 80 column, no wraparound -4 pts Late penalty: 10% off each day No hard copy submitted: 10% off 1. Correctness (70 pts) (1) Passes Tests (60 pts) - Start a new game - all cards show up; empty piles show up 10 pts -- First time -- Again, when cards are in foundation or free cell piles - Enforced rules 20 pts -- To foundation piles: same suite, one number higher; starts with Ace -- To tableaux piles: alternate suite, one number lower; empty piles: any card -- To cells: any card, cannot have another card already - Winning a game - all cards in foundation piles 10 pts -- Before starting game (dealing cards), click around to see if reports that user has won already. -- Alternative way to test outside of UI? - Undoing moves 10 pts -- Cards move appropriately, view gets updated -- Try to undo a move after starting a new game (must clear the "lastmove" after starting a new game) - Quit 10 pts -- Program exits when quit is selected from menu (2) User Menu (10 pts) - New game - Undo move - Quit 2. Organization (40 pts ) - Good use of inheritance - Clear separation of concerns: model, view, controllers - Create new classes as appropriate - Create static methods as appropriate 3. Testing (20 pts) - Input, Expected Output for large subset of Tests - Test model outside of GUI, when appropriate 4. Style (30 pts) - Alignment, Spacing - Naming - Readability 5. Documentation (30 pts) - Javadoc - "Internal" comments - README -- description, -- defense of design choices, -- limitations descriptions 6. Extra Credit (up to 25 pts) - Multiple undo operations (5 pts) - "Retry" game (3 pts) - Autoplay and "conservative" autoplay (10 pts) - Best times, GUI timer (5 pts) - Number of moves to complete the game. Keep track of fewest moves (3 pts) - Customization Settings (5) menus, double click - Move stacks of cards (5) - Others