<snapdata remixID="10728812"><project name="U3L3-TicTacToe" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Square" idx="1" x="50.5" y="-50.5" heading="90" scale="0.95" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="8"><costumes><list id="9"><item><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAShJREFUaEPtmyEOg0AQRT836A1ag24TBIakFWv2Fr0BFgc4LKdZs6ICgyCpx9AbcIRmG0LS0lbPbj4nmDf/v4xZIgAVgCOAE8L87tECeQZwCZMRt0/ISWuNNE0PPgP3fT8ZYxyC43iH1FpPbdsijmOvIcdxnPI8hzFmC1lVFcqy9DnEdfa6ruF4NkkS0rN8mSSd9KiyrCvryrrK2gCdpJOyGvl3GtaVdWVdZW2ATtJJWY3kCaGTdJJOytoAnaSTshrJO0kn6SSdlLUBOkknZTWSd5JO0kk6KWsDdJJOymok7ySdpJMhOKmUmpumQZIkO494NqMOwzAXRQFrrePYPM+elVLIssxryK7rZmutg/8K6XOAv2Z/JXldHqTvQyQE8HCQof4qsWb2BLkbqAIXp3YbAAAAAElFTkSuQmCC" id="10"/></item><item><costume name="X" center-x="28.5" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAAAAXNSR0IArs4c6QAAAyhJREFUaEPd272LE0EYB+BfTj1SLGQLi4BCGsEiSrbSRlCwicVBwC/sLFOks0mZMv+F6YzapBRBsLhGEUlIUggWERRSiCSQ6lSQSTJ3k3GTmd2Zd3Y3C1dkP2b2mXfe2c3cJIf93HwAM07LAWgBqAAI9sR7AKAI4ATALwCfOfI2gDt7gpQZ72Xkied5aDQah/l8Hk9esyBnY3t+1ESn08F0OlUilycEQYCXv/vZ0Al3eXV89qFcLv8cj8cXAfwXydOzsgYVgV/KwIuHLbRay564iazVauj1epmDykAOWO/fRDI5y0PxorRHdBuQQUORLMxSK6Q6R3cBtZDCSamEqoDaSBnq+z4+XDp9kUhs9NUBRkKyk298L2A+ny9RSUN1gZGRaYFGAcZCJg2NCoyNTAoqAiuVCl79GWiNB8pHyK5SXOZoXKBRJDneBdQEaAVJ3XVNgdaQVNCbP3zMZqvncZQclFPMKCflwmx2XVtAq5G0maMisFAo4OPl1QtI3M1qJG1AbQNJImkCpQCSIuXBiH0Wv8LJXY8KSI5kFTw6X8FgcPZmEgalBDpBqqCPLwTo91eTZTYGmbDBiWTgCasoLKIugM4iydEyVGyMXfka99HBr3MWSV7h/dw1jEajjfumBDqPJKvwwcF1DIfD/UWKOSh3QcpoOu2u8rd6nceLaT467a7bpi1cQJ1EUjUvQw0lR6qA2x4vNnOUFKkLpIaSIaMCKaEkyLhAcSS1UQbZGw/BzS3v1SRHrUbSJlCKghHUGpICaAtqBWljblT1ZmPSiMZIF0DTiBohXQJNoLGRSQDjQmMhkwTGgUZG2py+Vw02quO6g1EkpAgslUp4631T3Qf5cR2oNpJ6btSkNVRQLWSagWE5Kq8eUyKzANwF3bqAkK+tyxJwG7RaraLdbrPDmwsIm80mut0uJpPJ8lqq6XuTPNx1rZijxWKRL/DdRHqe93exWJzLIjAsout9x3x59l0At8RWqtfrYK2RpSXaLA/ZP5HENbvsVwUc+QyAR9WNEi73E0M+BVADcA/AIYBjAF8TvjEb1V9ZF/KOIflPJdhO9vfGRg1pKuMf+KFbUgfwVJgAAAAASUVORK5CYII=" id="11"/></item><item><costume name="O" center-x="27.5" center-y="27.5" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAptJREFUaEPtmr1Ow0AMx92Jbs2AxJhKIMHWSjwASPBelPeCgR2kdgMJJLKBxJBuZUP9jHNJ8Mf52rRJ197Z/tn/c3J36QDACACu4HB/T50V5N3hMsJ9EbL7s/+8s2PM4EAeAuAaLwNFkIcEmAdtIW3XZn6dAGxDOUufgSrpAnHTZQ1uDlkFRgWuncdJnBVk1D2DNE3zLimwqgAd4CiKIJ29c3DKx5hAhlpnVna9IVEgcRxD8v2iz3jJzPjkEpIkyf7RqEMLOby4hfF47Odckg6UzOFwCOPXB/5sLSRgKWmyyw8xG6n1qYLUOtOAuXM0vsWQGicWcNiGNAY15LYkSj1mOHGIIFcZ7PV6MP39sK6PyF7v6BSm0+lyDgXKhcw97CmjonA9Bq+STr4scCE33bQugO5+8b+4Wsji7prWv4f6VFM5nZZVybWhukmVK9kWkpsplc4MJ1FKayvZuErWtengQlTFyJZrIyA574iGvURkqm08AKtX0lF24VMmSypTorQHGEzFx16T+y/XtpJLfVGSCKBClklOXCy5Ng6yTmuTs83KCsS81eJIg6Uxo0HceNhyxZKtQzW5VRRXEoGSh0dGxSozIz5UE1USAAbnNzCZTBa++/0+fH49B8QpmsaAg8EAJm+PtH8p5NwiPvMUX77QIVWOwJdMorNfDWTuuQkA25Bu4ZJXsitSQzqNKCgobjKapucF6Uh3UWFJhjnSRYAiiWLbvpBzW7gZbWz7wjrVYzeZssRZQK7t5i5hsDMusCvLuVIsLpcsITdcJcFylFkYw00OZTwIZHE9UGFk/1uBWa9JPsGORgav5I64cm6XkMTJQB0C9YmhQZVs2pfLa1mE6HI+ktPMzT/KSj601xit95xF47mud4z+0f0BBVWchTY45mwAAAAASUVORK5CYII=" id="12"/></item></list></costumes><sounds><list struct="atomic" id="13"></list></sounds><blocks></blocks><variables><variable name="position number"><l>10</l></variable></variables><scripts><script x="13.333333333333343" y="359.6666666666665"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doChangeVar"><l>Number of Moves</l><l>1</l></block><block s="doIf"><block s="reportAnd"><block var="playing"/><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l></block></block><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block><block s="doIf"><custom-block s="won? %s"><l>X</l></custom-block><script><block s="bubble"><l>X won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script><script><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l></block><block s="doIf"><custom-block s="won? %s"><l>O</l></custom-block><script><block s="bubble"><l>O won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block></block><block s="doIf"><block s="reportAnd"><block var="playing"/><custom-block s="tied?"></custom-block></block><script><block s="bubble"><l>It&apos;s a tie.</l></block><block s="goToLayer"><l><option>front</option></l></block></script></block><block s="doDeclareVariables"><list><l>available squares</l></list></block><block s="doSetVar"><l>available squares</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block></block><block s="doIf"><block s="reportAnd"><block var="playing"/><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="available squares"/></block><l>1</l></block></block><script><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="available squares"/></block><block var="board"/><l>X</l></block><block s="doIf"><block s="reportNot"><custom-block s="won? %s"><l>X</l></custom-block></block><script><block s="bubble"><l>It&apos;s a tie.</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block></script></block></script><script x="10" y="1643.3333333333326"><block s="doSetVar"><l>win lines</l><block s="reportNewList"><list><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>50</l></list></block><block s="reportNewList"><list><l>100</l><l>50</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>0</l></list></block><block s="reportNewList"><list><l>100</l><l>0</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>-50</l></list></block><block s="reportNewList"><list><l>100</l><l>-50</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-50</l><l>100</l></list></block><block s="reportNewList"><list><l>-50</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>100</l></list></block><block s="reportNewList"><list><l>0</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>50</l><l>100</l></list></block><block s="reportNewList"><list><l>50</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>100</l></list></block><block s="reportNewList"><list><l>100</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>-100</l></list></block><block s="reportNewList"><list><l>100</l><l>100</l></list></block></list></block></list></block></block></script><script x="15" y="307.3333333333335"><custom-block s="won? %s"><l></l></custom-block></script><script x="15" y="276"><custom-block s="status of all winning triples"></custom-block></script><script x="15.666666666666686" y="159.3333333333333"><custom-block s="possible winning triples"></custom-block></script><script x="18.666667666666683" y="237.66666666666677"><block s="reportEquals"><custom-block s="status of triple %l"><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></custom-block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block></script><script x="18.333333333333343" y="213.00000000000003"><custom-block s="status of triple %l"><l/></custom-block></script><script x="20.000000999999997" y="181.88888888888894"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></list></custom-block></script><script x="21" y="333.3333333333335"><custom-block s="tied?"></custom-block></script><script x="456.66666666666663" y="10"><block s="receiveGo"></block><block s="clear"></block><custom-block s="makeBoard"></custom-block><block s="doSetVar"><l>Number of Moves</l><l>0</l></block><block s="doSetVar"><l>b</l><l>0</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>board</l><block s="reportNumbers"><l>1</l><l>9</l></block></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><comment x="24.666667666666683" y="1846.333333333334" w="363.3333333333333" collapsed="true">TIF B:  First of all, we don&apos;t want Square, the sprite with nine clones to show the board, to move around.  So I added another sprite, named Sprite.  It&apos;s hidden, but can draw lines with its thick red pen.  (Click on Sprite at the right to see its code.)  The actual work is done in procedure DRAW WIN LINE.  But instead of running DRAW WIN LINE in the Square sprite (this one), we TELL Sprite TO do it. </comment><comment x="33.66666766666668" y="1602.3333333333326" w="356" collapsed="true">TIF B starts here.  The instruction below only needs to be run once.  It makes a list of the two endpoints of each of the lines to mark a win.  It must be in the same order as POSSIBLE WINNING TRIPLES. </comment><comment x="28.33333433333334" y="1879.6666666666665" w="358" collapsed="true">We modify makeBoard for TIF B because drawn lines are behind sprites on the stage, so the win line is hidden by the board.  To fix that, we apply a ghost effect (transparency) to the board sprites.  The value 30 for the ghost effect was found by experiment.  Any more and the board is too faint; any less and the line is.</comment><script x="47.000001" y="1917.6666666666674"><custom-block s="draw win line"><comment w="90" collapsed="true">TIF B inside.</comment></custom-block></script><script x="56.33333433333337" y="1958.666666666669"><custom-block s="makeBoard"><comment w="90" collapsed="true">TIF B inside.</comment></custom-block></script><script x="467" y="249.66666666666666"><block s="receiveMessage"><l>b</l></block><block s="clear"></block><custom-block s="makeBoard"></custom-block><block s="doSetVar"><l>Number of Moves</l><l>0</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>board</l><block s="reportNumbers"><l>1</l><l>9</l></block></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></scripts></sprite><sprite name="Sprite" idx="2" x="-50" y="-100" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="255,32,0,1" pen="tip" id="402"><costumes><list struct="atomic" id="403"></list></costumes><sounds><list struct="atomic" id="404"></list></sounds><blocks></blocks><variables></variables><scripts><script x="27" y="23.66666666666667"><block s="receiveGo"></block><block s="hide"></block><block s="setSize"><l>5</l></block><block s="setColor"><color>255,32,0,1</color></block></script></scripts></sprite><sprite name="Sprite(2)" idx="3" x="176" y="93" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="1" color="0,221.85,62.11800000000005,1" pen="tip" id="414"><costumes><list id="415"><item><costume name="alonzo (vector)" center-x="47.5" center-y="61.5" image="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOTVweCIgaGVpZ2h0PSIxMjNweCIgdmlld0JveD0iMCAwIDk1IDEyMyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOTUgMTIzIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJJRDAuODMyMzgyOTczNzQ5MTkwNiIgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMykiPg0KCTxwYXRoIGlkPSJSX0xlZyIgZmlsbD0iI0ZGQzkzRSIgc3Ryb2tlPSIjNjAzODEzIiBzdHJva2Utd2lkdGg9IjMiIGQ9Ik00Ny4zMTYsMTA0LjI1MWMwLTEuMjc2LDAuMzU4LTMuMTA5LDIuMzM4LTMuNTIzDQoJCWMyLjg1Ny0wLjU5OSw2LjEyNiwyLjI5Myw3LjAxNCwzLjE0NmMtMC4wNjUsMC4zMzgsMS4wNDcsNy4xNzMsMS4wNDcsNy43NjVjMCwyLjAwNC0wLjUzNSwyLjA4My0wLjc0MywyLjExNg0KCQljLTEuOTU2LDAuMjg0LTcuMTY5LTUuMTk3LTkuNTYyLTguMzg3QzQ3LjM3NiwxMDUuMTkzLDQ3LjMxNiwxMDQuODA5LDQ3LjMxNiwxMDQuMjUxTDQ3LjMxNiwxMDQuMjUxTDQ3LjMxNiwxMDQuMjUxeiIvPg0KCTxwYXRoIGlkPSJDZW50ZXJfTGVnIiBmaWxsPSIjRkZDOTNFIiBzdHJva2U9IiM2MDM4MTMiIHN0cm9rZS13aWR0aD0iNCIgZD0iTTM5LjM5NCwxMTMuODI3Yy0xLjQxOC0xLjUzOC0xLjYyMS01LjcwNy0xLjYyMS03LjQ4Mg0KCQljMC0wLjc1MiwwLjAzOS0xLjI1MywwLjA0MS0xLjI2OGwwLjAwMi0wLjAzOWMwLDAtMC4wMDQtMC4xNi0wLjAwNC0wLjIxOWMwLTMuMzQxLDMuMDc1LTQuNTAxLDMuNTk3LTQuNjc1DQoJCWMxLjc4MSwwLjAyMSw0Ljg1OCwwLjg2NCw1LjU5MywyLjEzNmMwLjA3NSwwLjEyOCwwLjE0NCwwLjI4OSwwLjE0NCwwLjQ5NWMwLDAuMTgxLTAuMDU0LDAuNC0wLjIwOCwwLjY2Ng0KCQljLTAuMDcxLDAuMTIxLTEuMzM1LDMuMTA5LTIuNDA1LDUuNGwtMC43NjUsMi4xMTljLTAuNTcyLDEuODUxLTEuNDczLDMuNzAzLTIuNDUyLDMuNzAzDQoJCUM0MC41NDIsMTE0LjY2NiwzOS45MTQsMTE0LjM5MiwzOS4zOTQsMTEzLjgyN0wzOS4zOTQsMTEzLjgyN0wzOS4zOTQsMTEzLjgyN3oiLz4NCgk8cGF0aCBpZD0iUl9Bcm0iIGZpbGw9IiNGRkM5M0UiIHN0cm9rZT0iIzYwMzgxMyIgc3Ryb2tlLXdpZHRoPSIzIiBkPSJNNzkuNTA1LDg5LjYxMWwtMS4zODMtMi40NA0KCQljLTEuNTE2LTIuNjM3LTMuMjY1LTUuMDUyLTQuODA3LTcuMTc3Yy0xLjk4My0yLjczOC0zLjcxLTUuNTcxLTQuMjgxLTcuNTcyYy0wLjIwNy0wLjcyMS0wLjEwNy0xLjQxLDAuMTg5LTEuNzkNCgkJYzAuMDI4LTAuMTAyLDAuMzI3LTAuMjY1LDAuNTM5LTAuMzA5YzIuNTQxLTAuNTUsMTMuMDYsNS40OTEsMTUuNjg1LDguNzE5YzMuODQ1LDQuNzI3LDUuMzgyLDExLjM1OCw0LjUyNCwxNC42OTkNCgkJYy0wLjM1MiwxLjM2NC0xLjEzOSwyLjMzMi0yLjI3OCwyLjc5M0M4NC43ODIsOTcuNzEsODIuODY3LDk1LjU4Niw3OS41MDUsODkuNjExTDc5LjUwNSw4OS42MTFMNzkuNTA1LDg5LjYxMXoiLz4NCgk8cGF0aCBpZD0iQm9keSIgZmlsbD0iI0ZGQzkzRSIgc3Ryb2tlPSIjNjAzODEzIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iDQoJCU0zOC4wOTcsNDMuMDA3YzAsMC0zLjExLTkuNjI5LTYuMDExLTEzLjU5OGMtMS43Mi0yLjc5LTQuMi02LjI2Ny03LjQ3Ny02LjA0OWMtNC4wNjcsMC4xMDYtNi4yODMsNC45ODQtMTAuMjk5LDYuNTQ1DQoJCWMtMi42MDIsMS4wMDMtOS40NjEsMi4zMTQtOC40MDYsMGMyLjgxMy01LjgxNCwxNC4wNC05LjA3OSwxNi44NDQtMTYuMzc5YzEuMjYzLTMuMzA1LTQuMjcyLTcuMjUyLTcuOTQxLTcuOTQyDQoJCWMtMi43NDUtMC41MDEtNC4wMzksNC4yMTctNi41NDUsNS42MTVjLTEuMTUxLDAuNjQzLTQuMzM5LDEuMzA1LTMuNzUzLDBDNi42MjksNi44MzYsOS4wNTIsMS4xNzIsMTMuODQ1LTAuNDk1DQoJCWMzLjYxNy0xLjI1NCw3LjU2MiwyLjQ3MywxMC4yOTksNS4xMTljOC40NjQsOC4xODUsMTUuNjE3LDE3LjkzOCwyMy4yNCwyNi42NWw0LjUxMSw1LjEzOWMwLDAsMy4yMjUsMy45NTYsNS42OTIsNi41NjYNCgkJYzAuMDQ0LDAuMDQ1LDIuMzc4LTAuMzE3LDMuOTg5LTEuNjU3YzEuMzE0LTEuMDk2LDEuMTQxLTIuMzIzLDEuNTU5LTQuOTAyYzAuMzg0LTIuMzcxLDAuODAyLTYuNjU5LDIuMDcyLTYuNjgxDQoJCWMxLjkxNi0wLjAyOSwzLjE3Niw3Ljg2OCwzLjY2NiwxMC43OTNsMC4yNzIsMS41NjVjMC42NDMsMy40NzksMy45OTksMTMuOTQsNC4xNDQsMTQuMzg0YzAuMDQ2LDAuMTA4LDAuMTIxLDAuMjQ5LDAuMTIxLDAuMjQ5DQoJCWwwLjAyNywwLjA1NmwwLjAzOCwwLjA0N2M1LjE4NSw2LjQyOSw5LjAzOCwxNC4yMjMsOS4wMzgsMjEuNTI0YzAsMTUuNDY0LTEzLjU1NSwyNi4zNDktMzEuNjk3LDI2LjM0OQ0KCQljLTMuMzY1LDAtNi42NTctMC40NzMtOS43ODMtMS4zOThsLTAuMTY4LTAuMDQ5YzAsMC00LjkwOC0wLjQxMi0xMS4xODYsNy44NGMtMS4yNiwxLjY1Ny0xLjE0NywzLjIwMS0yLjkyMiwyLjcyNg0KCQljLTAuNTkyLTAuMTU4LTEuMDI2LTAuNTkzLTEuMzgyLTEuMzgzYy0wLjg0OC0xLjg4NC0wLjIyMi02LjM0NywwLjgxNi05LjE5N2wwLjE2My0wLjQ0OGwtMC4zNzUtMC4yOTcNCgkJYy0wLjA5Mi0wLjA3My0xMC4yNzQtNy40OTMtMTEuMzAzLTE4LjEyNWMtMC44OTYtOS4yNjgsMy43ODUtMTQuNTQ1LDUuNzI4LTE3LjQ0NGwxLjExNy0xLjg1OA0KCQljMS40MDktMy40MjgtMS4yNDMtOC4xOTUtMy41ODMtMTIuNDAxYy0xLjM5Ny0yLjUxMS0zLjY1Mi02LjE3Ni0zLjE0My03LjAzOGMwLjU2NS0wLjk1NCwyLjU4NSwwLjA2Miw0LjYyNSwxLjAzNA0KCQljMS42NTQsMC43OTEsMy4yNDUsMS45MDgsNC4zNSwxLjE3MWMxLjE0OS0wLjc2NSwwLjM5Ni0yLjY4Ni0wLjY0OS01LjM0NmMtMC45ODItMi40OTgtMi44NDEtNi40NDMtMi4xMjctOC4wNzINCgkJYzAuMTk3LTAuNDQ3LDAuNTQyLTAuNzYyLDEuMDU1LTAuOTYxYzEuODk3LTAuNzM0LDQuNjA5LDIuNDYxLDYuODA1LDQuOTYxQzMxLjUzMiw0MS40NjksMzQuNTcsNDQuOTI3LDM4LjA5Nyw0My4wMDcNCgkJTDM4LjA5Nyw0My4wMDdMMzguMDk3LDQzLjAwN3oiLz4NCgk8ZyBpZD0iTF9FeWUiPg0KCQk8cGF0aCBpZD0iV2hpdGVfMV8iIGZpbGw9IiNGRkZGRkYiIGQ9Ik00MS4yMjgsNzkuNDg5YzAsMi43ODksMi4yNjMsNS4wNSw1LjA1NCw1LjA1YzIuNzkxLDAsNS4wNTEtMi4yNjEsNS4wNTEtNS4wNQ0KCQkJYzAtMi43OTEtMi4yNjEtNS4wNTYtNS4wNTEtNS4wNTZDNDMuNDksNzQuNDM2LDQxLjIyOCw3Ni42OTgsNDEuMjI4LDc5LjQ4OUw0MS4yMjgsNzkuNDg5TDQxLjIyOCw3OS40ODl6Ii8+DQoJCTxwYXRoIGlkPSJQdXBpbF8xXyIgZmlsbD0iIzYwMzgxMyIgZD0iTTQ2Ljk2MSw3NS43OTZjMC45ODEsMCwxLjg3LDAuMzk4LDIuNTEzLDEuMDQzYzAuNjQ1LDAuNjQzLDEuMDQyLDEuNTMyLDEuMDQyLDIuNTEzDQoJCQljMCwwLjk4MS0wLjM5NywxLjg3LTEuMDQyLDIuNTE0Yy0wLjY0NCwwLjY0NC0xLjUzMiwxLjA0Mi0yLjUxMywxLjA0MnMtMS44Ny0wLjM5OC0yLjUxMy0xLjA0Mg0KCQkJYy0wLjY0NS0wLjY0NC0xLjA0Mi0xLjUzMi0xLjA0Mi0yLjUxNGMwLTAuOTgsMC4zOTgtMS44NywxLjA0Mi0yLjUxM0M0NS4wOTIsNzYuMTk0LDQ1Ljk4LDc1Ljc5Niw0Ni45NjEsNzUuNzk2TDQ2Ljk2MSw3NS43OTZ6Ig0KCQkJLz4NCgk8L2c+DQoJPGcgaWQ9IlJfRXllIj4NCgkJPHBhdGggaWQ9IldoaXRlIiBmaWxsPSIjRkZGRkZGIiBkPSJNNjUuNTY4LDc5LjQ4OWMwLDIuNzg5LDIuMjYyLDUuMDUsNS4wNTQsNS4wNWMyLjc4OCwwLDUuMDUyLTIuMjYxLDUuMDUyLTUuMDUNCgkJCWMwLTIuNzkxLTIuMjYyLTUuMDU2LTUuMDUyLTUuMDU2QzY3LjgzLDc0LjQzNiw2NS41NjgsNzYuNjk4LDY1LjU2OCw3OS40ODlMNjUuNTY4LDc5LjQ4OUw2NS41NjgsNzkuNDg5eiIvPg0KCQk8cGF0aCBpZD0iUHVwaWwiIGZpbGw9IiM2MDM4MTMiIGQ9Ik02Ny43NDUsNzkuMzUyYzAsMS45NjQsMS41OSwzLjU1NSwzLjU1NiwzLjU1NWMxLjk2MywwLDMuNTU2LTEuNTksMy41NTYtMy41NTUNCgkJCWMwLTEuOTYyLTEuNTkzLTMuNTU2LTMuNTU2LTMuNTU2QzY5LjMzNSw3NS43OTYsNjcuNzQ1LDc3LjM4OSw2Ny43NDUsNzkuMzUyTDY3Ljc0NSw3OS4zNTJMNjcuNzQ1LDc5LjM1MnoiLz4NCgk8L2c+DQoJPHBhdGggaWQ9IkxfQXJtIiBmaWxsPSIjRkZDOTNFIiBzdHJva2U9IiM2MDM4MTMiIHN0cm9rZS13aWR0aD0iMyIgZD0iTTYuMzQxLDk4Ljk5NGMtMS4wMzYtMC42NjEtMS42MzMtMS43NTMtMS43MjktMy4xNjENCgkJYy0wLjIzNC0zLjQ0NSwyLjQ5Mi05LjY4Miw3LjEzNC0xMy42MjZjMy4xNy0yLjY5NCwxNC42MTctNi43MDcsMTcuMDE0LTUuNzAzYzAuMTk4LDAuMDgzLDAuNDYzLDAuMjk3LDAuNDcyLDAuNDA0DQoJCWMwLjIyNCwwLjQyNywwLjE5NCwxLjExOS0wLjE0LDEuNzkxYy0wLjkyNywxLjg2NC0zLjE0Miw0LjMzNS01LjU5NCw2LjY2Yy0xLjkwNiwxLjgxNC00LjA2NSwzLjg2My02LjAzNSw2LjE4MWwtMS44MDcsMi4xNDENCgkJQzExLjI1OSw5OC45NDMsOC45ODYsMTAwLjY4NSw2LjM0MSw5OC45OTRMNi4zNDEsOTguOTk0TDYuMzQxLDk4Ljk5NHoiLz4NCgk8cGF0aCBpZD0iTW91dGgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzYwMzgxMyIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik02My4xNDgsOTUuMzkxDQoJCWMwLDAtNC41OTksMC4wMDQtNy44MTktMi43NTYiLz4NCjwvZz4NCjwvc3ZnPg0K" id="416"/></item></list></costumes><sounds><list struct="atomic" id="417"></list></sounds><blocks></blocks><variables></variables><scripts><script x="379" y="223.00000000000003"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="clearEffects"></block><block s="setEffect"><l><option>ghost</option></l><l>100</l></block><block s="hide"></block><block s="doBroadcast"><l>b</l></block><block s="bubble"><l></l></block></script><script x="62" y="88"><block s="receiveGo"></block><block s="doSetGlobalFlag"><l><option>turbo mode</option></l><l><bool>true</bool></l></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="clearEffects"></block><block s="hide"></block><block s="doForever"><script><block s="doIf"><block s="reportEquals"><block var="playing"/><block s="reportBoolean"><l><bool>false</bool></l></block></block><script><block s="setEffect"><l><option>ghost</option></l><l>0</l></block><block s="show"></block><block s="bubble"><l>Click me to play again</l></block></script></block></script></block></script></scripts></sprite><watcher scope="Square" var="position number" style="normal" x="10" y="298.500002" color="243,118,29" hidden="true"/><watcher var="playing" style="normal" x="10" y="325.4999960000002" color="243,118,29" hidden="true"/><watcher var="win lines" style="normal" x="10" y="329.999998" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="0" y="27" color="243,118,29" extX="80" extY="70"/><watcher var="Number of Moves" style="normal" x="10" y="338.999998" color="243,118,29"/><watcher var="b" style="normal" x="10" y="338.999998" color="243,118,29" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="label %&apos;text&apos; of size %&apos;size&apos;" type="command" category="pen"><comment x="0" y="0" w="90" collapsed="false">LABEL will stamp text on the stage at the given font size. The direction of the text is the direction the sprite is facing, and color will match the pen color.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + &apos;px monospace&apos;;&#xD;context.textAlign = &apos;left&apos;;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/></list></block></script></block-definition><block-definition s="map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></list></block></block></block></script><list><l>data lists</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/></list></block></block></script></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="words"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block></script><scripts><script x="229.00000300000002" y="196.77778077777774"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></script></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block><custom-block s="ignore %s"><l>3</l></custom-block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>breakpoint</l></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doSetVar"><l>breakpoint</l><block var="test"/></block><block s="doShowVar"><l>breakpoint</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doPauseAll"></block><block s="doHideVar"><l></l></block></script></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="tell %&apos;sprite&apos; to %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportAttributeOf"><block var="action"/><block var="sprite"/></block><list></list></block></script></block-definition><block-definition s="ask %&apos;sprite&apos; for %&apos;expression&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportAttributeOf"><block var="expression"/><block var="sprite"/></block><list></list></block></block></script></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block></script></block-definition><block-definition s="makeBoard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><block s="show"></block><block s="setEffect"><l><option>ghost</option></l><l>30</l><comment w="78" collapsed="true">3.3.3 TIF B</comment></block><block s="setScale"><l>95</l><comment w="190" collapsed="true">Oops costumes are a bit too big.</comment></block><block s="doSetVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>j</l><l>1</l><l>3</l><script><block s="gotoXY"><block s="reportSum"><l>-100</l><block s="reportProduct"><l>50</l><block var="j"/></block></block><block s="reportDifference"><l>100</l><block s="reportProduct"><l>50</l><block var="i"/></block></block></block><block s="createClone"><l><option>myself</option></l></block><block s="doChangeVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block></script></custom-block></script></custom-block><block s="hide"></block></script></block-definition><block-definition s="possible winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></list></block></block></script></block-definition><block-definition s="status of triple %&apos;triple&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><list><block var="triple"/></list></custom-block></block></script></block-definition><block-definition s="status of all winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possible winning triples"></custom-block></block></block></script></block-definition><block-definition s="won? %&apos;who&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="status of all winning triples"></custom-block><block s="reportNewList"><list><block var="who"/><block var="who"/><block var="who"/></list></block></block></block></script></block-definition><block-definition s="tied?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportEquals"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block><l></l></block></block></script></block-definition><block-definition s="draw win line" type="command" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>i</l><l>1</l><l>8</l><script><block s="doDeclareVariables"><list><l>line</l></list></block><block s="doIf"><block s="reportOr"><block s="reportEquals"><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block><block s="reportEquals"><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></block></block><script><block s="doSetVar"><l>line</l><block s="reportListItem"><block var="i"/><block var="win lines"/></block></block><block s="up"></block><block s="doGotoObject"><block s="reportListItem"><l>1</l><block var="line"/><comment w="137.33333333333334" collapsed="false">This is why each line in WIN LINES is a list of points, each of which is a list of x,y coordinates:  It allows us to use the endpoints, as points, in the GO TO block.</comment></block></block><block s="down"></block><block s="doGotoObject"><block s="reportListItem"><l>2</l><block var="line"/></block></block><block s="up"></block></script></block></script></block></script><scripts><comment x="174" y="6.666666666666667" w="244" collapsed="false">I&apos;m kind of bummed that I didn&apos;t find a beautiful one-line solution using FIND FIRST, but it just gives the value it finds, not the position in the list, which is what we need to find the line endpoints in WIN LINES. So it&apos;s a plain old fashioned FOR loop.</comment></scripts></block-definition></blocks><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="1286">1,2,3,4,5,6,7,8,9</list></variable><variable name="playing"><bool>true</bool></variable><variable name="win lines"><list id="1287"><item><list id="1288"><item><list struct="atomic" id="1289">-100,50</list></item><item><list struct="atomic" id="1290">100,50</list></item></list></item><item><list id="1291"><item><list struct="atomic" id="1292">-100,0</list></item><item><list struct="atomic" id="1293">100,0</list></item></list></item><item><list id="1294"><item><list struct="atomic" id="1295">-100,-50</list></item><item><list struct="atomic" id="1296">100,-50</list></item></list></item><item><list id="1297"><item><list struct="atomic" id="1298">-50,100</list></item><item><list struct="atomic" id="1299">-50,-100</list></item></list></item><item><list id="1300"><item><list struct="atomic" id="1301">0,100</list></item><item><list struct="atomic" id="1302">0,-100</list></item></list></item><item><list id="1303"><item><list struct="atomic" id="1304">50,100</list></item><item><list struct="atomic" id="1305">50,-100</list></item></list></item><item><list id="1306"><item><list struct="atomic" id="1307">-100,100</list></item><item><list struct="atomic" id="1308">100,-100</list></item></list></item><item><list id="1309"><item><list struct="atomic" id="1310">-100,-100</list></item><item><list struct="atomic" id="1311">100,100</list></item></list></item></list></variable><variable name="Number of Moves"><l>0</l></variable><variable name="b"><l>0</l></variable></variables></project><media name="U3L3-TicTacToe" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>