<snapdata remixID="10155913"><project name="U3L3-TicTacToe-Final" 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,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</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" y="-50" 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,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAABKElEQVRoQ+2bIQ6DQBBFPzfoDVqDbhMEhqQVa/YWvQEWBzgsp1mzogKDIKnH0BtwhGYbQtLSVs9uPieYN/+/jFkiABWAI4ATwvzu0QJ5BnAJkxG3T8hJa400TQ8+A/d9PxljHILjeIfUWk9t2yKOY68hx3Gc8jyHMWYLWVUVyrL0OcR19rqu4Xg2SRLSs3yZJJ30qLKsK+vKusraAJ2kk7Ia+Xca1pV1ZV1lbYBO0klZjeQJoZN0kk7K2gCdpJOyGsk7SSfpJJ2UtQE6SSdlNZJ3kk7SSTopawN0kk7KaiTvJJ2kkyE4qZSam6ZBkiQ7j3g2ow7DMBdFAWut49g8z56VUsiyzGvIrutma62D/wrpc4C/Zn8leV0epO9DJATwcJCh/iqxZvYEuRuoAhendhsAAAAASUVORK5CYII=" id="10"/></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="11"/></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="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="20.27027027027027" y="6.756756756756757"><block s="receiveGo"><comment w="90" collapsed="true">Sets the entire game into place.</comment></block><block s="clear"></block><custom-block s="makeBoard"></custom-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><comment w="90" collapsed="true">The board needs to be 1 to 9 because there&apos;s nine squares.</comment></block></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script x="20.27027027027027" y="165.66210655099536"><custom-block s="possibleWinning"></custom-block></script><script x="20.27027027027027" y="189.43576910243576"><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="20.27027027027027" y="226.4439995551108"><custom-block s="statusOfTriple %l"><l/></custom-block></script><script x="20.27027027027027" y="250.32054276498738"><block s="reportEquals"><custom-block s="statusOfTriple %l"><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></custom-block><l></l></block></script><script x="20.27027027027027" y="285.57980202424676"><custom-block s="statusOfAllWinningTriples"></custom-block></script><script x="20.27027027027027" y="309.3534645756871"><custom-block s="won? %s"><l></l></custom-block></script><script x="20.27027027027027" y="336.61272383494634"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportAnd"><block var="playing"/><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l></block><comment w="90" collapsed="true">Game begins if the game board is blank and if playing block is true.</comment></block><script><block s="doIfElse"><block var="X&apos;s turn?"><comment w="90" collapsed="true">Game begins with X&apos;s turn.</comment></block><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l><comment w="90" collapsed="true">When player X clicks on the square box, the position of that square will change to an X which allows the computer to keep track of who&apos;s winning (same with O&apos;s).</comment></block><block s="doIf"><custom-block s="won? %s"><l>X</l><comment w="90" collapsed="true">Determines if player has won the game.</comment></custom-block><script><block s="goToLayer"><l><option>front</option></l></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block><comment w="90" collapsed="true">Game ends and players would not be able to keep playing.</comment></block><block s="doSayFor"><l>X won!</l><l>4</l></block><block s="doBroadcast"><l>GAME OVER</l><comment w="90" collapsed="true">Indicates for line to be drawn.</comment></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="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></script></block></script><script x="217.16216216216216" y="310.2433544655772"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></autolambda><list></list></block><l/></block></script></scripts></sprite><sprite name="Sprite" idx="2" x="0" y="-100" heading="0" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="255,32,0,1" pen="tip" id="155"><costumes><list struct="atomic" id="156"></list></costumes><sounds><list struct="atomic" id="157"></list></sounds><blocks></blocks><variables></variables><scripts><script x="13.513513513513514" y="26.17567567567576"><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><script x="13.513513513513514" y="133.54954954954962"><block s="receiveMessage"><l>GAME OVER</l></block><custom-block s="draw win line"></custom-block></script><script x="13.513513513513514" y="308.8603603603605"><block s="reportEquals"><custom-block s="statusOfAllWinningTriples"></custom-block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block></script><script x="26.35135135135135" y="346.95045045045055"><block s="show"></block><block s="doGotoObject"><l><option>random position</option></l></block><block s="doIfElse"><l/><script></script><script></script></block></script></scripts></sprite><watcher scope="Square" var="position number" style="normal" x="10" y="298.50000199999994" color="243,118,29" hidden="true"/><watcher var="playing" style="normal" x="10" y="325.499996" color="243,118,29" hidden="true"/><watcher var="win lines" style="normal" x="10" y="178.35999799999996" color="243,118,29" extX="173.54932434082025" extY="180.99999999999994" hidden="true"/><watcher var="board" style="normal" x="293" y="15" color="243,118,29" extX="118.40000000000009" extY="103.59999999999998"/></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="possibleWinning" 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><comment w="90" collapsed="true">These are all the possible winning combinations of Tic-Tac-Toe. The numbers are the square positions of the board.</comment></block></block></script></block-definition><block-definition s="statusOfTriple %&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><comment w="90" collapsed="true">Helps update the status of the game (where the X&apos;s or O&apos;s are located) .</comment></block></script></block-definition><block-definition s="statusOfAllWinningTriples" 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="statusOfTriple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possibleWinning"></custom-block></block><comment w="90" collapsed="false">Determines if game has been won by a player.</comment></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="statusOfAllWinningTriples"></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="statusOfAllWinningTriples"></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="statusOfAllWinningTriples"></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.756756756756767" 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>false</bool></variable><variable name="board"><list struct="atomic" id="1005">1,X,3,O,X,6,O,X,9</list></variable><variable name="playing"><bool>false</bool></variable><variable name="win lines"><list id="1006"><item><list id="1007"><item><list struct="atomic" id="1008">-100,50</list></item><item><list struct="atomic" id="1009">100,50</list></item></list></item><item><list id="1010"><item><list struct="atomic" id="1011">-100,0</list></item><item><list struct="atomic" id="1012">100,0</list></item></list></item><item><list id="1013"><item><list struct="atomic" id="1014">-100,-50</list></item><item><list struct="atomic" id="1015">100,-50</list></item></list></item><item><list id="1016"><item><list struct="atomic" id="1017">-50,100</list></item><item><list struct="atomic" id="1018">-50,-100</list></item></list></item><item><list id="1019"><item><list struct="atomic" id="1020">0,100</list></item><item><list struct="atomic" id="1021">0,-100</list></item></list></item><item><list id="1022"><item><list struct="atomic" id="1023">50,100</list></item><item><list struct="atomic" id="1024">50,-100</list></item></list></item><item><list id="1025"><item><list struct="atomic" id="1026">-100,100</list></item><item><list struct="atomic" id="1027">100,-100</list></item></list></item><item><list id="1028"><item><list struct="atomic" id="1029">-100,-100</list></item><item><list struct="atomic" id="1030">100,100</list></item></list></item></list></variable></variables></project><media name="U3L3-TicTacToe-Final" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>