<snapdata remixID="11348348"><project name="Tic-Tac-Toe" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Tic-Tac-Toe"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><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"><block s="errorObsolete"></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block></script><scripts><script x="229.00000300000002" y="196.77778077777774"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="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="makeBoard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><block s="gotoXY"><l>-50</l><l>50</l></block><block s="show"></block><block s="doRepeat"><l>3</l><script><block s="doRepeat"><l>3</l><script><block s="createClone"><l><option>myself</option></l></block><block s="changeXPosition"><l>50</l></block><block s="doChangeVar"><l>position number</l><l>1</l></block></script></block><block s="changeXPosition"><l>-150</l></block><block s="changeYPosition"><l>-50</l></block></script></block><block s="hide"></block></script></block-definition><block-definition s="possible winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><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></list></block></block></script></block-definition><block-definition s="status of triple %&apos;triple&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><block var="triple"/></block></block></script></block-definition><block-definition s="won %&apos;letter&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doForEach"><l>item</l><custom-block s="possible winning triples"></custom-block><script><block s="doDeclareVariables"><list><l>josh</l></list></block><block s="doSetVar"><l>josh</l><custom-block s="status of triple %l"><block var="item"/></custom-block></block><block s="doIf"><block s="reportAnd"><block s="reportAnd"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="josh"/></block><block s="reportListItem"><l>2</l><block var="josh"/></block></block><block s="reportEquals"><block s="reportListItem"><l>2</l><block var="josh"/></block><block s="reportListItem"><l>3</l><block var="josh"/></block></block></block><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="josh"/></block><block var="letter"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="move in this square" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block var="someone won"/><script><block s="doReport"><l></l></block></script></block><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><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="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block><block s="doWait"><l>1</l></block><block s="doIf"><custom-block s="won %txt"><l>X</l></custom-block><script><block s="doSayFor"><l>X Won</l><l>2</l></block><block s="doSetVar"><l>someone won</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doStopThis"><l><option>all</option></l></block></script></block><block s="doIfElse"><block s="reportEquals"><block var="randomized or strategic CPU?"/><l>1</l></block><script><block s="doBroadcastAndWait"><custom-block s="random empty square"></custom-block><list></list></block></script><script><block s="doBroadcastAndWait"><custom-block s="next move for computer"></custom-block><list></list></block></script></block></script><script><block s="doIf"><block s="reportEquals"><block s="reportBoolean"><l><bool>false</bool></l></block><block var="X&apos;s turn?"/></block><script><block s="doSwitchToCostume"><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="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l></block><block s="doIf"><custom-block s="won %txt"><l>O</l></custom-block><script><block s="doSayFor"><l>O Won</l><l>2</l></block><block s="doSetVar"><l>someone won</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doStopThis"><l><option>all</option></l></block></script><comment w="90" collapsed="false">This line onwards simply detects if any side has won yet.</comment></block></script></block></script></block><block s="doForEach"><l>item</l><block var="board"/><script><block s="doIf"><block s="reportIsA"><block var="item"/><l><option>number</option></l></block><script><block s="doReport"><l>BOb</l></block></script></block></script></block><block s="doSayFor"><l>Its a tie!</l><l>2</l></block><block s="doSetVar"><l>someone won</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doStopThis"><l><option>all</option></l></block></script><scripts><script x="248" y="111.30000000000018"><block s="doBroadcastAndWait"><block s="reportOr"><custom-block s="winning square for player %s"><l></l></custom-block><custom-block s="best empty square"></custom-block></block><list></list></block></script></scripts></block-definition><block-definition s="pick random from %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><block s="reportRandom"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block></block><block var="list"/></block></block></script></block-definition><block-definition s="best empty square" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><block s="reportListItem"><l></l><block var="board"/></block><l><option>number</option></l></block></autolambda><list></list></block><block s="reportNewList"><list><l>5</l><l>1</l><l>3</l><l>7</l><l>9</l><l>2</l><l>4</l><l>6</l><l>8</l></list></block></block></block></script></block-definition><block-definition s="how many %&apos;a&apos; in %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportEquals"><l></l><block var="a"/></block></autolambda><list></list></block><block var="list"/></block></block></block></script></block-definition><block-definition s="winning triple for player %&apos;player&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportAnd"><block s="reportGreaterThan"><custom-block s="how many %s in %l"><block var="player"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><l/></block></custom-block><l>1</l></block><block s="reportEquals"><custom-block s="how many %s in %l"><block s="reportIfElse"><block s="reportEquals"><block var="player"/><l>O</l></block><l>X</l><l>O</l></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><l/></block></custom-block><l>0</l></block></block></autolambda><list></list></block><custom-block s="possible winning triples"></custom-block></block></block></script></block-definition><block-definition s="winning square for player %&apos;player&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>winning triple</l></list></block><block s="doSetVar"><l>winning triple</l><custom-block s="winning triple for player %s"><block var="player"/></custom-block></block><block s="doIf"><block s="reportEquals"><block s="reportIsA"><block var="winning triple"/><l><option>list</option></l></block><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><block var="winning triple"/></block></block></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="random empty square" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportListItem"><l><option>any</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block></block></block></script></block-definition><block-definition s="can player %&apos;player&apos; win now?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIsA"><custom-block s="winning square for player %s"><block var="player"/></custom-block><l><option>number</option></l></block></block></script></block-definition><block-definition s="next move for computer" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><custom-block s="can player %s win now?"><l>O</l></custom-block><script><block s="doReport"><custom-block s="winning square for player %s"><l>O</l></custom-block></block></script><script><block s="doIfElse"><custom-block s="can player %s win now?"><l>X</l></custom-block><script><block s="doReport"><custom-block s="winning square for player %s"><l>X</l></custom-block></block></script><script><block s="doReport"><custom-block s="best empty square"></custom-block></block></script></block></script></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="611"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB4KADAAQAAAABAAABaAAAAAAHwbojAAAL30lEQVR4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgMDI3+AAEeFvcCAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="612"></list></costumes><sounds><list struct="atomic" id="613"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="-50" y="-100" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="618"><costumes><list id="619"><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="620"></list></sounds><blocks></blocks><variables><variable name="position number"><l>10</l></variable></variables><scripts><script x="386.6" y="15.833333333333286"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l></block><script><custom-block s="move in this square"></custom-block></script></block></script><script x="10" y="25"><block s="receiveGo"></block><block s="doSetVar"><l>position number</l><l>1</l></block><block s="doSetVar"><l>board</l><block s="reportNumbers"><l>1</l><l>9</l></block></block><block s="doSetVar"><l>someone won</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>randomized or strategic CPU?</l><l>2</l></block><custom-block s="makeBoard"></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script x="716.6" y="10"><block s="receiveMessage"><l><option>any message</option></l><list><l>message</l></list></block><block s="doIf"><block s="reportEquals"><block var="message"/><block var="position number"/></block><script><custom-block s="move in this square"></custom-block></script></block></script><script x="35" y="406.33333333333326"><custom-block s="best empty square"></custom-block></script><script x="33" y="377.16666666666663"><custom-block s="random empty square"></custom-block></script><script x="34" y="437.16666666666663"><custom-block s="winning square for player %s"><l></l></custom-block></script><script x="33" y="472"><custom-block s="can player %s win now?"><l></l></custom-block></script><script x="36" y="505.16666666666686"><custom-block s="next move for computer"></custom-block></script><script x="30" y="533.3333333333336"><custom-block s="winning triple for player %s"><l></l></custom-block></script></scripts></sprite><watcher scope="Square" var="position number" style="normal" x="7.204947916666242" y="22.335339982656265" color="243,118,29" hidden="true"/><watcher var="someone won" style="normal" x="7.895833333333599" y="7.895833333333329" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="6.997682291667502" y="125.05026041666679" color="243,118,29" extX="80" extY="70"/><watcher var="X&apos;s turn?" style="normal" x="9.129557291666742" y="2.812890625000012" color="243,118,29" hidden="true"/><watcher var="randomized or strategic CPU?" style="slider" min="1" max="2" x="7.283333333333644" y="6.474999999999994" color="243,118,29"/></sprites></stage><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="687">1,2,3,4,5,6,7,8,9</list></variable><variable name="someone won"><bool>false</bool></variable><variable name="randomized or strategic CPU?"><l>2</l></variable></variables></scene></scenes></project><media name="Tic-Tac-Toe" app="Snap! 7, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAANKADAAQAAAABAAAANAAAAABdv+0DAAAAyElEQVRoBe2asQ2DMAAELUQViQ2go8gYzIKyKogiOzmQDT7FiVhnyeXr5DtKSmnwLOebagt3np/v7gq0rq9Sa/3ru+1HGYZH/33Q9ahWjg+6e0kLWQg24CcHC49xFoqVwQMLwcJjnIViZfDAQrDwGGehWBk8sBAsPMZZKFYGDywEC49xFoqVwQMLwcJjnIViZfDAQrDwGGehWBk8sBAsPMZZKFYGDywEC49xFoqVwQMLwcJjnIViZfDAQrDwn3DLuWrij8ZxnI4PoMX563ryk3EAAAAASUVORK5CYII=" mediaID="Square_cst_Empty"/><costume name="X" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAANKADAAQAAAABAAAANAAAAABdv+0DAAACJUlEQVRoBe3aQUsCQRQA4GcEeRDy6MFq/4ph3oTQLOtS1yC65KFDEVrHvEQQ6U+IoP8gFJ0M08Kb5h5K8O6xHWFBwp3dmXlvdjd8MIzs7gzv2xkW3roRADCy2dxpLLYUtX6HOsbjSHvREhij0XA/ndkLNWj48w1vzWafgSCZNMbHR4ehBj2/vDIQLIR6j81Ifg6acVMCdYi7Qv2vQaCSZcm45cQFVcoVODu/CAzqvd2BzEYaHh6fHHPigqrVa+h2u4FAMcxWPgeF7SIU8ptyoHh8Geq1e99R05iry7Ijhp3grhC7wG+UCMYTyE+UKMYzyA+UDEYIpBMlixEG6UCpYKRAlChVjDSIAoWBUQJhorAwyiAMFCYGBaSCwsaggWRQFBhUkAiKCoMO8oKixJCAeChqDBloFkoHhhQ0jWq1WrCeSk2KM7d6ho1TCdd6SGVyNnZgmvD50YFEIqE6lafxpCB7m+0Ud6HRaGipfMlANoa9A2DbTFflSwL6i7H3ig4UOsgJowuFCnLD6EChgbxiqFEoIFEMJUoZJIuhQimBVDEUKGkQFgYbJQXCxmCihEFUGCyUEIgag4HyDNKFUUV5AunGqKBcQX5hZFFckN8YGRQXVDopaSmb7cR5/XTpwfvTePJpjNNEtXoN1lZXnE5rP26jWO8U3BUKEsYG8DDsGi7IniRM/RwU9NWaPBRMsxe9ub0Leq7c/NgHgCwiVjOsdmC1/xC9X0Ug3xe6JXI0AAAAAElFTkSuQmCC" mediaID="Square_cst_X"/><costume name="O" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAANKADAAQAAAABAAAANAAAAABdv+0DAAAE/0lEQVRoBe2aaUxVRxTHT4yfjK/6FaLWKO+BW+yDCtGgxY3g0sQFxFi1iuCuiLapUQRB3OvetF+wWKqUB7hEgyAuMYobKk+6JJWXNmhRPori9+v8J7nmxTdzN67vPqknebmXmTsz5zdz5ty550DUAyWFMSk94RcTE/egFxYoKyubFEX5oH+3bt8ll6tPbw4EqJ4iH4EifSV7261gfcMVam720z+BVmpsvEGtra0hQ6RnZFJ0dDSN/sxLkyel0KeDBoY8Y7XAFpN78vQ/yt9WSLGxsXS8tJTrkpGZSQ2XrwgdTV5eHodpeeSn1KlTKGPefKo+fc4qQ0i7FOblmJMzL21Pnipb8wsUj8ej7Ny9T8HfVqSq5qzCVk1JTU1TcG9FmJdTvN74R6CzBHS8rPwtyIsXnVZ0CGlTd+kyh8IEm50cFci0yXV2vqTcDRvJ91sFlZ0opy2bv6X+/fuFLLuVgrTUKeTzVdJQt4ebIvajWTHlFACTs3wFfeJy8YHtAglWGn1iktxuN+WuW0Mlu/ZSxtxZwY9o3hsGUmGw8Ut2FGl2akclIOJi3ZQ+dw7vziiUYZPbtOkb7mrDAaNOyKiRI6jm9Bmalz6bbt+5pxZrXg0BHf3hJ3rV1UVF2ws1O3sflYBino+WLllMsBI90QX648+/mC2vpoKCbbZtfj2l3q2HuaVNm0GF2/VNXRfo8KHDdOTYj4SZclJgHfV1tbqmpwkEu8XxZfHCBU6y8LHh/das2/D2JCJTSBPI5/PxTt6He5YppFWOicUEYxvIROq2cT47euQQsVOArG3YyzGxXy/NZu/AKrYFxPtJukJXr12n9bl5jjkC2Wx9OXM63W9qklWTFAgn4eTxE6QNnaqAc2pr+1dqdlIgeBS8qSNR4ML/fhwQqiYFwoeZ065aqDErHBrjpo6ODmG1EAjuGl+VkSoej5ta/M1C9YRAeBIn6kgVLd2kQJEKo6fX/wPI5epL7e3tepPhWP2z5x3UV7IlhCsE79bQUO+YwnoDw8PB04lECIQHWQRG92Qr6jAcZfBwUVFRwqGkQGMSE9nLKzRIKOwlzIU4oCaOSRCOKgVCVLPuYq2wkZOFiAQNHjxEGm2VAk2dPJFqqn2EU3ckSePNm/TFxElSlaRAOKqzqCidqqiUNg53BWIKO0uK6asF86VDS4HQIicnm34pKzUUnJCOYGNF+ckKPslawX1NIDREIP37AwdtVMtaVzB9BGswyVqiCYSG6KC6qtJxF15cVEwsISB1BiqkLhBWCeFYo3ExtWM7r7v27OdxwdUrl+t2qwuEHhAXg+khrm0k2Kc7qokHkDfCPjYaFzQEhPERAkZcO5xQgMnf8h0PBxv92DQM9C6UVijJxAJIH0X42SwMOjMFhAZYKW98As8K/HziVxTZKvBmy5blUO2F86ZWRlXCNBAaIn+DZBeSXhjcaGZAHVR0xd7EqiDnioQXEl9GzSy4P0tA6GDc2CQ+6GhvPPeAALOS+MWKwIslJSXyOEF3s4LSyGkwtewex6P1a1fx2PeZc+epis0q7B5hJnyvfJ4Qz5sOHxbHA5bYd11drwkfaIFAgPzND+n3Fj/3oADBJHVXugWkDg6wrCWL+A8z3nT/IVcYKX7klXDIhbBsOSUnT+BfmwBGet8OCFUPXG0BCu4QL+LQs1b4DriW91AwRCTdfwSKpNWQ6ZLCKnrEfzQOGDDw7htD1glRFmmyzwAAAABJRU5ErkJggg==" mediaID="Square_cst_O"/></media></snapdata>