CMPT 213 Assignment 3 Marking Guide Assignment must be done individually or in pairs. Phase 1: Design [10 marks] [ 3] CRC - Reasonable break-out of classes and high-lever responsibilities. - List major class collaborators. [ 5] UML Class Diagram - Clear OOD: * Each class responsible for one thing. * Reasonably detailed break-out of classes to handle responsibilities. * Each class demonstrates correct encapsulation. * Consider use of immutable classes where applicable. * Respect the command/query separation guideline when appropriate. - Correct and meaningful class relationships - Some methods and/or fields listed (but should not have all!) (Should be at least enough to cover the big tasks for playing the game) [ 2] OOD Explained - Good description of how two (2) non-trivial tasks are completed. - Descriptions should highlight the responsibilities of each class, and rely on the relationships between classes as needed. Phase 2: Implementation [90 marks] [10] Data in [ 5] Correctly handle command line arguments [ 5] User interaction handles errors (for example, asking user to re-enter move) Example bad move "10D", "D 10", "Oops" [15] Game Display [10] Map display [ 5] Cheat map display (for cheat argument) [30] Board Generation [18] Correct fort layout (non-overlapping, correct shape) [10] Able to generate all possible polyomino shapes (may need to run game multiple times to see them) Check -----, +, T, Box+1 especially. [2] Displays error when not enough room for forts on board [35] Game-play [15] Correct game-play handling player shots [15] Correct game-play of opponent shots. [ 5] Correct handling of the score and win/loss [ 0] Correctly follow coding style guide. (-30 point max deductions) * Must have separate packages for game logic and the UI. * Very minor violations have no penalty (ex: having "int myCount=0;" (spacing wrong)) * Lose a few marks for consistent problems (like always getting the spacing wrong). * Larger penalties possible for horrific code Some specifics to check * JavaDoc-style comment on each class (not needed on methods/fields if clear and well named) * Correct indentation, brackets, spacing * Good intention revealing class, method, and variable names. * Easy to read code; refactored if it was complex! * Limited depth of nested logic (if-if-if-if-for-if-switch-...) * Classes that have a well focused purpose and high cohesion Forward to Dr. Brian if... - Material is suspiciously similar to another submission or code posted online.