<snapdata remixID="14940831"><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,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAFAElEQVR4AeyUsYtcVRSHz042YkAwhVjJzoIEC/8AMezYmGbVRbbK4IyOJFikME0CWbBJpVuvYOUuFhG2kRW3jWAhifbpbNbCbmw0mpDs7uRN4AVSvNmZe999c+45X8gh5L13zz3n+31M64+/Ho4ubQ0pGNTiwOLF4WhSnS7ev9AdjsZ1+Zt/R61f792XnZ8OKBjU4sDh3wcyqR4X7x8ND2RcR/eH0hL+QGCOBBBwjvC5WvgFRIL5EuAXcL783d/uV0D30esAgIA6cnA7BQK6jV7H4gioIwe3UyCg2+h1LI6AOnJwOwUC+ote1cYIqCoOf8MgoL/MVW2MgKri8DcMAvrLXNXGCKgqDn/DIKC/zFVt3KiAqjZnGBUEEFBFDH6HQEC/2avYHAFVxOB3CAT0m72KzRFQRQx+h0DARrLnkioCCFhFhueNEEDARjBzSRUBBKwiw/NGCCBgI5i5pIoAAlaR4XkjBBCwEcx+LzlpcwQ8iRDvkxJAwKR4aX4SAQQ8iRDvkxKwK+D/f8oXb/0o3/XvBdeVczvBZ8t7r5zbjuqx9eFdOfvfL0klmGdzuwIWVFdXV2UwGARXp9MJPlve2+m8E9Wje7ErrdZCsY3Nv6YFtBmZra3sCmgrJ7PbIKDZaPNYDAHzyMnslAhoNto8FkPAPHIyOyUCmo02j8UQMI+cZpkyq28RMKu47A2LgPYyzWojBMwqLnvDIqC9TLPaCAGzisvesAhoL9OsNqpVQFWbHz2QW9/fks3NzeDa398PPlveG9tj6+stOT58qAptncPYFfDUGen3+rKxsRFca2trwWfLe2N7XP38qrQWX6wzc1W97AqoCjPDVBFAwCoyPG+EAAI2gplLqgggYBUZnjdCAAFrwUyTUAIIGEqOc7UQQMBaMNIklAAChpLjXC0EELAWjDQJJYCAoeQ4VwsBBKwFo98msZsjYCxBzkcRQMAofByOJYCAsQQ5H0UAAaPwcTiWgF0BR0dy++fbsru7G1x37t4JPlveG9tjb29Pjo8PY3NWe96ugAun5MK7F6Tb7QbX+bfPB58t743tsb6+Lq3WolqBYgfLV8DYzTmvggACqojB7xAI6Dd7FZsjoIoY/A6BgH6zV7E5AqqIwe8QCJhf9qYmRkBTcea3DALml5mpiRHQVJz5LYOA+WVmamIENBVnfssgYH6ZmZp4JgFNbc4yKgggoIoY/A5hV8DTL8vKpR9k4Y1rwdW7+Vvw2fLe3s3fo3q8uvKV/COvmTXUsIBnRZY+iqrR0sdR58f3j5b60T0Oz7yOgGYJsNhcCdj9BZwrVi6flgACTkWKj1IRQMBUZOk7FQEEnAoTH6UigICpyNJ3KgIIOBUmPkpFAAFTkaXvVAQQcCpMfj9KvTkCpiZM/4kEEHAiHl6mJoCAqQnTfyIBBJyIh5epCSBgasL0n0gAASfi4WVqAnoFTL05/VUQQEAVMfgdAgH9Zq9icwRUEYPfIRDQb/YqNkdAFTH4HQIB9WXvaiIEdBW3vmURUF8mriZCQFdx61sWAfVl4moiBHQVt75lEVBfJq4mek5AV5uzrAoCCKgiBr9DIKDf7FVsjoAqYvA7RGvlzZfk0w/aM9WNXlt2rmupZdm+1g6qLz+bbe+S0+D9tjRSRS43esvybbHfrDU+V86b8t9BMWPJ4pOCS/+9tjyr4v/jZ0/fF9+N59guvBnXzvVlubz6ijwBAAD///kOguEAAAAGSURBVAMAF3vLAuUI7FAAAAAASUVORK5CYII=</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"><comment w="90" collapsed="false">creates a clone of a block then repeats it 3 times to make a row of blocks</comment><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><custom-block s="for %upvar = %n to %n %cs"><l>Column</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></custom-block><block s="gotoXY"><l>1000</l><l>1000</l></block></script></block-definition><block-definition s="x wins?" type="predicate" category="operators"><comment w="90" collapsed="false">This is a predicatet hat  by looping through each triple in the winning triples checks for a win.  Reports true if a winning triple is found.  Reports false if you’ve already checked each triple and no winner was found.&#xD;</comment><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="for each %upvar of %l %cs"><l>triple</l><block var="winning tripples"/><script><block s="doIf"><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><l>X</l></list></block><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><l>X</l></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="triple"/></block><block var="board"/></block><l>X</l></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></custom-block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="%&apos;O&apos; wins?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><custom-block s="for each %upvar of %l %cs"><l>triple</l><block var="winning tripples"/><script><block s="doIf"><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="O"/></list></block><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="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="O"/></list></block></list></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list><comment w="90" collapsed="false">uses winning trippels to say that if the x player has a x in 3 one of the winning triple combonation then x wins</comment></block></script></custom-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="doIfElse"><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="board"/><l>empty</l></block></block><block s="reportNot"><block s="reportVariadicOr"><list><custom-block s="%s wins?"><l>o</l></custom-block><custom-block s="%s wins?"><l>x</l></custom-block></list></block></block></list></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><comment w="90" collapsed="false">checks to see if the board is full and if either x or o wins. if netiher won it reports draw</comment></block></script></block-definition></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="1" 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="803"><pentrails>data:image/png;base64,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</pentrails><costumes><list id="804"><item><ref mediaID="U3L1-Tic-Tac-Toe Setup_Stage_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="805"></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="810"><costumes><list id="811"><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="812"></list></sounds><blocks></blocks><variables><variable name="clone number"><l>9</l></variable></variables><scripts><script x="10" y="22.84999999999991"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block><block s="reportVariadicEquals"><list><block var="winner"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block></list><comment w="348" collapsed="true"> if statement around the code to make it so that it can only be clicked if costume # equals 1 (empty costume). Also if winner equals false to prevent people from clicking after the game ends.</comment></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="x&apos;s turn?"/><block s="reportBoolean"><l><bool>true</bool></l></block></list><comment w="90" collapsed="true">only allows the game to be played if it is xs turn so the x player ant go on os turn</comment></block><script><block s="doSwitchToCostume"><l>X</l><comment w="90" collapsed="true">switches to costume x so when you clik on the board an x shows up</comment></block><block s="doReplaceInList"><block var="clone number"/><block var="board"/><l>X</l><comment w="90" collapsed="true">When a player marks a location with an X , the board database (list) updates to reflect the game board.  &#xD;&#xD;</comment></block><block s="doSetVar"><l>x&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block><comment w="90" collapsed="true">sets xs turn to false so o knows x is done with its turn</comment></block><block s="doIf"><custom-block s="%s wins?"><l>x</l><comment w="90" collapsed="true">makes it so that if x wins set winner to true so no one can places a letter after the game ends and then say x wins on the screen</comment></custom-block><script><block s="doSetVar"><l>winner</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSayFor"><l>X WINS!</l><l>2</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block var="x&apos;s 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&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doIf"><custom-block s="%s wins?"><l>o</l></custom-block><script><block s="doSetVar"><l>winner</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSayFor"><l>O WINS!</l><l>2</l></block></script><list></list><comment w="90" collapsed="true">makes it so that if o wins set winner to true so no one can places a letter after the game ends and then say o wins on the screen</comment></block></script><list></list><comment w="90" collapsed="true">the computer places as o and places the o at a random sport of the board after each user turn. It does this by rplacing the random spot on the board that the o turn variable choose with a o. After it sets x&apos;s turn to true so x can go agian</comment></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="draw?"></custom-block><block s="reportBoolean"><l><bool>true</bool></l></block></list><comment w="90" collapsed="true">checks to see draw. If there is a draw it will say draw on screen</comment></block><script><block s="doSayFor"><l>DRAW</l><l>2</l></block></script><list></list></block></script><list></list></block></script><script x="536.0000000000001" y="10"><block s="receiveGo"></block><block s="doSetVar"><l>clone number</l><l>0</l><comment w="90" collapsed="true">sets to 0 so later you can make ach clone have a unique number</comment></block><block s="gotoXY"><l>-50</l><l>50</l><comment w="90" collapsed="true">puts the original block go away so you only have to work with clones</comment></block><block s="doSwitchToCostume"><l>Empty</l><comment w="90" collapsed="true">makes the board be trasnparent so you can add blcoks</comment></block><block s="doSetVar"><l>x&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block><comment w="90" collapsed="true">will be used to determine whose turn it is on the board do that the code knows if it is their turn to play</comment></block><block s="doSetVar"><l>winning tripples</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>3</l><l>5</l><l>7</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></list></block><comment w="90" collapsed="true">holds a list to store all of the possible winning triples so I can check it against the current state of the game stored by board.&#xD;</comment></block><block s="doSetVar"><l>winner</l><block s="reportBoolean"><l><bool>false</bool></l></block><comment w="90" collapsed="true">uses the winner block i mde to prevent people from playing after the game ends</comment></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><comment w="90" collapsed="true">Sets the board to empty so you can add xs and os</comment></block><custom-block s="Make Tic Tac Toe Board"><comment w="90" collapsed="true">made  procedure &quot;make one row&quot; and then repeated that procedure 3 times to make the Tic Tac Toe board.&#xD;</comment></custom-block></script><script x="473.0000000000001" y="331.91666666666674"><block s="receiveOnClone"><comment w="90" collapsed="true">This is the code fort he computer part and it makes the clone switch to a o costume only when there is a empty space.</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><script x="591" y="511.33333333333326"><custom-block s="x wins?"></custom-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&apos;s turn?" style="normal" x="10" y="52.00000399999999" color="243,118,29" hidden="true"/><watcher scope="Square" var="clone number" style="normal" x="10" y="97.00000799999998" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="-8" y="16.000005999999985" color="243,118,29" hidden="true"/><watcher var="winning tripples" style="normal" x="10" y="118.00000999999997" color="243,118,29" hidden="true"/><watcher var="winner" style="normal" x="10" y="291.00001199999997" color="243,118,29" hidden="true"/><watcher var="o turn" style="normal" x="10" y="315.00001399999996" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="x&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="1083">empty,empty,empty,empty,empty,empty,empty,empty,empty</list></variable><variable name="winning tripples"><list id="1084"><item><list struct="atomic" id="1085">1,2,3</list></item><item><list struct="atomic" id="1086">3,5,7</list></item><item><list struct="atomic" id="1087">4,5,6</list></item><item><list struct="atomic" id="1088">7,8,9</list></item><item><list struct="atomic" id="1089">1,4,7</list></item><item><list struct="atomic" id="1090">3,6,9</list></item><item><list struct="atomic" id="1091">1,5,9</list></item><item><list struct="atomic" id="1092">2,5,8</list></item></list></variable><variable name="winner"><bool>false</bool></variable><variable name="o turn"><l>8</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="Untitled" center-x="241" center-y="180" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAQAElEQVR4AezXW45c1RkF4CLClvzAA4qUJ5KQKWQGSBkJI8t7JsEAwiSYQvKAjCVTNpjudt3OZe+zL+tDHHd31Tl77/X95V7wp5N/CBAgQIBAgMDr79+/P+j65bzP3esD94sCPj9w1OHss/+DcHe451l6//v3rQx8vvd/vhkyLP4Z+FB6B11fnvd5dJ2eCvhf/33/9qcfT1HX2Hm/PM/K9dOPPRr4ezT23y3zM7/qn4FzQT8r4A8/uQgQIECAAIFDBJ7+D/iQ7WzSkYCjECBAgEBDAQXcEN/WBAgQIJAroIBzZ5+dXHoCBAg0FlDAjQdgewIECBDIFFDAmXOXOltAegIEOhBQwB0MwREIECBAIE9AAefNXGIC2QLSE+hEQAF3MgjHIECAAIEsAQWcNW9pCRDIFpC+IwEF3NEwHIUAAQIEcgQUcM6sJSVAgEC2QGfpFXBnA3EcAgQIEMgQUMAZc5aSAAECBDoTOLiAO0vvOAQIECBAoJGAAm4Eb1sCBAgQyBZQwAfO31YECBAgQOCTgAL+JOErAQIECBA4UEABH4idvZX0BAgQIPBcQAE/1/A9AQIECBA4SEABHwRtm2wB6QkQIPC5gAL+XMTPBAgQIEDgAAEFfACyLQhkC0hPgMA1AQV8TcVrBAgQIECgsoACrgxseQIEsgWkJ3BLQAHfkvE6AQIECBCoKKCAK+JamgABAtkC0t8TUMD3dLxHgAABAgQqCSjgSrCWJUCAAIFsgUfpFfAjIe8TIECAAIEKAgq4AqolCRAgQIDAI4G5C/hReu8TIECAAIFGAgq4EbxtCRAgQCBbQAHPO3/JCBAgQKBjAQXc8XAcjQABAgTmFVDA8842O5n0BAgQ6FxAAXc+IMcjQIAAgTkFFPCcc5UqW0B6AgQGEFDAAwzJEQkQIEBgPgEFPN9MJSKQLSA9gUEEFPAgg3JMAgQIEJhLQAHPNU9pCBDIFpB+IAEFPNCwHJUAAQIE5hFQwPPMUhICBAhkCwyWXgEPNjDHJUCAAIE5BBTwHHOUggABAgQGEyhcwIOld1wCBAgQINBIQAE3grctAQIECGQLKOCC87cUAQIECBBYKqCAl0q5jwABAgQIFBRQwAUxs5eSngABAgTWCCjgNVruJUCAAAEChQQUcCFIy2QLSE+AAIG1Agp4rZj7CRAgQIBAAQEFXADREgSyBaQnQGCLgALeouYZAgQIECCwU0AB7wT0OAEC2QLSE9gqoIC3ynmOAAECBAjsEFDAO/A8SoAAgWwB6fcIKOA9ep4lQIAAAQIbBRTwRjiPESBAgEC2wN70CnivoOcJECBAgMAGAQW8Ac0jBAgQIEBgr8DYBbw3vecJECBAgEAjAQXcCN62BAgQIJAtoIDHnb+TEyBAgMDAAgp44OE5OgECBAiMK6CAx51d9smlJ0CAwOACCnjwATo+AQIECIwpoIDHnJtTZwtIT4DABAIKeIIhikCAAAEC4wko4PFm5sQEsgWkJzCJgAKeZJBiECBAgMBYAgp4rHk5LQEC2QLSTySggCcapigECBAgMI6AAh5nVk5KgACBbIHJ0ivgyQYqDgECBAiMIaCAx5iTUxIgQIDAZAIrC3iy9OIQIECAAIFGAgq4EbxtCRAgQCBbQAGvmL9bCRAgQIBAKQEFXErSOgQIECBAYIWAAl6BlX2r9AQIECBQUkABl9S0FgECBAgQWCiggBdCuS1bQHoCBAiUFlDApUWtR4AAAQIEFggo4AVIbiGQLSA9AQI1BBRwDVVrEiBAgACBBwIK+AGQtwkQyBaQnkAtAQVcS9a6BAgQIEDgjoACvoPjLQIECGQLSF9TQAHX1LU2AQIECBC4IaCAb8B4mQABAgSyBWqnV8C1ha1PgAABAgSuCCjgKyheIkCAAAECtQX6LuDa6a1PgAABAgQaCSjgRvC2JUCAAIFsAQXc7/ydjAABAgQmFlDAEw9XNAIECBDoV0AB9zub7JNJT4AAgckFFPDkAxaPAAECBPoUUMB9zsWpsgWkJ0AgQEABBwxZRAIECBDoT0AB9zcTJyKQLSA9gRABBRwyaDEJECBAoC8BBdzXPJyGAIFsAemDBBRw0LBFJUCAAIF+BBRwP7NwEgIECGQLhKVXwGEDF5cAAQIE+hBQwH3MwSkIECBAIEzgswIOSy8uAQIECBBoJKCAG8HblgABAgSyBRTws/n7lgABAgQIHCWggI+Stg8BAgQIEHgmoICfYWR/Kz0BAgQIHCmggI/UthcBAgQIEPhdQAH/DuFLtoD0BAgQOFpAAR8tbj8CBAgQIHAWUMBnBP8SyBaQngCBFgIKuIW6PQkQIEAgXkABx38EABDIFpCeQCsBBdxK3r4ECBAgEC2ggKPHLzwBAtkC0rcUUMAt9e1NgAABArECCjh29IITIEAgW6B1egXcegL2J0CAAIFIAQUcOXahCRAgQKC1QNsCbp3e/gQIECBAoJGAAm4Eb1sCBAgQyBZQwO3mb2cCBAgQCBZQwMHDF50AAQIE2gko4Hb22TtLT4AAgXABBRz+ARCfAAECBNoIKOA27nbNFpCeAAECJwXsQ0CAAAECBBoIKOAG6LYkEC0gPAECHwUU8EcGfxAgQIAAgWMFFPCx3nYjQCBbQHoCfwgo4D8ofEOAAAECBI4TUMDHWduJAAEC2QLSvxBQwC84/ECAAAECBI4RUMDHONuFAAECBLIFLtIr4AsSLxAgQIAAgfoCCri+sR0IECBAgMCFQFQBX6T3AgECBAgQaCSggBvB25YAAQIEsgUUcMz8BSVAgACBngQUcE/TcBYCBAgQiBFQwDGjzg4qPQECBHoTUMC9TcR5CBAgQCBCQAFHjFnIbAHpCRDoUUAB9zgVZyJAgACB6QUU8PQjFpBAtoD0BHoVUMC9Tsa5CBAgQGBqAQU89XiFI0AgW0D6ngUUcM/TcTYCBAgQmFZAAU87WsEIECCQLdB7egXc+4ScjwABAgSmFFDAU45VKAIECBDoXaBuAfee3vkIECBAgEAjAQXcCN62BAgQIJAtoIDrzd/KBAgQIEDgpoACvknjDQIECBAgUE9AAdezzV5ZegIECBC4K6CA7/J4kwABAgQI1BFQwHVcrZotID0BAgQeCijgh0RuIECAAAEC5QUUcHlTKxLIFpCeAIFFAgp4EZObCBAgQIBAWQEFXNbTagQIZAtIT2CxgAJeTOVGAgQIECBQTkABl7O0EgECBLIFpF8loIBXcbmZAAECBAiUEVDAZRytQoAAAQLZAqvTK+DVZB4gQIAAAQL7BRTwfkMrECBAgACB1QJTFfDq9B4gQIAAAQKNBBRwI3jbEiBAgEC2gAKeZv6CECBAgMBIAgp4pGk5KwECBAhMI6CApxlldhDpCRAgMJqAAh5tYs5LgAABAlMIKOApxihEtoD0BAiMKKCAR5yaMxMgQIDA8AIKePgRCkAgW0B6AqMKKOBRJ+fcBAgQIDC0gAIeenwOT4BAtoD0Iwso4JGn5+wECBAgMKyAAh52dA5OgACBbIHR0yvg0Sfo/AQIECAwpIACHnJsDk2AAAECowvsK+DR0zs/AQIECBBoJKCAG8HblgABAgSyBRTw9vl7kgABAgQIbBZQwJvpPEiAAAECBLYLKODtdtlPSk+AAAECuwQU8C4+DxMgQIAAgW0CCnibm6eyBaQnQIDAbgEFvJvQAgQIECBAYL2AAl5v5gkC2QLSEyBQREABF2G0CAECBAgQWCeggNd5uZsAgWwB6QkUE1DAxSgtRIAAAQIElgso4OVW7iRAgEC2gPRFBRRwUU6LESBAgACBZQIKeJmTuwgQIEAgW6B4egVcnNSCBAgQIEDgsYACfmzkDgIECBAgUFxgqAIunt6CBAgQIECgkYACbgRvWwIECBDIFlDAw8zfQQkQIEBgJgEFPNM0ZSFAgACBYQQU8DCjyj6o9AQIEJhNQAHPNlF5CBAgQGAIAQU8xJgcMltAegIEZhRQwDNOVSYCBAgQ6F5AAXc/IgckkC0gPYFZBRTwrJOViwABAgS6FlDAXY/H4QgQyBaQfmYBBTzzdGUjQIAAgW4FFHC3o3EwAgQIZAvMnl4Bzz5h+QgQIECgSwEF3OVYHIoAAQIEZhe4X8Czp5ePAAECBAg0ElDAjeBtS4AAAQLZAgr49vy9Q4AAAQIEqgko4Gq0FiZAgAABArcFFPBtm+x3pCdAgACBqgIKuCqvxQkQIECAwHUBBXzdxavZAtITIECguoACrk5sAwIECBAgcCmggC9NvEIgW0B6AgQOEVDAhzDbhAABAgQIvBRQwC89/ESAQLaA9AQOE1DAh1HbiAABAgQIPAko4CcL3xEgQCBbQPpDBRTwodw2I0CAAAECvwko4N8c/EmAAAEC2QKHp1fAh5PbkAABAgQInE4K2KeAAAECBAg0EOiqgBvktyUBAgQIEGgioICbsNuUAAECBNIFFHA3nwAHIUCAAIEkAQWcNG1ZCRAgQKAbAQXczSiyDyI9AQIE0gQUcNrE5SVAgACBLgQUcBdjcIhsAekJEEgUUMCJU5eZAAECBJoLKODmI3AAAtkC0hNIFVDAqZOXmwABAgSaCijgpvw2J0AgW0D6ZAEFnDx92QkQIECgmYACbkZvYwIECGQLpKdXwOmfAPkJECBAoImAAm7CblMCBAgQyBY4nRRw+idAfgIECBBoIqCAm7DblAABAgTSBZILOH328hMgQIBAQwEF3BDf1gQIECCQK6CAU2cvNwECBAg0FVDATfltToAAAQKpAgo4dfLZuaUnQIBAcwEF3HwEDkCAAAECiQIKOHHqMmcLSE+AQBcCCriLMTgEAQIECKQJKOC0ictLIFtAegLdCCjgbkbhIAQIECCQJKCAk6YtKwEC2QLSdyWggLsah8MQIECAQIqAAk6ZtJwECBDIFuguvQLubiQORIAAAQIJAgo4YcoyEiBAgEB3AocWcHfpHYgAAQIECDQSUMCN4G1LgAABAtkCCviw+duIAAECBAg8CSjgJwvfESBAgACBwwQU8GHU2RtJT4AAAQIvBRTwSw8/ESBAgACBQwQU8CHMNskWkJ4AAQKXAgr40sQrBAgQIECguoACrk5sAwLZAtITIHBdQAFfd/EqAQIECBCoKqCAq/JanACBbAHpCdwWUMC3bbxDgAABAgSqCSjgarQWJkCAQLaA9PcFFPB9H+8SIECAAIEqAgq4CqtFCRAgQCBb4HF6BfzYyB0ECBAgQKC4gAIuTmpBAgQIECDwWGDmAn6c3h0ECBAgQKCRgAJuBG9bAgQIEMgWUMCzzl8uAgQIEOhaQAF3PR6HI0CAAIFZBRTwrJPNziU9AQIEuhdQwN2PyAEJECBAYEYBBTzjVGXKFpCeAIEhBBTwEGNySAIECBCYTUABzzZReQhkC0hPYBgBBTzMqByUAAECBGYSUMAzTVMWAgSyBaQfSkABDzUuhyVAgACBWQQU8CyTlIMAAQLZAsOlV8DDjcyBCRAgQGAGAQU8yO2sJQAAA1JJREFUwxRlIECAAIHhBIoW8HDpHZgAAQIECDQSUMCN4G1LgAABAtkCCrjY/C1EgAABAgSWCyjg5VbuJECAAAECxQQUcDHK7IWkJ0CAAIF1Agp4nZe7CRAgQIBAEQEFXITRItkC0hMgQGC9gAJeb+YJAgQIECCwW0AB7ya0AIFsAekJENgmoIC3uXmKAAECBAjsElDAu/g8TIBAtoD0BLYLKODtdp4kQIAAAQKbBRTwZjoPEiBAIFtA+n0CCnifn6cJECBAgMAmAQW8ic1DBAgQIJAtsD+9At5vaAUCBAgQILBaQAGvJvMAAQIECBDYLzByAe9PbwUCBAgQINBIQAE3grctAQIECGQLKOBR5+/cBAgQIDC0gAIeenwOT4AAAQKjCijgUSeXfW7pCRAgMLyAAh5+hAIQIECAwIgCCnjEqTlztoD0BAhMIaCApxijEAQIECAwmoACHm1izksgW0B6AtMIKOBpRikIAQIECIwkoIBHmpazEiCQLSD9VAIKeKpxCkOAAAECowgo4FEm5ZwECBDIFpguvQKebqQCESBAgMAIAgp4hCk5IwECBAhMJ7CqgKdLLxABAgQIEGgkoIAbwduWAAECBLIFFPDi+buRAAECBAiUE1DA5SytRIAAAQIEFgso4MVU2TdKT4AAAQJlBRRwWU+rESBAgACBRQIKeBGTm7IFpCdAgEB5AQVc3tSKBAgQIEDgoYACfkjkBgLZAtITIFBHQAHXcbUqAQIECBC4K6CA7/J4kwCBbAHpCdQTUMD1bK1MgAABAgRuCijgmzTeIECAQLaA9HUFFHBdX6sTIECAAIGrAgr4KosXCRAgQCBboH56BVzf2A4ECBAgQOBCQAFfkHiBAAECBAjUF+i5gOuntwMBAgQIEGgkoIAbwduWAAECBLIFngr43f9evf7rP089Xqfz2eKuoTL/+c3p3XjX62/On3fXKcHh9PXfvur9SphDsYy9dtU359+D967nv9fP/+3xVMA/fPfu7d+/eNXjdTqfzfXdu34N/vHz6Yfxrrffnj/vfV9vzmd0ffvFVoNXZ7+P1+k/f/l/79ens/q64O/lZVe9OXfXveur8/sfrq/PX5dcH+79dN1b90Vnnv59/j1473reZafT6VcAAAD//29c5PAAAAAGSURBVAMAsz+N5lHWifwAAAAASUVORK5CYII=" mediaID="U3L1-Tic-Tac-Toe Setup_Stage_cst_Untitled"/><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>