<snapdata remixID="14941216"><project name="U3L1-Tic-Tac-Toe Setup" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="U3L1-Tic-Tac-Toe Setup"><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><list></list></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><list></list></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="reportVariadicEquals"><list><block var="data"/><block s="reportNewList"><list></list></block></list></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><list></list></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><list></list></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="reportVariadicGreaterThan"><list><block var="start"/><block var="end"/></list></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></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="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></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><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></list></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></list></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><list></list></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><list></list></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="make one row" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRepeat"><l>3</l><script><block s="doChangeVar"><l>clone number</l><l>1</l></block><block s="createClone"><l><option>myself</option></l></block><block s="changeXPosition"><l>50</l></block></script></block></script></block-definition><block-definition s="Make tic tac toe board" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>collum</l><l>1</l><l>3</l><script><custom-block s="make one row"></custom-block><block s="changeXPosition"><l>-150</l></block><block s="changeYPosition"><l>-50</l></block></script></block><block s="gotoXY"><l>1000</l><l>1000</l></block></script></block-definition><block-definition s="%&apos;x or o&apos; wins" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doForEach"><l>triple</l><block var="winning triples"/><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="triple"/></block><block var="board"/></block><block var="x or o"/></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>2</l><block var="triple"/></block><block var="board"/></block><block var="x or o"/></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="triple"/></block><block var="board"/></block><block var="x or o"/></list></block></list></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="draw?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportNot"><custom-block s="%s wins"><l>x</l></custom-block></block><block s="reportNot"><custom-block s="%s wins"><l>o</l></custom-block></block><block s="reportNot"><block s="reportListContainsItem"><block var="board"/><l>empty</l></block></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list><l><bool>true</bool></l><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></list></block></script></block-definition></blocks><primitives></primitives><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="740"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="741"></list></costumes><sounds><list struct="atomic" id="742"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="1000" y="1000" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="80,80,80,1" pen="tip" id="747"><costumes><list id="748"><item><ref mediaID="U3L1-Tic-Tac-Toe Setup_Square_cst_Empty"></ref></item><item><ref mediaID="U3L1-Tic-Tac-Toe Setup_Square_cst_X"></ref></item><item><ref mediaID="U3L1-Tic-Tac-Toe Setup_Square_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="749"></list></sounds><blocks></blocks><variables><variable name="clone number"><l>9</l></variable></variables><scripts><script x="10" y="10"><block s="receiveGo"><comment w="90" collapsed="true">when the game starts this switches the original sprites costume to the emoty square and goes to -50,50   then it sets entire board to empty and sets the clone number to 0, then it makes the tictactoe board by making clones row after row and after it sends the original sprite to 1000,1000. Then to make sure there is a win the winning clone numbers are written in order. then it sets o turn to clone number </comment></block><block s="doSwitchToCostume"><l>Empty</l></block><block s="show"></block><block s="clear"></block><block s="up"></block><block s="gotoXY"><l>-50</l><l>50</l></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>clone number</l><l>0</l></block><custom-block s="Make tic tac toe board"></custom-block><block s="doSetVar"><l>X turn</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="gotoXY"><l>1000</l><l>1000</l></block><block s="doSetVar"><l>winning triples</l><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><block s="doSetVar"><l>o turn</l><block var="clone number"/></block></script><script x="180.1357421875" y="312.3333333333332"><block var="board"/></script><script x="41" y="402.74999999999994"><block s="receiveInteraction"><l><option>clicked</option></l><comment w="90" collapsed="true">To add an x or an o the code track when one of the clones is clicked and when the X is played the code replaces the board with an X then sets X turn to false letting O turn to happen, then the computer plays by checking if X turn is false and the board contains empty. Then to play a O in a empty spot the code is repeated until item O turn of the board is empty, then it sets the o turn to 1-9 which is the entire amount of clones. Then after it replaces the board with an O then sets X to true so the player can go. Under each of the X code and O code it broadcast a win to another sprite to show that either X wins or O wins.</comment></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="X turn"/><block s="reportBoolean"><l><bool>true</bool></l></block></list></block><script><block s="doSwitchToCostume"><l>X</l></block><block s="doSetVar"><l>X turn</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doReplaceInList"><block var="clone number"/><block var="board"/><l>X</l></block><block s="doIf"><custom-block s="%s wins"><l>X</l></custom-block><script><block s="doBroadcast"><l>x wins</l><list></list></block></script><list></list></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block var="X turn"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block s="reportListContainsItem"><block var="board"/><l>empty</l></block></list></block><script><block s="doUntil"><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="o turn"/><block var="board"/></block><l>empty</l></list></block><script><block s="doSetVar"><l>o turn</l><block s="reportRandom"><l>1</l><l>9</l></block></block></script></block><block s="doReplaceInList"><block var="o turn"/><block var="board"/><l>O</l></block><block s="doSetVar"><l>X turn</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="doIf"><custom-block s="%s wins"><l>o</l></custom-block><script><block s="doBroadcast"><l>o wins</l><list></list></block></script><list></list></block></script><list></list></block></script><list></list></block></script><script x="418" y="392.0833333333341"><block s="receiveOnClone"><comment w="90" collapsed="false">This switches the clones into an O square when the computer plays.</comment></block><block s="doWaitUntil"><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="clone number"/><block var="board"/></block><l>O</l></list></block></block><block s="doSwitchToCostume"><l>O</l></block></script></scripts></sprite><sprite name="Sprite" idx="2" x="38.787109375" y="-100" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="0,104.55,10.454999999999961,1" pen="tip" id="977"><costumes><list struct="atomic" id="978"></list></costumes><sounds><list struct="atomic" id="979"></list></sounds><blocks></blocks><variables></variables><scripts><script x="108" y="20.333333333333343"><block s="receiveGo"><comment w="90" collapsed="true">when the game starts this indicates that the game is still on</comment></block><block s="clear"></block><block s="gotoXY"><l>-120</l><l>-100</l></block><block s="hide"></block><block s="write"><l>Game in progress . . .</l><l>20</l></block></script><script x="412" y="288"><block s="receiveMessage"><l>o wins</l><list></list><comment w="90" collapsed="true">When O wins this draws and stops the program to say o wins</comment></block><block s="clear"></block><block s="up"></block><block s="gotoXY"><l>-45.5</l><l>-100</l></block><block s="down"></block><block s="write"><l>O WINS!</l><l>20</l></block><block s="doStopThis"><l><option>all but this script</option></l></block></script><script x="60" y="219.33333333333337"><block s="receiveMessage"><l>x wins</l><list></list><comment w="90" collapsed="true">when x wins this draws X WINS indicating that x wins</comment></block><block s="clear"></block><block s="up"></block><block s="gotoXY"><l>-45.5</l><l>-100</l></block><block s="down"></block><block s="write"><l>X WINS!</l><l>20</l></block><block s="doStopThis"><l><option>all but this script</option></l></block></script><script x="147" y="411.33333333333337"><block s="receiveConditionEvent"><custom-block s="draw?"></custom-block><comment w="90" collapsed="true">when no one wins or all spaces are filled out then this draws out DRAW to indicate the game is over</comment></block><block s="clear"></block><block s="up"></block><block s="gotoXY"><l>-35</l><l>-100</l></block><block s="down"></block><block s="write"><l>DRAW!</l><l>20</l></block><block s="doStopThis"><l><option>all but this script</option></l></block></script></scripts></sprite><watcher scope="Square" s="xPosition" style="normal" x="10" y="10" color="74,108,212" hidden="true"/><watcher scope="Square" s="yPosition" style="normal" x="10" y="31.000001999999995" color="74,108,212" hidden="true"/><watcher var="X turn" style="normal" x="10" y="52.000003999999976" color="243,118,29" hidden="true"/><watcher scope="Square" var="clone number" style="normal" x="10" y="169.00000799999998" color="243,118,29" hidden="true"/><watcher var="winning triples" style="normal" x="10" y="190.00000999999997" color="243,118,29" hidden="true"/><watcher scope="Square" s="getCostumeIdx" style="normal" x="10" y="338.999998" color="143,86,227" hidden="true"/><watcher scope="Sprite" s="getCostumeIdx" style="normal" x="274" y="334.999998" color="143,86,227" hidden="true"/><watcher var="board" style="normal" x="3" y="59.000005999999985" color="243,118,29" extX="80" extY="70"/><watcher var="o turn" style="normal" x="1" y="299.999998" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="X turn"><bool>false</bool></variable><variable name="board"><list struct="atomic" id="1046">empty,X,empty,empty,X,empty,O,X,O</list></variable><variable name="winning triples"><list id="1047"><item><list struct="atomic" id="1048">1,2,3</list></item><item><list struct="atomic" id="1049">4,5,6</list></item><item><list struct="atomic" id="1050">7,8,9</list></item><item><list struct="atomic" id="1051">1,4,7</list></item><item><list struct="atomic" id="1052">2,5,8</list></item><item><list struct="atomic" id="1053">3,6,9</list></item><item><list struct="atomic" id="1054">1,5,9</list></item><item><list struct="atomic" id="1055">3,5,7</list></item></list></variable><variable name="o turn"><l>2</l></variable></variables></scene></scenes></project><media name="U3L1-Tic-Tac-Toe Setup" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAA30lEQVR4AeySwQ3CQBADN4jv9RBRBIIftYCoCkE7IEQhpAN+R0IF9mdNLo6yP6+cnckqGnumgw7jTbWF6fvNazoojqdz1FpnPffHM0op699Bo51mXh/07yptyIaSCfiXSwZO19kQjSx5wYaSgdN1NkQjS16woWTgdJ3UEP21wIIPAiBJIzYkxQ+U2xAASRqxISl+oNyGAEjSiA1J8QPlNgRAkkZsSIofKLchAJI0slxDUuxEuQ0RsCRRG5JgJ0ptiIAlidqQBDtRakMELEm0TUO36yW6rpv17HfbGIb35wsAAP//YCtmxAAAAAZJREFUAwBGS82CCTBFoQAAAABJRU5ErkJggg==" mediaID="U3L1-Tic-Tac-Toe Setup_Square_cst_Empty"/><costume name="X" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAACZ0lEQVR4AezZy0ojQRQG4MOsZjU+QGaGIczMMzgMQ2YfIwRdKF6yVLyAglvFVjeCuhLxEsEXEEHpd4i4iYqaVRBv+AjqSv+GBhFS3VV1TnW3uDghIV2n/i9Vi1T3JyL6USqV13t6eneyXuVy91QAur+/q/z9V8h0/fz1u/L09DgGEOXz+YexkSHKchWLxZfNRhSAgnfv5OUDlPaFVK7Q1fVN6vJHZVKCPG+OpmdmU4M6O7+g/4UC7e7tt8ykBK0sL1Gj0UgFCphSRwf19Q9QV7nTDNTW9oWqW5uJo15j5ufUO0a5QvgZkkbpYJA3EoSLkkLpYpA1FggXukaZYJAzNggXu0KZYpBRC4QB0igbDPJpgzBICmWLQTYjEAZyozgwyGUMwmAuFBcGmaxAaGCL4sQgjzUITUxR3BhkYQGhkS5KAoMcbCA0i4uSwiADKwgNo1CSGMzPDkLTVihpDOYWAaHxW5QLDOYVA6F5iKrX6/SnvT04nEWdZzDOpkRBCHZze0unJ8eUy+XwUbxEQeE2GxisUK1Wc3LyFQOFGNwDwDYLt5/0PQoR0FtMuM9coNhBrTCuUKygKIwLFBsoLkYaxQLSxUiirEGmGCmUFcgWI4EyBnFhuFFGIG4MJ0obJIXhQsUGYUJpDOZA2fyjiA1yhQEIZYqKBXKNAQhlgooEJYUBCKWLUoKSxgCE0kEpQZMTk06OzQgdVa9Rxg+Nq9tVwuEsajJX34co44fG3799dZU19jxAqS5WbjnVwLR+9wFK68qEuYIVajabn1fXNijL5ft+YALo8ujocHF8dNjLci3Me57vH8w+AwAA//+k3GjbAAAABklEQVQDAJg3Rha9RQziAAAAAElFTkSuQmCC" mediaID="U3L1-Tic-Tac-Toe Setup_Square_cst_X"/><costume name="O" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAFPElEQVR4AeyaX1BUVRjAv216iwVfGapxCJDqJVCSHgqGAWoa1P5oLpJNkyyS1aQsMT1k7Goz/XPBpiJls2kyYBVLRXooCwMfwv64vVSahjNYkY8CzfS23d/V66Dcs/cue9e7oswedu+553zn+53vO+ee/b69SebZH0CVGlN8PpSFC/N/BEieWeeXeDx+TZfvRr8Xr9d7sw6kWWfevG4AZbopHbfQV18PyRtvhWVdY5Pk598hHo9nVln1hE82bgrIx5/0yPjZPx2dI0eAUGrzq0EdINLdrSu42ueTb4eHTTeaQCAg95SUys+x41JZUSEAfrZ/QO+X6r+UgAwQlLoly6sD9O+NysttAamtrpLbb7vVVL/ypWXy9FMNsr0zLGNjf4ivfo1E+3qltvYhSRVszkC4iwESi8V0CBWAKdWMyscfXS5MRGtbm+z8oEt3VyZrRhPbH5MGOn9+UvD/3k93S2/fBWvk5GTbHjBRQ6za379XCosW6a7IekzU3uxeUkDANPqbZGpqShgY1zETmkodk4PLvh3ulOYmf9IuaBvIgCkuLpZdH3YLA6eiuFVf3PDQ4KC8FNiUFJRtoJZAq+Tl5cnWLUErXRy7f/dddwpQKx9bIaPHfrAl1xbQe107ZXJyUkLBdltCnWwE1L7PD8qaep/gJVayLYF++fU3eeG5ZglqMOl2M5WyuN/yFY9IezCkanKp3hKoo6NT3n1/hzBTl3q58AHvGDh4wNL1EgLht0eGvpG1DfUuIFw+JN7R0tomkUjk8htXXCUEikajghCEXdHPlUsmlglmGagUUALxpH5ne0daraNSSlXPxDY1b5BodI+qiSiBho4My4sbW9L+vFFqprixrO5hOTY6qrgraiBOwvc/UKHs6NYNNqfTp0+Jyu2UFmJHKV5U6JbeCcdlCz9x8pRpGyXQmTNjrm/VphprlQWFRTIxMaF9mv0yBWK7Xrlq9ezWGVJTVFQoseM/mWpjCkTL7GxnvhIgy+mS7fUqRSqBlD0y/Mb1AeT1ZsnZ8fGMtcVff08QJTXVz9RC7PWHD39p2iETKtnh2OnMdDEFomFNzYOWJ1vauVHY4XJzc02HVgItLS+XEyd/N+3kdiUH1LIlpaZqKIEIBH4xeMi0k5uVRIIKCgpFFTJTAlVXVcq+/j2Oh2pTnYyjIyNSVV2jFKME4qj+yuZ2LfamPqorpabpBjGF17aGtPiC+hSjBEInv79Rund02QpO0D7dZXdPnzDJKndj/IRAdGx4cq1sC3fQ1tXCF06CNUxyIkUSAtERAT1a2JcDK9dulVBoi7z+5jblZmDoZQmElQjL2o2LGYKdfCffRFzw2fV+S7GWQEggLobrNWpxbRYmdVerkF5hHduNC9oCQnlCwMS1ryYUMMS2CQdzHEMPq2IbCEEzoVTf6WnnRCH8nCwM4yYFRAegFi8pk2V1dXqOlDonC7sZ+dmBA/v1QL1dyxg6JA1ER/I3JLtIejG4EzsgaxOrkBUk4UX+KVkYdJsTEB1JdjFoSeli7cntE8Dwee4lU7AIu1hJSYkeJ2CimDBOKsnIMdrOGQgBDPr8hvVCjpUYHolfUvmkLJltLEdh9kX7Y91xDTgQZL+xyL/TU9oRK6on0pgoremcXykBGaMCRlabxC+pfOCmp6f1wHo4HJYFC3L03yqw7gi2Hx0ZlqysLAlo6X2y4KzLVEEMXRwBMoTxzoOY5xZuQ+oSyPjFH0ahPHWk87GsUxCMaxTHgQzBbr3fAHJr5u2Oq1voo10RfdF6PJ5r9v2+8nvl3Ll//vsfAAD//0DbRQQAAAAGSURBVAMAInitoCvEVH8AAAAASUVORK5CYII=" mediaID="U3L1-Tic-Tac-Toe Setup_Square_cst_O"/></media></snapdata>