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.

Index Page Next Page

Copyright © 2007, 2008, 2009, 2010 Stephan B Wessels    stevewessels@me.com