<snapdata remixID="10031386"><project name="U3L1-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,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+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+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts><script x="20" y="20.00000000000003"><block s="receiveInteraction"><l><option>clicked</option></l><comment w="53.333333333333336" collapsed="true">3.1.5.7</comment></block><block s="doIf"><block s="reportAnd"><block var="playing"/><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l><comment w="124" collapsed="true">If square is empty...</comment></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="doSayFor"><l>X WON!</l><l>2</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Stage</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="doSayFor"><l>O WON!</l><l>2</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Stage</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><comment w="171.33333333333334" collapsed="false">Alternate between TRUE (x&apos;s turn) and FALSE (o&apos;s turn)</comment></block><block s="doIf"><block s="reportAnd"><block var="playing"/><custom-block s="tied? (2)"></custom-block></block><script><block s="doSayFor"><l>It&apos;s a tie!</l><l>3</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="reportListLength"><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="doSayFor"><l>It&apos;s a tie!</l><l>3</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></scripts><sprites><sprite name="Square" idx="1" x="50" y="-50" heading="90" scale="0.95" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="2" color="80,80,80,1" pen="tip" id="166"><costumes><list id="167"><item><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAABKElEQVRoQ+2bIQ6DQBBFPzfoDVqDbhMEhqQVa/YWvQEWBzgsp1mzogKDIKnH0BtwhGYbQtLSVs9uPieYN/+/jFkiABWAI4ATwvzu0QJ5BnAJkxG3T8hJa400TQ8+A/d9PxljHILjeIfUWk9t2yKOY68hx3Gc8jyHMWYLWVUVyrL0OcR19rqu4Xg2SRLSs3yZJJ30qLKsK+vKusraAJ2kk7Ia+Xca1pV1ZV1lbYBO0klZjeQJoZN0kk7K2gCdpJOyGsk7SSfpJJ2UtQE6SSdlNZJ3kk7SSTopawN0kk7KaiTvJJ2kkyE4qZSam6ZBkiQ7j3g2ow7DMBdFAWut49g8z56VUsiyzGvIrutma62D/wrpc4C/Zn8leV0epO9DJATwcJCh/iqxZvYEuRuoAhendhsAAAAASUVORK5CYII=" id="168"/></item><item><costume name="X" center-x="29" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAADw0lEQVRoQ93bvU/bQBgG8IdWQgyWYOiQDYZuDAl7IUFd6AT8BYSNIQOoS7bAxggDCwzAxgZjlwoGxqoCQbYOsGWoKpAYEFKl6nE5yznss30fdpyTWGIH+3fve++ZOzOC4WwTAB4EbQTAJoAqgNqQeN8BqAB4AfAHwE+BrANoDAlSZlzIyBfP89BqtUbHxsZKZX5+fsbR0RF6vV4i0j+hVqvh/PwcExNM7XK05eVlnJ2dBTc7PT39u9vtfgDwJpLBSWWCrq6u+lEU7fDwEPf399jcZLmRkEtLS329UQaoDOx0Oj5ua2srGsmDk5OT4BdFG2SoDFxZWQkiqkSyJxj6QYeqgAxQIpInRUGZ64xs0S0JmBoZBWW1ZdUtEpoGmAnpl6aLC7AgPT4++gEsEipnV3gMytmVKl3DX7q6ukKj0SgUmgWYOZICWyRUBtbrdT/DVC1zJIuEysBqteoDk57GtJHE5hlRXaB2uuY9Rk2AVpCuI2oKtIZ0BeVwmJ+fx8PD/z/s045B4ylEVcVsjlFbQKuRtFl1ZeD4+Lhf5KamprSeIo2qa9wVTSIaBeQ0YfL46AQZN0b5UM/HQlXnhMcgI2gKdJKuqumFxwhtNptvnC4iKC7iLJLiAnd3d370rq+vA5gM5TkzMzNBFbUVwdyQvBCnAD7UR0F5jCnKSLLZBjpP13BORkH39vZwcHDgFJgrMi6i4Y44PT1VFiat+SPt8ofuL4/6HiM6OzuL29vbvsNxBcnGtZ0XHvkmiZybm8PNzc1wIuUiI3eAq2jmGklOE6KKEsjCs7+/r5xeSpWuUcv3fChQTS82gLlV1zigQLiGOk/XtGujLqFOkWmBqohyT4bbFSbNGTIrUAXl2GXl1W1OkLrAMHR9fR3Hx8eBywRqHSn2A8XdqZbvkyJDmA2oVWTW5fskJI/bgFpDugCKTjCFWkHaWBtNiqoJ1BiZB9A0okbIPIEmUG1kEUBdqBaSy4RclxFNd/k+aRyqjmcZo5mRNpfvTZBZppdMSBnI93z4WdImqCnGNKKpkS4Xf007QU5drvPyWVd0firkIAPjilH47bFEZBmAArqzs4ONjY0gMQR0d3c3/t26xcXFvk1QF6vbpqkqfz/q7bGFhQVsb2/z1P5XQdvtNk5OTsB9CrYyAAVYhlYqFfGCbz/S87y/T09P78sGjIO+fn4pXs/+DOBTOA3W1tbA3ihbYz0Jv8HMvSeB/ArAKxso5f3+IJK7o9wK/gJgFMAlgF8pf8Egn/bx9ea+Eyn+VYIf8ufbIN+5zr39A7wlN3D1pfCoAAAAAElFTkSuQmCC" id="169"/></item><item><costume name="O" center-x="28" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAEX0lEQVRoQ+2aizUsQRCGeyJABGwEiAARsBEgAkSwuxEgAjYCRGA3AkSACBDB3PPNubWnts2juuexa6lznPsw091//VV/V1dP4pwbOuf23OraNPkPcrC6GN3oV4IcpWn641lNkmTknBMc80ymaboyUZskBGlm3YF8e3tz7+/v2aybm5tua2urVYe2DnI6nbr7+3s3mUzc8/NzKZidnR23v7/vjo6O3N5ecyLfCkiYGo1GGbjPz88oltbX1zOwg8GgNtONggTQ9fW1Gw7ZbotNh6gO3aI3GO/s7MwBPMYaA3l7e+suLi6+MQcgGJEwLFukhDV/Ss7K8wC8vLx0JycnwTgbAQm4q6urucnJKRgAXIyRw7xPTms7Pz/PwIZYLZCE5+npaZZ7YjAHYNhrwhgbYJpZxr65uTGHbzRIAB4cHMwp5vHxcQYwNneKnMJcAB2Px7NHUOLHx0fTXNEgYZA8FEMFqwSnLrOMj2qLkZ8wWmVRIP3JmChGEKoWl/d7HIuDQ5wbDJIc6ff7s0mQdl90YhYf8g6hy1Yldnd3V6oBwSB7vZ5jb8MODw/nRCdkoXWfRXweHh6yYSgLX19fC4cMAgljbBfY2tpaBrZpkbGCR4wA9/X1lb3CtgLDeWYGyaCwKGVa2aDWhdZ9TjsdZ8NmntPNIPWA7IUSsnUXWvd92JQ9tMjxZpC7u7uzPbFLNa1yglZbqiwqJd9MIAnRjY2N2bsfHx8Ly0UfgGVtJpAWb1V5vM3fU/28vLxkU+RFmQkkG72UVMsgOL7DtF5QWupKjGdNIDlJyGmAejH2ZNEWm+QhdTSWl5d/IMXziI7sj8skOrI+LT7sk6xRm4lJ9ZBb1lZl2Rr/QArlWqKfnp4c/14mo9VJsYJtb29/a32amFwhdR3OXfjo3NMgq85ui2BYn3GjtxDdCcjbbBcBTM+pi5W8NowK12ImdcxXHVAXAVhvcXmaYcpJFs7+IwfUZRIfTUDREdAMUofEMoWsZV1mkLo+hFlO4W1fuVWFPgd3uhViRXW1GSQDaZXl7wy6SKMol0Ny0YHZfAoRIL7nFrmd+P3XssgKYhKwOgcQI9jsugJCbGBRDg1VGhEMkoEJVTmJk5eobVetSb9rSBlHyJbNHwwSNvEkQGVLCbl8qZPDpAvde7mWp/cLwKpIigLJQn21bTt0/RBlDdYuRTRIJvGTH6By9V2HMf9d7j387nhIW7QWyLzQ5f8IHxpedXtBRAvXEvqrEWuIBncGqlghV7iAETGS5wGJGrOHWQsHxqJpRpT4jWJEhhOHdSxZR20mZSBUj9YgPyJI2jmwK1fsLFIWCii5cgBA3rc+sEe48hOj4o2B1GD9q++qSCj7fRNX9I2D1NWRfLIi94hWsNx7yicxoaGZN0drIPVkhLL+7EyHqA5d+ewsJiTLHNgJSCuDbT1n6gy0NXlX4/42Jr99nj1J0zTum7GuKDLMkyQJt7KC43d+g27w0497JGtJ/vjwrHL7P5XNSaMYdLI4AAAAAElFTkSuQmCC" id="170"/></item></list></costumes><sounds><list struct="atomic" id="171"></list></sounds><blocks></blocks><variables><variable name="position number"><l>10</l></variable></variables><scripts><script x="12" y="10"><block s="receiveGo"><comment w="53.333333333333336" collapsed="true">3.1.5.5</comment></block><block s="clear"></block><custom-block s="makeBoard"><comment w="129.33333333333334" collapsed="true">3.1.5.6  Look inside. </comment></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l><comment w="90" collapsed="true">X plays first.</comment></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><script x="10" y="177.16666666666666"><block s="receiveInteraction"><l><option>clicked</option></l><comment w="53.333333333333336" collapsed="true">3.1.5.7</comment></block><block s="doIf"><block s="reportAnd"><block var="playing"/><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l><comment w="124" collapsed="true">If square is empty...</comment></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="doSayFor"><l>X WON!</l><l>2</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Stage</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="doSayFor"><l>O WON!</l><l>2</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Stage</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><comment w="171.33333333333334" collapsed="false">Alternate between TRUE (x&apos;s turn) and FALSE (o&apos;s turn)</comment></block><block s="doIf"><block s="reportAnd"><block var="playing"/><custom-block s="tied? (2)"></custom-block></block><script><block s="doSayFor"><l>It&apos;s a tie!</l><l>3</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="reportListLength"><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="doSayFor"><l>It&apos;s a tie!</l><l>3</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="379" y="264.66666666666697"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block></script><script x="377" y="317.0000000000002"><custom-block s="status of triple %l"><l/></custom-block></script><script x="510" y="312.00000000000045"><custom-block s="status of all winning triples"></custom-block></script><script x="492" y="347.3333333333335"><block s="reportEquals"><custom-block s="status of triple %l"><l/></custom-block><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block></script><script x="496" y="411.8333333333336"><custom-block s="tied? (2)"></custom-block></script><script x="284" y="111.0000000000002"><block s="doSetVar"><l>win line</l><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><block s="reportNewList"><list><l>-100</l><l>0</l></list></block><block s="reportNewList"><list><l>100</l><l>0</l></list></block><block s="reportNewList"><list><l>-100</l><l>-50</l></list></block><block s="reportNewList"><list><l>100</l><l>-50</l></list></block><block s="reportNewList"><list><l>-50</l><l>100</l></list></block><block s="reportNewList"><list><l>-50</l><l>-100</l></list></block><block s="reportNewList"><list><l>0</l><l>100</l></list></block><block s="reportNewList"><list><l>0</l><l>-100</l></list></block><block s="reportNewList"><list><l>50</l><l>100</l></list></block><block s="reportNewList"><list><l>50</l><l>-100</l></list></block><block s="reportNewList"><list><l>-100</l><l>100</l></list></block><block s="reportNewList"><list><l>100</l><l>-100</l></list></block><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></script><script x="506" y="376.0000000000002"><custom-block s="won? %s"><l></l></custom-block></script><script x="237" y="558.1666666666663"><block s="doStopThis"><l><option>all</option></l></block></script></scripts></sprite><watcher var="playing" style="normal" x="10" y="103.000002" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="8" y="30" color="243,118,29" extX="80" extY="70"/><watcher scope="Square" var="position number" style="normal" x="-1" y="1.000001999999995" color="243,118,29"/><watcher var="win line" style="normal" x="10" y="145.00000599999998" color="243,118,29"/></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></block><block s="setScale"><l>95</l></block><block s="doSetVar"><l>position number</l><l>1</l></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></block></script></custom-block></script><comment w="128" collapsed="false">The nested FOR loops are the important part of this solution.  </comment></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>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>2</l><l>5</l><l>8</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"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><list><custom-block s="possible winning triples"></custom-block></list></custom-block></block></script></block-definition><block-definition s="won? %&apos;who&apos;" type="reporter" 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="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="tied? (2)" 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 line"/></block></block><block s="up"></block><block s="doGotoObject"><block s="reportListItem"><l>1</l><block var="line"/></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></block-definition></blocks><variables><variable name="X&apos;s turn?"><bool>false</bool></variable><variable name="board"><list struct="atomic" id="1314">O,O,O,4,X,6,7,X,9,X</list></variable><variable name="playing"><bool>true</bool></variable><variable name="win line"><l>0</l></variable></variables></project><media name="U3L1-TicTacToe" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>