<snapdata remixID="11291630"><project name="L13 Tic-Tac-Toe" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="L13 Tic-Tac-Toe"><notes></notes><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.7777807777777"><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><custom-block s="for %upvar = %n to %n %cs"><l>row</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>column</l><l>1</l><l>3</l><script><block s="doSetVar"><l>number</l><block s="reportVariadicSum"><list><block var="number"/><l>1</l></list></block></block><block s="doSetVar"><l>square number</l><block var="number"/></block><block s="doAddToList"><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block></list></block><block var="block positions"/></block><block s="createClone"><l><option>myself</option></l></block><block s="setHeading"><l>180</l></block><block s="forward"><l>50</l></block></script></custom-block><block s="forward"><l>-150</l></block><block s="setHeading"><l>90</l></block><block s="forward"><l>50</l></block></script></custom-block><block s="hide"></block></script></block-definition><block-definition s="TicTacToe wins" type="reporter" category="variables"><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="variables"><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="won? %&apos;who&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportListContainsItem"><custom-block s="status of triple %l"><custom-block s="TicTacToe wins"></custom-block></custom-block><block s="reportNewList"><list><block var="who"/><block var="who"/><block var="who"/></list></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="go to %&apos;blocks&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="gotoXY"><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="blocks"/></block><block var="block positions"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="blocks"/></block><block var="block positions"/></block></block></block><block s="down"></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportListItem"><l>2</l><block var="blocks"/></block><block var="block positions"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><block s="reportListItem"><l>2</l><block var="blocks"/></block><block var="block positions"/></block></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="blocks"/></block><block var="block positions"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="blocks"/></block><block var="block positions"/></block></block></block><block s="up"></block></script></block-definition></blocks><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" id="805"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="806"></list></costumes><sounds><list struct="atomic" id="807"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="150" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="812"><costumes><list id="813"><item><ref mediaID="Square_cst_Empty"></ref></item><item><ref mediaID="Square_cst_X"></ref></item><item><ref mediaID="Square_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="814"></list></sounds><blocks></blocks><variables><variable name="id"><l>0</l></variable><variable name="square number"><l>9</l></variable></variables><scripts><script x="15.266666666666652" y="20.466666666666697"><block s="receiveGo"></block><block s="removeClone"><comment w="118" collapsed="false">This affects only clones, not the original sprite.</comment></block></script><script x="15" y="84.93333333333374"><block s="receiveGo"></block><block s="clear"></block><block s="up"></block><block s="doSetVar"><l>block positions</l><block s="reportNewList"><list><l></l></list></block></block><block s="doDeleteFromList"><l>1</l><block var="block positions"/></block><block s="show"></block><block s="doSetVar"><l>board</l><block s="reportNewList"><list><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l></list></block></block><block s="doSetVar"><l>number</l><l>0</l></block><block s="doBroadcast"><l>Start</l><list></list></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doWait"><l>.1</l><comment w="181.33333333333334" collapsed="true">Wait for old clones to be deleted.</comment></block><custom-block s="makeBoard"></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></script><script x="405.9333333333336" y="10"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIfElse"><block s="reportEquals"><block s="getCostumeIdx"></block><l>2</l></block><script><block s="doBroadcast"><l>X block</l><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script><script><block s="doIfElse"><block s="reportEquals"><block s="getCostumeIdx"></block><l>3</l></block><script><block s="doBroadcast"><l>O block</l><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block></script><script><block s="doSwitchToCostume"><l>O</l></block></script></block><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doReplaceInList"><block var="square number"/><block var="board"/><l>X</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doReplaceInList"><block var="square number"/><block var="board"/><l>O</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block></script></block><block s="doIf"><custom-block s="won? %s"><l>X</l></custom-block><script><block s="doBroadcast"><l>X</l><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script></block><block s="doIf"><custom-block s="won? %s"><l>O</l></custom-block><script><block s="doBroadcast"><l>O</l><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block var="board"/><l>Empty</l></block></block><script><block s="doBroadcast"><l>Tie</l><list></list></block></script></block><block s="doIf"><block s="reportOr"><custom-block s="won? %s"><l>X</l></custom-block><custom-block s="won? %s"><l>O</l></custom-block></block><script><block s="doStopThis"><l><option>all scenes</option></l></block></script></block></script><script x="10" y="409.89999999999986"><block s="receiveKey"><l><option>r</option></l><list></list></block><block s="clear"></block><block s="up"></block><block s="doSetVar"><l>block positions</l><block s="reportNewList"><list><l></l></list></block></block><block s="doDeleteFromList"><l>1</l><block var="block positions"/></block><block s="show"></block><block s="doSetVar"><l>board</l><block s="reportNewList"><list><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l></list></block></block><block s="doSetVar"><l>number</l><l>0</l></block><block s="doBroadcast"><l>Start</l><list></list></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doWait"><l>.1</l><comment w="181.33333333333334" collapsed="true">Wait for old clones to be deleted.</comment></block><custom-block s="makeBoard"></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></script><script x="518.999999999998" y="493.3999999999994"><custom-block s="for each %upvar of %l %cs"><l>item</l><custom-block s="TicTacToe wins"></custom-block><script><block s="doIf"><block s="reportEquals"><block var="item"/><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block><script><custom-block s="go to %l"><block var="item"/></custom-block></script></block></script></custom-block></script></scripts></sprite><watcher var="X&apos;s turn?" style="normal" x="5" y="5" color="243,118,29" hidden="true"/><watcher scope="Square" var="id" style="normal" x="20" y="20.000000000000014" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="10" y="10" color="243,118,29" extX="80" extY="70"/><watcher scope="Square" var="square number" style="normal" x="10" y="103.000002" color="243,118,29" hidden="true"/><watcher var="number" style="normal" x="11" y="129.000004" color="243,118,29" hidden="true"/><watcher var="block positions" style="normal" x="10" y="124.00000399999999" color="243,118,29" hidden="true"/><watcher var="Wins" style="normal" x="10" y="250.00000599999998" color="243,118,29" hidden="true"/><watcher scope="Stage" s="reportMouseX" style="normal" x="10" y="271.000008" color="4,148,220" hidden="true"/><watcher scope="Stage" s="reportMouseY" style="normal" x="10" y="292.00000999999986" color="4,148,220" hidden="true"/><sprite name="Sprite" idx="2" x="0" y="-100" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="235,38,0,1" pen="tip" id="1065"><wear><ref mediaID="4"></ref></wear><costumes><list struct="atomic" id="1066"></list></costumes><sounds><list struct="atomic" id="1067"></list></sounds><blocks></blocks><variables></variables><scripts><script x="15" y="10"><block s="receiveMessage"><l>O</l><list></list></block><block s="doSayFor"><l>O has won!</l><l>2</l></block><block s="doSetVar"><l>Wins</l><l>1</l></block><block s="doUntil"><block s="reportEquals"><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="reportListItem"><block var="Wins"/><custom-block s="TicTacToe wins"></custom-block></block></list></custom-block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></block><script><block s="doSetVar"><l>Wins</l><block s="reportVariadicSum"><list><block var="Wins"/><l>1</l></list></block></block></script></block><custom-block s="go to %l"><block s="reportListItem"><block var="Wins"/><custom-block s="TicTacToe wins"></custom-block></block></custom-block><block s="setSize"><l>10</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doSwitchToCostume"><block s="reportPenTrailsAsCostume"></block></block><block s="doSayFor"><l>Press r to play again</l><l>2</l></block></script><script x="10" y="389.5999999999995"><block s="receiveMessage"><l>Start</l><list></list></block><block s="doSayFor"><l>X goes first.</l><l>2</l></block></script><script x="229.0000000000001" y="12.166666666666657"><block s="receiveMessage"><l>X block</l><list></list></block><block s="doSayFor"><l>X already chose this block</l><l>2</l></block></script><script x="13" y="319.2666666666664"><block s="receiveMessage"><l>Tie</l><list></list></block><block s="doSayFor"><l>Tie Game.</l><l>2</l></block></script><script x="510.9999999999991" y="16.23333333333329"><block s="receiveGo"></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="up"></block><block s="gotoXY"><l>-210</l><l>-150</l></block></script><script x="506.9999999999992" y="134.00000000000006"><block s="receiveKey"><l><option>r</option></l><list></list></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="up"></block><block s="gotoXY"><l>-210</l><l>-150</l></block></script><script x="275.99999999999943" y="203.59999999999962"><block s="receiveMessage"><l>O block</l><list></list></block><block s="doSayFor"><l>O already chose this block</l><l>2</l></block></script><script x="194" y="318.9999999999998"><block s="receiveMessage"><l>X</l><list></list></block><block s="doSayFor"><l>X has won!</l><l>2</l></block><block s="doSetVar"><l>Wins</l><l>1</l></block><block s="doUntil"><block s="reportEquals"><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="reportListItem"><block var="Wins"/><custom-block s="TicTacToe wins"></custom-block></block></list></custom-block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block><script><block s="doSetVar"><l>Wins</l><block s="reportVariadicSum"><list><block var="Wins"/><l>1</l></list></block></block></script></block><custom-block s="go to %l"><block s="reportListItem"><block var="Wins"/><custom-block s="TicTacToe wins"></custom-block></block></custom-block><block s="goToLayer"><l><option>front</option></l></block><block s="setSize"><l>20</l></block><block s="doSwitchToCostume"><block s="reportPenTrailsAsCostume"></block></block><block s="doSayFor"><l>Press r to play again</l><l>2</l></block></script></scripts></sprite></sprites></stage><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="1245">X,X,X,O,O,O,Empty,Empty,Empty</list></variable><variable name="number"><l>9</l></variable><variable name="block positions"><list id="1246"><item><list struct="atomic" id="1247">0,0</list></item><item><list struct="atomic" id="1248">0,-50</list></item><item><list struct="atomic" id="1249">0,-100</list></item><item><list struct="atomic" id="1250">50,0</list></item><item><list struct="atomic" id="1251">50,-50</list></item><item><list struct="atomic" id="1252">50,-100</list></item><item><list struct="atomic" id="1253">100,0</list></item><item><list struct="atomic" id="1254">100,-50</list></item><item><list struct="atomic" id="1255">100,-100</list></item></list></variable><variable name="Wins"><l>1</l></variable></variables></scene></scenes></project><media name="L13 Tic-Tac-Toe" app="Snap! 7, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAASZJREFUaEPtm7ENgzAQRX82yAZJSZdIVFQOldfICEgMgBkAiXVcEVdUSCkpyQaMEDlCSAlJ6rP1meDe/f90jdkBMABOAM6I87vvFkgF4BInI26fkJPWGlmWHUMG7vt+stZ6BM/xDqm1ntq2RZIkQUOO4zgVRQFr7RbSGIOqqkIOcZ29rmt4nk2ShAwsXyZJJwOqLOvKurKusjZAJ+mkrEb+nYZ1ZV1ZV1kboJN0UlYjeULoJJ2kk7I2QCfppKxG8k7SSTpJJ2VtgE7SSVmN5J2kk3SSTsraAJ2kk7IayTtJJ+lkDE4qpeamaZCm6T4gns2owzDMZVnCOec5Ns+zZ6UU8jwPGrLrutk55+G/QoYc4K/ZX0lelwfphxgJATw8ZKy/SqyZPQG3g6gCsLPvogAAAABJRU5ErkJggg==" mediaID="Square_cst_Empty"/><costume name="X" center-x="29" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAAAAXNSR0IArs4c6QAAA8BJREFUaEPd271P20AYBvCHViIMlWDokC0ZKtaEvZBEXdIJ+AuAjRHUhQ3YGGFggSHJxkbGLhUMjFUFggkxwMZQVbABUqXqcTnLOeyzfR92nJNYYgf7d+/de8fdMYbRLFMAHgRtDMAWgBqA+oh43wEoA3gB8AfAL4FsAGiOCFJmnMrIl1KphPX19fGJiYlCmZ+entDtdnF/fx+L9G6o1+s4OTnB1BSbdjHK4uIi+v2+/7LT09O/r6+vPwJ4E0n/piJBV1ZWvCiK0ul0cHd3h60tphsJubCwMFAbRYDKwM3NTQ+3vb0djuTFSqUCflGUYYbKwKWlJT+iSiRrgqEfdqgKyADFInlTGJRtnZHNu8QBEyPDoMy2zLp5QpMAUyG91HR6Ciakx8dHL4B5QuXWFeyDcutK1FyDXzo/P0ez2cwVmgaYOpICmydUBjYaDa+FqUrqSOYJlYG1Ws0Dxs3GtJHEZhlRXaB2c826j5oArSBdR9QUaA3pCsru0Gq18PDw/w/7pH3QeAhRZTGbfdQW0GokbWZdGTg5OekluWq1qjWLNMquUU80iWgYkMOEyfTRCTKqj3JSz2mhqnKCfZARNAU6aa6q4YXXCF1eXn7jdBFB8RBnkRQPuL299aJ3cXHhw2Qo75mZmfGzqK0IZobkgzgEcFIfBuU1NlFGksU20HlzDbbJMOj+/j4ODw+dAjNFRkU0WBHHx8fKxKQ1fiRd/tD95WHfY0RnZ2dxdXU1cDkqIdl4tvPEI78kkXNzc7i8vBxNpJxk5ApwFc1MI8lhQmRRApl4Dg4OlMNLoZpr2PI9JwWq4cUGMLPsGgUUCNdQ58016dqoS6hTZFKgKqLck+F2hUlxhkwLVEHZd5l5dYsTpC4wCF1bW0Ov1/NdJlDrSLEfKN5OtXwfFxnCbECtItMu38ched0G1BrSBVBUginUCtLG2mhcVE2gxsgsgKYRNUJmCTSBaiPzAOpCtZBcJuS6jCi6y/dx/VB1PU0fTY20uXxvgkwzvKRCykCe8+FncZugphjTiCZGulz8Na0EuelynZdzXVH5iZDDDIxKRsHTY7HIIgAFdHd3l0dX/YYhoHt7e9Fn6+bn5wc2QV2sbps2Vfn7YafH2u02dnZ2eOvgUdCNjQ0cHR2B+xQsRQAKsAwtl8vigO8gslQq/X1+fn5fNGAU9PXzM3E8+wuAz8FmsLq6CtZG0QrzSfAEM/eeBPIbgA9FAyV8359EcneUW8FfAYwDOANwk/AXDPNtn15f7geR4l8l+CF/vg/zm+u82z+7cTdw3z7H+AAAAABJRU5ErkJggg==" mediaID="Square_cst_X"/><costume name="O" center-x="28" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAABF9JREFUaEPtmos1LEEQhnsiQARsBIgAEbARIAJEsLsRIAI2AkRgNwJEgAgQwdzzzbm1p7bNo7rnsWupc5z7MNPdf/1Vf1dXT+KcGzrn9tzq2jT5D3Kwuhjd6FeCHKVp+uNZTZJk5JwTHPNMpmm6MlGbJARpZt2BfHt7c+/v79msm5ubbmtrq1WHtg5yOp26+/t7N5lM3PPzcymYnZ0dt7+/746OjtzeXnMi3wpImBqNRhm4z8/PKJbW19czsIPBoDbTjYIE0PX1tRsO2W6LTYeoDt2iNxjv7OzMATzGGgN5e3vrLi4uvjEHIBiRMCxbpIQ1f0rOyvMAvLy8dCcnJ8E4GwEJuKurq7nJySkYAFyMkcO8T05rOz8/z8CGWC2QhOfp6WmWe2IwB2DYa8IYG2CaWca+ubkxh280SAAeHBzMKebx8XEGMDZ3ipzCXAAdj8ezR1Dix8dH01zRIGGQPBRDBasEpy6zjI9qi5GfMFplUSD9yZgoRhCqFpf3exyLg0OcGwySHOn3+7NJkHZfdGIWH/IOoctWJXZ3d1eqAcEge72eY2/DDg8P50QnZKF1n0V8Hh4esmEoC19fXwuHDAIJY2wX2NraWga2aZGxgkeMAPf19ZW9wrYCw3lmBsmgsChlWtmg1oXWfU47HWfDZp7TzSD1gOyFErJ1F1r3fdiUPbTI8WaQu7u7sz2xSzWtcoJWW6osKiXfTCAJ0Y2Njdm7Hx8fC8tFH4BlbSaQFm9VebzN31P9vLy8ZFPkRZkJJBu9lFTLIDi+w7ReUFrqSoxnTSA5SchpgHox9mTRFpvkIXU0lpeXfyDF84iO7I/LJDqyPi0+7JOsUZuJSfWQW9ZWZdka/0AK5Vqin56eHP9eJqPVSbGCbW9vf2t9mphcIXUdzl346NzTIKvObotgWJ9xo7cQ3QnI22wXAUzPqYuVvDaMCtdiJnXMVx1QFwFYb3F5mmHKSRbO/iMH1GUSH01A0RHQDFKHxDKFrGVdZpC6PoRZTuFtX7lVhT4Hd7oVYkV1tRkkA2mV5e8MukijKJdDctGB2XwKESC+5xa5nfj917LICmISsDoHECPY7LoCQmxgUQ4NVRoRDJKBCVU5iZOXqG1XrUm/a0gZR8iWzR8MEjbxJEBlSwm5fKmTw6QL3Xu5lqf3C8CqSIoCyUJ9tW07dP0QZQ3WLkU0SCbxkx+gcvVdhzH/Xe49/O54SFu0Fsi80OX/CB8aXnV7QUQL1xL6qxFriAZ3BqpYIVe4gBExkucBiRqzh1kLB8aiaUaU+I1iRIYTh3UsWUdtJmUgVI/WID8iSNo5sCtX7CxSFgoouXIAQN63PrBHuPITo+KNgdRg/avvqkgo+30TV/SNg9TVkXyyIveIVrDce8onMaGhmTdHayD1ZISy/uxMh6gOXfnsLCYkyxzYCUgrg209Z+oMtDV5V+P+Nia/fZ49SdM07puxrigyzJMkCbeyguN3foNu8NOPeyRrSf748Kxy+z+VzUmjGHSyOAAAAABJRU5ErkJggg==" mediaID="Square_cst_O"/><costume name="Costume" center-x="10" center-y="110" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAB4CAYAAADyv9IsAAAAAXNSR0IArs4c6QAAAWhJREFUaEPtmj1Ow0AQhd8YgRJ6kBA/VZwTcBKXhDNAxyHo4AyEDp+EG7jiJ0JgaoiC8KBFOHJM0C7jpeK53J19Xn/+vI1HsOS620F/rYdsJUGmin0RbLkyVTyI4Pq9Qj6bIt+9x2t7ubQHyhQHEJwC2F52s8bYBIqTjQKXzbqFwKcUZyI48gQtTKvifLPAcT04D7SE1SHN0M/Ar8cc/2Zn32oVI/f44l5Abx1FADPf/SbTF6TyOMAoSXDhqw6ZryocyvMQVwpkIQt8NQLkUqa4gWDPVxw0r7h1O5wpsBq0wFMkwJuUQ2iMsLmHDOyMky+lM0KQIRkaCFAbA7TWEjIkQwMBamOAxk+P2lAbAwFqY4DG04baUBsDAWpjgMbThtpQGwMBamOAxtOG2lAbAwFqY4DG04baUBsDgf+oTfyf/n/QlhC3cSJ6a0f05hPnbtT2mPpjiNrA0yX0xxajOjRqE1Qd2qVN6wPPyUUgyRW8iAAAAABJRU5ErkJggg==" mediaID="4"/></media></snapdata>