<snapdata remixID="13160038"><project name="U3L1-Tic-Tac-Toe Setup" app="Snap! 9.0, 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 Tic Tac Toe Board" type="command" category="motion"><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>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="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="o" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="x wins" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></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><l>X</l></list></block><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="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="board"/></block><block var="triple"/></block><l>X</l></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="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><custom-block s="%s wins"><l>X</l></custom-block><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block s="reportVariadicEquals"><list><custom-block s="%s wins"><l>O</l></custom-block><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block s="reportVariadicEquals"><list><block s="reportListContainsItem"><block var="board"/><l>empty</l></block><block s="reportBoolean"><l><bool>false</bool></l></block></list></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></block></script></block-definition><block-definition s="O WINS" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></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><l>O</l></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>2</l><block var="triple"/></block><block var="board"/></block><l>O</l></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="board"/></block><block var="triple"/></block><l>O</l></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="%&apos;x or o&apos; wins" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></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="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><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></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="870"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAba0lEQVR4Xu3dTawkV3kG4Lozs0ZhCZs42yRAJBLGIo5EdoAR2SGiWIINtoUiZwWREKxgEcEKEqHxeMMgK0TssEJgR6QYZCMiMQnKlpEikSUj1h7fnPa9175zb9c5p6p/3v55LIER013fqae+6bfr1Knqk8E/BAgQIECAwNYFTrZeUUECBAgQIEBgEMCagAABAgQIBAQEcABdSQIECBAgIID1AAECBAgQCAgI4AC6kgQIECBAQADrAQIECBAgEBAQwAF0JQkQIECAgADWAwQIECBAICAggAPoShIgQIAAAQGsBwgQIECAQEBAAAfQlSRAgAABAgJYDxAgQIAAgYCAAA6gK0mAAAECBASwHiBAgAABAgEBARxAV5IAAQIECAhgPUCAAAECBAICAjiAriQBAgQIEBDAeoAAAQIECAQEBHAAXUkCBAgQICCA9QABAgQIEAgICOAAupIECBAgQEAA6wECBAgQIBAQEMABdCUJECBAgIAA1gMECBAgQCAgIIAD6EoSIECAAAEBrAcIECBAgEBAQAAH0JUkQIAAAQICWA8QIECAAIGAgAAOoCtJgAABAgQEsB4gQIAAAQIBAQEcQFeSAAECBAgIYD1AgAABAgQCAgI4gK4kAQIECBAQwHqAAAECBAgEBARwAF1JAgQIECAggPUAAQIECBAICAjgALqSBAgQIEBAAOsBAgQIECAQEBDAAXQlCRAgQICAANYDBAgQIEAgICCAA+hKEiBAgAABAawHCBAgQIBAQEAAB9CVJECAAAECAlgPECBAgACBgIAADqArSYAAAQIEBLAeIECAAAECAQEBHEBXkgABAgQICGA9QIAAAQIEAgICOICuJAECBAgQEMB6gAABAgQIBAQEcABdSQIECBAgIID1AAECBAgQCAgI4AC6kgQIECBAQADrAQIECBAgEBAQwAF0JQkQIECAgADWAwQIECBAICAggAPoShIgQIAAAQGsBwgQIECAQEBAAAfQlSRAgAABAgJYDxAgQIAAgYCAAA6gK0mAAAECBASwHiBAgAABAgEBARxAV5IAAQIECAhgPUCAAAECBAICAjiAriQBAgQIEBDAeoAAAQIECAQEBHAAXUkCBAgQICCA9QABAgQIEAgICOAAupIECBAgQEAA6wECBAgQIBAQEMABdCUJECBAgIAA1gMECBAgQCAgIIAD6EoSIECAAAEBrAcIECBAgEBAQAAH0JUkQIAAAQICWA8QIECAAIGAgAAOoCtJgAABAgQEsB4gQIAAAQIBAQEcQFeSAAECBAgIYD1AgAABAgQCAgI4gK4kAQIECBAQwHqAAAECBAgEBARwAF1JAgQIECAggPUAAQIECBAICAjgALqSBAgQIEBAAOsBAgQIECAQEBDAAXQlCRAgQICAANYDBAgQIEAgICCAA+hKEiBAgAABAawHCBAgQIBAQEAAB9CVJECAAAECAlgPECBAgACBgIAADqArSYAAAQIEBLAeIECAAAECAQEBHEBXkgABAgQICGA9QIAAAQIEAgICOICuJAECBAgQEMB6gAABAgQIBAQEcABdSQIECBAgIID1AAECBAgQCAgI4AC6kgQIECBAQADrAQIECBAgEBAQwAF0JQkQIECAgADWAwQIECBAICAggAPoShIgQIAAAQGsBwgQIECAQEBAAAfQlSRAgAABAgJYDxAgQIAAgYCAAA6gK0mAAAECBASwHiBAgAABAgEBARxAV5IAAQIECAhgPUCAAAECBAICAjiAriQBAgQIEBDAeoAAAQIECAQEBHAAXUkCBAgQICCA9QABAgQIEAgICOAAupIECBAgQEAA6wECBAgQIBAQEMABdCUJECBAgIAA1gMECBAgQCAgIIAD6EoSIECAAAEBrAcIECBAgEBAQAAH0JUkQIAAAQICWA8QIECAAIGAgAAOoCtJgAABAgQEsB4gQIAAAQIBAQEcQFeSAAECBAgIYD1AgAABAgQCAgI4gK4kAQIECBAQwHqAAAECBAgEBARwAF1JAgQIECAggPUAAQIECBAICAjgALqSBAgQIEBAAOsBAgQIECAQEBDAAXQlCRAgQICAANYDBAgQIEAgICCAA+hKEiBAgAABAawHCBAgQIBAQEAAB9CVJECAAAECAlgPECBAgACBgIAADqArSYAAAQIEBLAeIECAAAECAQEBHEBXkgABAgQICGA9QIAAAQIEAgICOICuJAECBAgQEMB6gAABAgQIBAQEcABdSQIECBAgIID1AAECBAgQCAgI4AC6kgQIECBAQADrAQIECBAgEBAQwAF0JQkQIECAgADWAwQIECBAICAggAPoShIgQIAAAQGsBwgQIECAQEBAAAfQlSRAgAABAgJYDxAgQIAAgYCAAA6gK0mAAAECBASwHiBAgAABAgEBARxAV5IAAQIECAhgPUCAAAECBAICAjiAriQBAgQIEBDAeoAAAQIECAQEBHAAXUkCBAgQICCA9QABAgQIEAgICOAAupIECBAgQEAA6wECBAgQIBAQEMABdCUJECBAgIAA1gMECBAgQCAgIIAD6EoSIECAAAEBrAcIECBAgEBAQAAH0JUkQIAAAQICWA8QIECAAIGAgAAOoCtJgAABAgQEsB4gQIAAAQIBAQEcQFeSAAECBAgIYD1AgAABAgQCAgI4gK4kAQIECBAQwHqAAAECBAgEBARwAF1JAgQIECAggPUAAQIECBAICAjgALqSBAgQIEBAAOsBAgQIECAQEBDAAXQlCRAgQICAANYDBAgQIEAgICCAA+hKEiBAgAABAawHCBAgQIBAQEAAB9CVJECAAAECAlgPECBAgACBgIAADqArSYAAAQIEBLAeIECAAAECAQEBHEBXkgABAgQICGA9QIAAAQIEAgICOICuJAECBAgQEMB6gAABAgQIBAQEcABdSQIECBAgIID1AAECBAgQCAgI4AC6kgQIECBAQADrAQIECBAgEBAQwAF0JQkQIECAgADWAwQIECBAICAggAPoShIgQIAAAQGsBwgQIECAQEBAAAfQlSRAgAABAgJYDxAgQIAAgYCAAA6gK0mAAAECBASwHiBAgAABAgEBARxAV5IAAQIECAhgPUCAAAECBAICAjiAriQBAgQIEBDAeoAAAQIECAQEBHAAXUkCBAgQICCA9QABAgQIEAgICOAAupIECBAgQEAA6wECBAgQIBAQEMABdCUJECBAgIAA1gMECBAgQCAgIIAD6EoSIECAAAEBrAcIECBAgEBAQAAH0JUkQIAAAQICWA8QIECAAIGAgAAOoCtJgAABAgQEsB4gQIAAAQIBAQEcQFeSAAECBAgIYD1AgAABAgQCAgI4gK4kAQIECBAQwHqAAAECBAgEBARwAF1JAgQIECAggPUAAQIECBAICAjgALqSBAgQIEBAAOsBAgQIECAQEBDAAXQlCRAgQICAANYDBAgQIEAgICCAA+hKEiBAgAABAawHCBAgQIBAQEAAB9CVJECAAAECAlgPECBAgACBgIAADqArSYAAAQIEBLAeIECAAAECAQEBHEBXkgABAgQICGA9QIAAAQIEAgIC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</pentrails><costumes><list struct="atomic" id="871"></list></costumes><sounds><list struct="atomic" id="872"></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="877"><costumes><list id="878"><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="879"></list></sounds><blocks></blocks><variables><variable name="clone number"><l>9</l></variable></variables><scripts><script x="30" y="387.14999999999975"><block s="receiveOnClone"></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="40.65214843750016" y="34.866666666667015"><block s="receiveGo"></block><block s="clear"></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>board</l><block s="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>winning triples</l><block s="reportNewList"><list><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>1</l><l>2</l><l>3</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>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>7</l><l>5</l><l>3</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></list></block></block><block s="doSetVar"><l>o</l><l>0</l></block><block s="doSetVar"><l>clone number</l><l>0</l></block><block s="gotoXY"><l>-50</l><l>50</l></block><custom-block s="Make Tic Tac Toe Board"></custom-block></script><script x="502.65214843750016" y="29"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doUntil"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><custom-block s="%s wins"><l>X</l></custom-block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block><block s="reportVariadicEquals"><list><custom-block s="%s wins"><l>O</l></custom-block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></list></block><script><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&apos;s turn?"/><block s="reportBoolean"><l><bool>true</bool></l></block></list></block><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="clone 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><block s="doIf"><custom-block s="%s wins"><l>X</l></custom-block><script><block s="doBroadcast"><l>x won</l><list></list></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="reportVariadicEquals"><list><block s="reportListContainsItem"><block var="board"/><l>empty</l></block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></list></block><script><block s="doUntil"><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="o"/><block var="board"/></block><l>Empty</l></list></block><script><block s="doSetVar"><l>o</l><block s="reportRandom"><l>1</l><l>9</l></block></block></script></block><block s="doReplaceInList"><block var="o"/><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="doBroadcast"><l>o won</l><list></list></block></script><list></list></block></script><list></list></block></script><list></list></block></script><list></list></block><block s="doIf"><custom-block s="draw"></custom-block><script><block s="doBroadcast"><l>draw</l><list></list></block></script><list></list></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script><script x="925.6521484375003" y="293.66666666666674"><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="X&apos;s turn?"/><block s="reportBoolean"><l><bool>true</bool></l></block></list></block><script></script><script><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="clone 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><block s="doIf"><custom-block s="%s wins"><l>O</l></custom-block><script><block s="doBroadcast"><l>o won</l><list></list></block></script><list></list></block></script></block></script></scripts></sprite><sprite name="Sprite" idx="2" x="119.91667175292969" y="-150" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="102,0,55.080000000000005,1" pen="tip" id="1182"><costumes><list struct="atomic" id="1183"></list></costumes><sounds><list struct="atomic" id="1184"></list></sounds><blocks></blocks><variables></variables><scripts><script x="188" y="96.33333333333337"><block s="receiveMessage"><l>x won</l><list></list></block><block s="gotoXY"><l>-100</l><l>-150</l></block><block s="write"><l>X won</l><l>80</l></block></script><script x="164" y="311.33333333333337"><block s="receiveGo"></block><block s="clear"></block><block s="setEffect"><l><option>ghost</option></l><l>100</l></block></script><script x="466" y="110"><block s="receiveMessage"><l>o won</l><list></list></block><block s="gotoXY"><l>-100</l><l>-150</l></block><block s="write"><l>O won</l><l>80</l></block></script><script x="522" y="297"><block s="receiveMessage"><l>draw</l><list></list></block><block s="gotoXY"><l>-100</l><l>-150</l></block><block s="write"><l>draw</l><l>80</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&apos;s turn?" style="normal" x="10" y="52.00000399999999" color="243,118,29" hidden="true"/><watcher var="o" style="normal" x="10" y="76.00000599999998" color="243,118,29" hidden="true"/><watcher var="winning triples" style="normal" x="10" y="118.00000999999997" color="243,118,29" hidden="true"/><watcher var="number of spaces taken" style="normal" x="10" y="176.00001199999997" color="243,118,29" hidden="true"/><watcher var="triple" style="normal" x="10" y="197.00001399999996" color="243,118,29" hidden="true"/><watcher var="x or o" style="normal" x="10" y="218.00001599999996" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="7" y="158.00000599999998" color="243,118,29" extX="80" extY="70" hidden="true"/><watcher scope="Square" var="clone number" style="normal" x="12" y="262.00001799999995" 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="1234">empty,X,empty,empty,X,O,O,X,O</list></variable><variable name="o"><l>9</l></variable><variable name="winning triples"><list id="1235"><item><list struct="atomic" id="1236">4,5,6</list></item><item><list struct="atomic" id="1237">1,2,3</list></item><item><list struct="atomic" id="1238">7,8,9</list></item><item><list struct="atomic" id="1239">1,5,9</list></item><item><list struct="atomic" id="1240">3,6,9</list></item><item><list struct="atomic" id="1241">7,5,3</list></item><item><list struct="atomic" id="1242">1,4,7</list></item><item><list struct="atomic" id="1243">2,5,8</list></item></list></variable><variable name="number of spaces taken"><l>0</l></variable><variable name="triple"><l>0</l></variable><variable name="x or o"><l>0</l></variable></variables></scene></scenes></project><media name="U3L1-Tic-Tac-Toe Setup" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAD80lEQVRoQ91aS3LbMAyV3U0WPoD3vkhO0U7bTdvESXOjTr9H8a6R4nSRA9UuSIl/gAAoeVPPJOMRQeA9AARBWqvuP/usgM81/B068+3MsVuDwMkKjeKiSYnSoKFiywsh0tmjGMFut/tjCX262R9+fP/KsYnGDXMztf4IV5jONe4xGGsfxNrk2DCzH47d3f7+ZSJ0C4S+KQhNoh6NBJZevZ3hVeO03NOMkDZCAdwZNNpYwb/E5AU5Yq5ZjJBnkRDAvemA1EfbIokQ+iLIZo0xKkQRnZxZPkXBPCX0EVLup6YoaIjNl3XFNytDdn2doC6Y0jA75Zzz/oKyV/Mx6zVk0bSEHnyVExaFWIn9PtESpEZzjRDuEP0TELotCAmQ5b5smKIPBz8jpNwGNtY3VIQC2tjD/inndmKcmxZtCuN+IPjMXkOJDSlCJn3mBLuJEG2wxigaUyEW6pw8qyBEo1DhE6QNJsLamAQUhBqRNE3D4JO7UNzodf0RqtwNUrbLQEsXSBODcZJtCMfF32qNiVA90CcYXq9aTc8g7qeWtglCXMbSJKiR8PxCDpjUippTjp7a1wspLFwD/dfj87G7Dwc8YesTM0B31xriBjbxlKLtSt15sSqHJ5ZDdoLj07rc++1we0qamU/pETyPkFR57nXpvDJZ58a27Twkb67Vy8u7otEnntAGbn1eU7c+irRPcVAbZNRoJiIhJdk7IAJTiNBVd/3h/f7wS3WNRQWAcy+/bZd4z/b+L+m5ETO/YQ19nlXl0juegiEX3HFzpjPTYcZdJN5YNamPQGZYVONHzJUmI3Fi1RBaRrZKksvgCEK1ypF6uDxiOBZ6RfpEQvNvfZaJD9p68KoRjv0wwN32w8vqCsr2u6Jsy2Mt81/LsUCOwXigH56B0J27rC97OSlQzp06WJw2g8r8lb9XoL2ctKLQx5IKfDek8JTGGdXmVKOI8+lFxyOgfg2BQfQHr5iUd2py7xtcjTp9Ea/QOZPbbDyxRv5WpI4oSrm+6J6BaUrs8FA/PrRUpQB7ieCM/BCvEcrxCAkWbmHCNWWqiKmEC+8amOazjgirTqxi84kgvcZE+kRCISvmryHRwghCGL7iWY0Ek8cXbk6V7sU6oKLA1RlFEdpA2X47vqewxGpWRq4mroHDtj51XKkpjWEdX7lmTwhvTnVmrTRnW5GFQZRSap6b42448jJVjkNHEVbMUxDElliOQFW2G+JVL29u1JJSOAFrVKYG/BF+TuGvgikvVr3b4npmjoC4LELeTt2gUEwXaGXgZIR0EEhpJbYmPQJCGIzy2ZTC7DtvTb5ReMIQ2ruLRjB2aDKYT9K/4BhpIN51VOjcbrfDP/ZPnwYyrhMnAAAAAElFTkSuQmCC" mediaID="Square_cst_Empty"/><costume name="X" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAFEElEQVRoQ81aO09UURA+iyRKQsSaqLGT+AfAzsoY2DVRVJRd0ETU0mdhZWAXbYzxR/iMjaWl2hgQg42Apa9ELRctLJTrnPva85ozc+5ljTcxsnfnzMw338zcOeduRQixp1Y7er2/f+s2+Ntx9cC9DfdXjrtb4N6fgPtsxQzBX7+idxWQOzA8vP9ZY/o0AkjRlGMLAymENBMZLrnuMbxGRL5/+yreLi9/jAFNTNSfPn58f0csK+3Ku+llfCxuscsrFxaXxHyrBYB6AdC4AmgTDMsElRyiFylgrqQXdABlDD0EhrxeBHJG+xAQOjpPbEBZygWY6b4oPypOQGYcPn3+Inbv2unxm45ccdBuMJhPLIbOzpwXg4ODotWcLe5XkZUKFhXWyuqaqFWr4vadu2L8yGFNMwtQu70uZs6dF0NDQ/8elBGIDEy9UQdfmlaYFEC90LYnOm1bEZXR+REEqmAKatll6+iAmUIDy2Iow2YyFYHNivKsssLFr2UyISlmMgV8QKlzGqhZqClWiyf99QpozBA2Y0Dz8sGaTwr3YFJwhz1LgtCa0oni0yYl19IGUG/gaaZGg8+QEUMXKL6rBGOxokisrr4XVehmOhi/lQTQLccsl9r0lXcOai90v7nNTT+9AdyQCK350hWWhcVFAHQTB0Rlf2j6ofqUyK0AM7XqmMGMsdIiKlFQOOVU9W5QYCCCWvR1QQc6TmtOlrlzRwd0HKbtJ+n2Id7MeVqYoY/FVAQ6K7hOFExAcZIMhTwiWaCQnKOY4fghcb/O90OybWsM4dXjCxgOCl9FgaHquHDblmcE8qyAuvhMRSJpAGZr7lhgZ1sqSKZcVntuxbg5DiiTGU5a2cHcABd7kt4D7iwsZVtw80zBRQM7XMn5kG+gzcA0YAJobsa2hM2QAiwAT77KxZRVM1KxDDHS4l12MTbRlHM6n2qJ/wvIDxXUyckJURvFa4aqT+p7uoZcGmIwYXxJUI2pafHyxXNx8dLlfD9jx8UfKcpqGKAAVsw4yDQbGx0VfX194tjxE5uy83W5EwaI4lv9fgNi2ZNMBWrNXLt6hdzOxyxQVCC+lAaU20XYi8GMQc1MTYk56GYSYrv9E0DNiCE5pbdmna5heFQzmYwqWxqQjzR0AgCv2uvIwUtQWtvCXQNkg9GNy0/rroMXqkenajAGWYAieBZXAvYBIbMZZ6KIs4BZU35AnEQ2co4GY6dJDmof1JQ8BPFcVEbGo8+cdkiS7Yc4LU1XT4PBdbKZMlVkQU9dURjaBgeN452DRikoL2s/5o5RDqYOpzNI57LgFNkkKkpcCYSkXGJJt4dXaxlmtOLwdT9OwoAM3RRchCj3fGCYdWy5Wjj9nIDYL7z0CYB8M0FVswErf/haLwj8ihYW38AxVpM4xnKEulya8fKnCFOv4EzhVvyONd3gPYI3ePKDL12Kg0m1snMxgjHphzb7UUTTNRT8nOFF3y2VIDXxkkwpC4IAFWLGCqmHHpCNzyYdIiSoNEIoINOPEDDZqFRgH+illwMKZ4jZmsskWNDalDUKFCvlDh48JIZHRrq2ywwCBsLtdhsaxQVx8tRksZfG8hX6Tnitn01BVKcxHQyV5wCUTA0MbLdEWQyhBtjtV9dQcBkHpzn6TMJw+mBHuXMXll2PUDm45Rgq6zsxOWPqfQH/bwDRseFVogaI/QNA2nqwhNfdgN8Zqj8A3ANenAn2JF7QC/9+F1taahVmd8uHvx0GIFzrqUCiAAAAAElFTkSuQmCC" mediaID="Square_cst_X"/><costume name="O" center-x="26" center-y="26" image="data:image/png;base64,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" mediaID="Square_cst_O"/></media></snapdata>