Congratulations, you've finished Section 3. To make it easy to verify your progress I've included here an "inventory" of the classes and methods related to this Laser Game development that you should have in your Squeak image at this point.
| System Category | Class Name | Defined | Instance Methods | Class Methods |
|---|---|---|---|---|
| Kernel-Objects | Object | revisit: | ||
| Laser-Game-Graphics | BlankCellRenderer | Yes | ||
| Laser-Game-Graphics | BlankCellRenderer | modelClass | ||
| Laser-Game-Graphics | CellClickRegion | Yes | ||
| Laser-Game-Graphics | CellClickRegion | clickRegionForPoint: | ||
| Laser-Game-Graphics | CellClickRegion | mouseUpWithinCellAtPoint:cell:withinGrid: | ||
| Laser-Game-Graphics | CellClickRegion | scaledHintArrowAndOffsetFromWithinCell: | ||
| Laser-Game-Graphics | CellClickRegion | sortedSubclasses | ||
| Laser-Game-Graphics | CellClickRegionIgnore | Yes | ||
| Laser-Game-Graphics | CellClickRegionIgnore | regionRectangle | ||
| Laser-Game-Graphics | CellClickRegionIgnore | sortIndex | ||
| Laser-Game-Graphics | CellClickRegionInside | Yes | ||
| Laser-Game-Graphics | CellClickRegionInside | mouseUpWithinCellAtPoint:cell:withinGrid: | ||
| Laser-Game-Graphics | CellClickRegionInside | pointIsUnderHeadingDownLine: | ||
| Laser-Game-Graphics | CellClickRegionInside | pointIsUnderHeadingUpLine: | ||
| Laser-Game-Graphics | CellClickRegionInside | pushRegionForPoint: | ||
| Laser-Game-Graphics | CellClickRegionInside | regionRectangle | ||
| Laser-Game-Graphics | CellClickRegionInside | scaledHintArrowAndOffsetFromWithinCell: | ||
| Laser-Game-Graphics | CellClickRegionInside | sortIndex | ||
| Laser-Game-Graphics | CellClickRegionInside | yForHeadingDownLineWith: | ||
| Laser-Game-Graphics | CellClickRegionInside | yForHeadingUpLineWith: | ||
| Laser-Game-Graphics | CellClickRegionOutside | Yes | ||
| Laser-Game-Graphics | CellClickRegionOutside | mouseUpWithinCellAtPoint:cell:withinGrid: | ||
| Laser-Game-Graphics | CellClickRegionOutside | regionRectangle | ||
| Laser-Game-Graphics | CellClickRegionOutside | rotateRegionForPoint: | ||
| Laser-Game-Graphics | CellClickRegionOutside | scaledHintArrowAndOffsetFromWithinCell: | ||
| Laser-Game-Graphics | CellClickRegionOutside | sortIndex | ||
| Laser-Game-Graphics | CellClickRegionPushEast | Yes | ||
| Laser-Game-Graphics | CellClickRegionPushEast | arrowForm | ||
| Laser-Game-Graphics | CellClickRegionPushEast | containsPoint: | ||
| Laser-Game-Graphics | CellClickRegionPushEast | mouseUpForCell:withinGrid: | ||
| Laser-Game-Graphics | CellClickRegionPushNorth | Yes | ||
| Laser-Game-Graphics | CellClickRegionPushNorth | arrowForm | ||
| Laser-Game-Graphics | CellClickRegionPushNorth | containsPoint: | ||
| Laser-Game-Graphics | CellClickRegionPushNorth | mouseUpForCell:withinGrid: | ||
| Laser-Game-Graphics | CellClickRegionPushSouth | Yes | ||
| Laser-Game-Graphics | CellClickRegionPushSouth | arrowForm | ||
| Laser-Game-Graphics | CellClickRegionPushSouth | containsPoint: | ||
| Laser-Game-Graphics | CellClickRegionPushSouth | mouseUpForCell:withinGrid: | ||
| Laser-Game-Graphics | CellClickRegionPushWest | Yes | ||
| Laser-Game-Graphics | CellClickRegionPushWest | arrowForm | ||
| Laser-Game-Graphics | CellClickRegionPushWest | containsPoint: | ||
| Laser-Game-Graphics | CellClickRegionPushWest | mouseUpForCell:withinGrid: | ||
| Laser-Game-Graphics | CellClickRegionRotateClockwise | Yes | ||
| Laser-Game-Graphics | CellClickRegionRotateClockwise | arrowForm | ||
| Laser-Game-Graphics | CellClickRegionRotateClockwise | containsPoint: | ||
| Laser-Game-Graphics | CellClickRegionRotateClockwise | mouseUpForCell:withinGrid: | ||
| Laser-Game-Graphics | CellClickRegionRotateCounterClockwise | Yes | ||
| Laser-Game-Graphics | CellClickRegionRotateCounterClockwise | arrowForm | ||
| Laser-Game-Graphics | CellClickRegionRotateCounterClockwise | containsPoint: | ||
| Laser-Game-Graphics | CellClickRegionRotateCounterClockwise | mouseUpForCell:withinGrid: | ||
| Laser-Game-Graphics | CellRenderer | Yes | ||
| Laser-Game-Graphics | CellRenderer | cell | cellExtent | |
| Laser-Game-Graphics | CellRenderer | cellLocation | ignoreRegionOffset | |
| Laser-Game-Graphics | CellRenderer | cellLocation: | insideRegionExtent | |
| Laser-Game-Graphics | CellRenderer | grid | outsideRegionExtent | |
| Laser-Game-Graphics | CellRenderer | grid: | rendererFor: | |
| Laser-Game-Graphics | CellRenderer | mouseUpWithinBoardOffset: | rendererFor:grid:form: | |
| Laser-Game-Graphics | CellRenderer | offsetWithinCellFrom: | ||
| Laser-Game-Graphics | CellRenderer | offsetWithinGridForm | ||
| Laser-Game-Graphics | CellRenderer | redrawCell | ||
| Laser-Game-Graphics | CellRenderer | render | ||
| Laser-Game-Graphics | CellRenderer | renderBorder | ||
| Laser-Game-Graphics | CellRenderer | renderBorderBottom | ||
| Laser-Game-Graphics | CellRenderer | renderBorderLeft | ||
| Laser-Game-Graphics | CellRenderer | renderBorderRight | ||
| Laser-Game-Graphics | CellRenderer | renderBorderTop | ||
| Laser-Game-Graphics | CellRenderer | renderContents | ||
| Laser-Game-Graphics | CellRenderer | showPositionHintFromWithinBoardOffset: | ||
| Laser-Game-Graphics | CellRenderer | targetForm | ||
| Laser-Game-Graphics | CellRenderer | targetForm: | ||
| Laser-Game-Graphics | LaserGame | Yes | ||
| Laser-Game-Graphics | LaserGame | activeCellLocation | boardExtentFor: | |
| Laser-Game-Graphics | LaserGame | activeCellLocation: | ||
| Laser-Game-Graphics | LaserGame | boardForm | ||
| Laser-Game-Graphics | LaserGame | boardForm: | ||
| Laser-Game-Graphics | LaserGame | boardRelativePositionFor: | ||
| Laser-Game-Graphics | LaserGame | calculatedExtent | ||
| Laser-Game-Graphics | LaserGame | cellForEvent: | ||
| Laser-Game-Graphics | LaserGame | cellPositionForEvent: | ||
| Laser-Game-Graphics | LaserGame | dirty | ||
| Laser-Game-Graphics | LaserGame | dirty: | ||
| Laser-Game-Graphics | LaserGame | drawGameBoard | ||
| Laser-Game-Graphics | LaserGame | eventDiagnosticFor:tag: | ||
| Laser-Game-Graphics | LaserGame | findFireButton | ||
| Laser-Game-Graphics | LaserGame | fireButtonLabel | ||
| Laser-Game-Graphics | LaserGame | fireLaser | ||
| Laser-Game-Graphics | LaserGame | grid | ||
| Laser-Game-Graphics | LaserGame | grid: | ||
| Laser-Game-Graphics | LaserGame | handleListenEvent: | ||
| Laser-Game-Graphics | LaserGame | initialize | ||
| Laser-Game-Graphics | LaserGame | isDirty: | ||
| Laser-Game-Graphics | LaserGame | laserActive | ||
| Laser-Game-Graphics | LaserGame | makeButton:action:state: | ||
| Laser-Game-Graphics | LaserGame | makeControlPanelMorph | ||
| Laser-Game-Graphics | LaserGame | makeFireLaserButton | ||
| Laser-Game-Graphics | LaserGame | makeGameBoardMorph | ||
| Laser-Game-Graphics | LaserGame | makeQuitGameButton | ||
| Laser-Game-Graphics | LaserGame | mouseDown:forMorph: | ||
| Laser-Game-Graphics | LaserGame | mouseEnter:forMorph: | ||
| Laser-Game-Graphics | LaserGame | mouseLeave:forMorph: | ||
| Laser-Game-Graphics | LaserGame | mouseMoveWhileButtonDown:forMorph: | ||
| Laser-Game-Graphics | LaserGame | mouseMoveWhileButtonUp:forMorph: | ||
| Laser-Game-Graphics | LaserGame | mouseUp:forMorph: | ||
| Laser-Game-Graphics | LaserGame | mouseUp:forMorph:cell: | ||
| Laser-Game-Graphics | LaserGame | panelWidth | ||
| Laser-Game-Graphics | LaserGame | quitGame | ||
| Laser-Game-Graphics | LaserGame | redrawCell: | ||
| Laser-Game-Graphics | LaserGame | setClean: | ||
| Laser-Game-Graphics | LaserGame | setDirty: | ||
| Laser-Game-Graphics | LaserGame | setExtent | ||
| Laser-Game-Graphics | LaserGame | setupMorphs | ||
| Laser-Game-Graphics | LaserGame | sweepDirtyCells | ||
| Laser-Game-Graphics | LaserGame | updateFireButtonLabel | ||
| Laser-Game-Graphics | LaserGameColors | Yes | ||
| Laser-Game-Graphics | LaserGameColors | cellBorderColor | ||
| Laser-Game-Graphics | LaserGameColors | gameBoardBackgroundColor | ||
| Laser-Game-Graphics | LaserGameColors | mirrorColor | ||
| Laser-Game-Graphics | LaserGameColors | targetCenterColor | ||
| Laser-Game-Graphics | LaserGameColors | targetCenterColorActive | ||
| Laser-Game-Graphics | LaserGameColors | targetCenterColorIdle | ||
| Laser-Game-Graphics | LaserGameForms | Yes | ||
| Laser-Game-Graphics | LaserGameForms | arrowFormFromPointsArray: | ||
| Laser-Game-Graphics | LaserGameForms | clockwiseArrow | ||
| Laser-Game-Graphics | LaserGameForms | counterClockwiseArrow | ||
| Laser-Game-Graphics | LaserGameForms | drawClockwiseArrow | ||
| Laser-Game-Graphics | LaserGameForms | drawCounterClockwiseArcsOn:withPen: | ||
| Laser-Game-Graphics | LaserGameForms | drawCounterClockwiseArrow | ||
| Laser-Game-Graphics | LaserGameForms | drawCounterClockwiseArrowHeadOn:withPen: | ||
| Laser-Game-Graphics | LaserGameForms | eastArrow | ||
| Laser-Game-Graphics | LaserGameForms | eastArrowPoints | ||
| Laser-Game-Graphics | LaserGameForms | initializeCachedForms | ||
| Laser-Game-Graphics | LaserGameForms | northArrow | ||
| Laser-Game-Graphics | LaserGameForms | northArrowPoints | ||
| Laser-Game-Graphics | LaserGameForms | southArrow | ||
| Laser-Game-Graphics | LaserGameForms | southArrowPoints | ||
| Laser-Game-Graphics | LaserGameForms | westArrow | ||
| Laser-Game-Graphics | LaserGameForms | westArrowPoints | ||
| Laser-Game-Graphics | MirrorCellRenderer | Yes | ||
| Laser-Game-Graphics | MirrorCellRenderer | cornerInset | modelClass | |
| Laser-Game-Graphics | MirrorCellRenderer | mouseUpWithinBoardOffset: | ||
| Laser-Game-Graphics | MirrorCellRenderer | renderContents | ||
| Laser-Game-Graphics | MirrorCellRenderer | renderContentsLeanLeft | ||
| Laser-Game-Graphics | MirrorCellRenderer | renderContentsLeanRight | ||
| Laser-Game-Graphics | MirrorCellRenderer | showPositionHintFromWithinBoardOffset: | ||
| Laser-Game-Graphics | TargetCellRenderer | Yes | ||
| Laser-Game-Graphics | TargetCellRenderer | drawCircleOutline | modelClass | |
| Laser-Game-Graphics | TargetCellRenderer | drawCrossHairsOutlines | ||
| Laser-Game-Graphics | TargetCellRenderer | drawTargetOutlines | ||
| Laser-Game-Graphics | TargetCellRenderer | renderContents | ||
| Laser-Game-Graphics | TargetCellRenderer | renderContentsOff | ||
| Laser-Game-Graphics | TargetCellRenderer | renderContentsOn | ||
| Laser-Game-Graphics | TargetCellRenderer | renderInnerCircleColor: | ||
| Laser-Game-Model | BlankCell | Yes | ||
| Laser-Game-Model | BlankCell | initialize | ||
| Laser-Game-Model | BlankCell | initializeExitSides | ||
| Laser-Game-Model | Cell | Yes | ||
| Laser-Game-Model | Cell | activeSegments | ||
| Laser-Game-Model | Cell | activeSegments: | ||
| Laser-Game-Model | Cell | clearCell | ||
| Laser-Game-Model | Cell | exitSideFor: | ||
| Laser-Game-Model | Cell | exitSides | ||
| Laser-Game-Model | Cell | exitSides: | ||
| Laser-Game-Model | Cell | gridLocation | ||
| Laser-Game-Model | Cell | gridLocation: | ||
| Laser-Game-Model | Cell | initialize | ||
| Laser-Game-Model | Cell | initializeActiveSegments | ||
| Laser-Game-Model | Cell | isOff | ||
| Laser-Game-Model | Cell | isOn | ||
| Laser-Game-Model | Cell | isSegmentOnFor: | ||
| Laser-Game-Model | Cell | laserEntersFrom: | ||
| Laser-Game-Model | Cell | printOn: | ||
| Laser-Game-Model | Cell | rotateClockwise | ||
| Laser-Game-Model | Cell | rotateCounterClockwise | ||
| Laser-Game-Model | Grid | Yes | ||
| Laser-Game-Model | Grid | activateCellsInPath | newOfSize: | |
| Laser-Game-Model | Grid | at: | ||
| Laser-Game-Model | Grid | at:put: | ||
| Laser-Game-Model | Grid | calculatePath | ||
| Laser-Game-Model | Grid | cells | ||
| Laser-Game-Model | Grid | cells: | ||
| Laser-Game-Model | Grid | clearCellsInPath | ||
| Laser-Game-Model | Grid | fireLaser | ||
| Laser-Game-Model | Grid | initialize | ||
| Laser-Game-Model | Grid | initializeCells | ||
| Laser-Game-Model | Grid | laserBeamPath | ||
| Laser-Game-Model | Grid | laserBeamPath: | ||
| Laser-Game-Model | Grid | laserIsActive | ||
| Laser-Game-Model | Grid | laserIsActive: | ||
| Laser-Game-Model | Grid | numberOfColumns | ||
| Laser-Game-Model | Grid | numberOfColumns: | ||
| Laser-Game-Model | Grid | numberOfRows | ||
| Laser-Game-Model | Grid | numberOfRows: | ||
| Laser-Game-Model | Grid | pushCell:fromLocation: | ||
| Laser-Game-Model | Grid | pushCellEastFromLocation: | ||
| Laser-Game-Model | Grid | pushCellNorthFromLocation: | ||
| Laser-Game-Model | Grid | pushCellSouthFromLocation: | ||
| Laser-Game-Model | Grid | pushCellWestFromLocation: | ||
| Laser-Game-Model | Grid | rotateCellClockwiseAt: | ||
| Laser-Game-Model | Grid | rotateCellCounterClockwiseAt: | ||
| Laser-Game-Model | Grid | startingCell | ||
| Laser-Game-Model | Grid | stopLaser | ||
| Laser-Game-Model | Grid | swapCell:with: | ||
| Laser-Game-Model | GridDirection | Yes | ||
| Laser-Game-Model | GridDirection | directionFor: | ||
| Laser-Game-Model | GridDirectionEast | Yes | ||
| Laser-Game-Model | GridDirectionEast | adjacentInversionSymbol | ||
| Laser-Game-Model | GridDirectionEast | directionSymbol | ||
| Laser-Game-Model | GridDirectionEast | vector | ||
| Laser-Game-Model | GridDirectionNorth | Yes | ||
| Laser-Game-Model | GridDirectionNorth | adjacentInversionSymbol | ||
| Laser-Game-Model | GridDirectionNorth | directionSymbol | ||
| Laser-Game-Model | GridDirectionNorth | vector | ||
| Laser-Game-Model | GridDirectionSouth | Yes | ||
| Laser-Game-Model | GridDirectionSouth | adjacentInversionSymbol | ||
| Laser-Game-Model | GridDirectionSouth | directionSymbol | ||
| Laser-Game-Model | GridDirectionSouth | vector | ||
| Laser-Game-Model | GridDirectionWest | Yes | ||
| Laser-Game-Model | GridDirectionWest | adjacentInversionSymbol | ||
| Laser-Game-Model | GridDirectionWest | directionSymbol | ||
| Laser-Game-Model | GridDirectionWest | vector | ||
| Laser-Game-Model | GridFactory | Yes | ||
| Laser-Game-Model | GridFactory | demoGrid | ||
| Laser-Game-Model | LaserPathElement | Yes | ||
| Laser-Game-Model | LaserPathElement | activateCell | cell:entrySide: | |
| Laser-Game-Model | LaserPathElement | cell | ||
| Laser-Game-Model | LaserPathElement | cell: | ||
| Laser-Game-Model | LaserPathElement | clearCell | ||
| Laser-Game-Model | LaserPathElement | entrySide | ||
| Laser-Game-Model | LaserPathElement | entrySide: | ||
| Laser-Game-Model | LaserPathElement | nextElementIn: | ||
| Laser-Game-Model | LaserPathElement | printOn: | ||
| Laser-Game-Model | MirrorCell | Yes | ||
| Laser-Game-Model | MirrorCell | initialize | leanLeft | |
| Laser-Game-Model | MirrorCell | initializeExitSides | leanRight | |
| Laser-Game-Model | MirrorCell | isLeft | ||
| Laser-Game-Model | MirrorCell | isRight | ||
| Laser-Game-Model | MirrorCell | leanLeft | ||
| Laser-Game-Model | MirrorCell | leanRight | ||
| Laser-Game-Model | MirrorCell | leansLeft | ||
| Laser-Game-Model | MirrorCell | leansLeft: | ||
| Laser-Game-Model | MirrorCell | rotate | ||
| Laser-Game-Model | MirrorCell | rotateClockwise | ||
| Laser-Game-Model | MirrorCell | rotateCounterClockwise | ||
| Laser-Game-Model | TargetCell | Yes | ||
| Laser-Game-Model | TargetCell | initialize | ||
| Laser-Game-Model | TargetCell | initializeExitSides | ||
| Laser-Game-Tests | BlankCellTestCase | Yes | ||
| Laser-Game-Tests | BlankCellTestCase | testCellExitSides | ||
| Laser-Game-Tests | BlankCellTestCase | testCellLaserActivity | ||
| Laser-Game-Tests | BlankCellTestCase | testCellOnState | ||
| Laser-Game-Tests | BlankCellTestCase | testCellSegmentsState | ||
| Laser-Game-Tests | CellClickInsideRegionPushTestCase | Yes | ||
| Laser-Game-Tests | CellClickInsideRegionPushTestCase | testClicksInPushRegions | ||
| Laser-Game-Tests | CellClickOutsideRegionRotateTestCase | Yes | ||
| Laser-Game-Tests | CellClickOutsideRegionRotateTestCase | testClicksInRotateRegions | ||
| Laser-Game-Tests | CellClickRegionTestCase | Yes | ||
| Laser-Game-Tests | CellClickRegionTestCase | testClicksInIgnoreRegion | ||
| Laser-Game-Tests | CellClickRegionTestCase | testClicksInInsideRegion | ||
| Laser-Game-Tests | CellClickRegionTestCase | testClicksInOutsideRegion | ||
| Laser-Game-Tests | CellRendererTestCase | Yes | ||
| Laser-Game-Tests | CellRendererTestCase | testCellOffsetCalculations | ||
| Laser-Game-Tests | CellRendererTestCase | testRenderSelection | ||
| Laser-Game-Tests | GridDirectionTestCase | Yes | ||
| Laser-Game-Tests | GridDirectionTestCase | testDirectionSelection | ||
| Laser-Game-Tests | GridTestCase | Yes | ||
| Laser-Game-Tests | GridTestCase | generateDemoGrid | ||
| Laser-Game-Tests | GridTestCase | testCellInteractions | ||
| Laser-Game-Tests | GridTestCase | testFireLaser | ||
| Laser-Game-Tests | GridTestCase | testFireLaserAfterMirrorPush | ||
| Laser-Game-Tests | GridTestCase | testFireLaserAfterMirrorRotation | ||
| Laser-Game-Tests | GridTestCase | testFireLaserDuringMirrorPush | ||
| Laser-Game-Tests | GridTestCase | testFireLaserDuringMirrorRotation | ||
| Laser-Game-Tests | GridTestCase | testInitialConditions | ||
| Laser-Game-Tests | GridTestCase | testNonDefaultGridSizeConditions | ||
| Laser-Game-Tests | GridTestCase | testPushBlankCell | ||
| Laser-Game-Tests | GridTestCase | testPushIsolatedMirrorCellEastCase1 | ||
| Laser-Game-Tests | GridTestCase | testPushIsolatedMirrorCellEastCase2 | ||
| Laser-Game-Tests | GridTestCase | testPushIsolatedMirrorCellNorthCase1 | ||
| Laser-Game-Tests | GridTestCase | testPushIsolatedMirrorCellNorthCase2 | ||
| Laser-Game-Tests | GridTestCase | testPushIsolatedMirrorCellSouth | ||
| Laser-Game-Tests | GridTestCase | testPushIsolatedMirrorCellWest | ||
| Laser-Game-Tests | GridTestCase | testPushTargetCell | ||
| Laser-Game-Tests | GridTestCase | testStopLaser | ||
| Laser-Game-Tests | GridTestCase | testToggleLaser | ||
| Laser-Game-Tests | MirrorCellTestCase | Yes | ||
| Laser-Game-Tests | MirrorCellTestCase | testCellExitSidesMirrorLeft | ||
| Laser-Game-Tests | MirrorCellTestCase | testCellExitSidesMirrorRight | ||
| Laser-Game-Tests | MirrorCellTestCase | testCellLaserActivityMirrorLeft | ||
| Laser-Game-Tests | MirrorCellTestCase | testCellLaserActivityMirrorRight | ||
| Laser-Game-Tests | MirrorCellTestCase | testCellOnState | ||
| Laser-Game-Tests | MirrorCellTestCase | testCellRotate | ||
| Laser-Game-Tests | MirrorCellTestCase | testCellSegmentsState | ||
| Laser-Game-Tests | TargetCellTestCase | Yes | ||
| Laser-Game-Tests | TargetCellTestCase | testCellExitSides | ||
| Laser-Game-Tests | TargetCellTestCase | testCellLaserActivity | ||
| Laser-Game-Tests | TargetCellTestCase | testCellOnState | ||
| Laser-Game-Tests | TargetCellTestCase | testCellSegmentsState |
If you've been following along, you should also have a saved Monticello package of your work. Although a Change Set exists we're going to make use of Monticello packages from this point forward. A link to the proper version of the Monticello package you should have loaded can be found here . If you've been carefully following along, you do not need to load this package. If you think you have gotten completely lost, you can download the package file, save it to your hard drive some where and then use Squeak's File List to install the Monticello package. It will install the proper code.