<snapdata remixID="12912406"><project name="4A_TicTacToeChallenge_AndrewXiao" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAytJREFUeF7t2utO4mAARdH2WWV8KMBn7US8BJGL/fG5DSyTSXTUns7usgrjvCzLMnlRICowAxiVN3soACAIaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGARxsYJ7naZpe/yyrlz4+a1nWf+7qsegTABwc/mnzPL3st1dWlmla5jejD/gC4OCLfgzw9T521tnnO95feSCTAP4GwN12xR3uItPBZ9ocHsDB3T/vgKtcrfrgwf+CsYcHcGzf6Wnzb3rZ795WTl0d3n4cbOdSAzgc4OmDkBNwH2+exTn45P7A4QEcfBEuPwo+D/Hr397/3RHA3wL4g2+352+G940QwN8C+O0HwPfh1yeZD09WP+YLgIOv++0nok9P4NIPhYNPNDo8gIPDrwc4+IT+2OEBHHxBDgB328v/23brR7xb7x98/qMPD+Dgwj+/A154embw+dWHB3DwFdhsnqf9fnvpIcjR+jHAo9fdAQdfoTs//Nc74NEDjKu/AfP2cXdu73Dl3QEHfwGc+xa8TMs0P+rvX530BnAwQIe/XgBAQtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jf8Hq9NCt18w7d8AAAAASUVORK5CYII=</thumbnail><scenes select="1"><scene name="4A_TicTacToeChallenge_AndrewXiao"><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="reportListIsEmpty"><block s="reportCDR"><block var="words"/></block></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.000003" y="196.77778077777765"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="cloneAndMove %&apos;x&apos; %&apos;y&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="createClone"><l><option>myself</option></l></block></script></block-definition><block-definition s="%&apos;pos1&apos; %&apos;pos2&apos; %&apos;pos3&apos; checkPositionEqual" type="predicate" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="pos1"/><block var="boardState"/></block><block s="reportListItem"><block var="pos2"/><block var="boardState"/></block><block s="reportListItem"><block var="pos3"/><block var="boardState"/></block></list></block></block></script></block-definition><block-definition s="hasWinningBoard" type="predicate" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doForEach"><l>item</l><block var="winningBoards"/><script><block s="doIf"><custom-block s="%s %s %s checkPositionEqual"><custom-block s="winningBoards1 %s"><block var="item"/></custom-block><custom-block s="winningBoards2 %s"><block var="item"/></custom-block><custom-block s="winningBoards3 %s"><block var="item"/></custom-block></custom-block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list><comment w="90" collapsed="false">cannot let prematurely terminate with false if a later one is true, so put report true inside the if loop&#xD;&#xD;if any row, column, or diagonal (listed in winningBoards) on boardState has the same elements across it</comment></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="winningBoards1 %&apos;element&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="element"/></block></block></script></block-definition><block-definition s="winningBoards2 %&apos;element&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="element"/></block></block></script></block-definition><block-definition s="winningBoards3 %&apos;element&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>3</l><block var="element"/></block></block></script></block-definition><block-definition s="boardFilled" type="predicate" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doForEach"><l>item</l><block var="boardState"/><script><block s="doIf"><block s="reportNot"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block var="item"/><l>X</l></list></block><block s="reportVariadicEquals"><list><block var="item"/><l>O</l></list></block></list></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list><comment w="90" collapsed="false">if any element isn&apos;t x or o, report false</comment></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</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="212"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="213"></list></costumes><sounds><list struct="atomic" id="214"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="0,0" idx="1" x="50" y="-50" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="7,7,0,1" pen="tip" id="219"><costumes><list id="220"><item><ref mediaID="0,0_cst_Empty"></ref></item><item><ref mediaID="0,0_cst_X"></ref></item><item><ref mediaID="0,0_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="221"></list></sounds><blocks></blocks><variables><variable name="cloneNum"><l>9</l></variable></variables><scripts><script x="20" y="20"><block s="receiveGo"></block><block s="clear"></block><block s="doSetVar"><l>isXTurn</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>boardState</l><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l><l>4</l><l>5</l><l>6</l><l>7</l><l>8</l><l>9</l></list></block><comment w="90" collapsed="false">blank entries (null) can be equal to each other, set different so other code works properly</comment></block><block s="doSetVar"><l>winningBoards</l><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></list></block></block><block s="doSetVar"><l>clonePos</l><block s="reportNewList"><list><block s="reportNewList"><list><l>-50</l><l>50</l></list></block><block s="reportNewList"><list><l>0</l><l>50</l></list></block><block s="reportNewList"><list><l>50</l><l>50</l></list></block><block s="reportNewList"><list><l>-50</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>50</l><l>0</l></list></block><block s="reportNewList"><list><l>-50</l><l>-50</l></list></block><block s="reportNewList"><list><l>0</l><l>-50</l></list></block><block s="reportNewList"><list><l>50</l><l>-50</l></list></block></list></block></block><block s="hide"></block><block s="gotoXY"><l>-1000</l><l>-1000</l></block><block s="doSwitchToCostume"><l>Empty</l></block><block s="show"></block><block s="doForEach"><l>item</l><block var="clonePos"/><script><block s="doSetVar"><l>i</l><block s="reportListIndex"><block var="item"/><block var="clonePos"/></block></block><custom-block s="cloneAndMove %n %n"><block s="reportListItem"><l>1</l><block var="item"/></block><block s="reportListItem"><l>2</l><block var="item"/></block><comment w="90" collapsed="false">could have used selector here, felt unnecessary</comment></custom-block><block s="doWait"><l>0.05</l><comment w="90" collapsed="false">snap is glitchy, this is a workaround</comment></block></script></block></script><script x="20" y="452"><block s="receiveOnClone"></block><block s="doSetVar"><l>cloneNum</l><block var="i"/></block></script><script x="20" y="521.8333333333333"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportVariadicOr"><list><custom-block s="boardFilled"></custom-block><custom-block s="hasWinningBoard"></custom-block><block s="reportVariadicOr"><list><block s="reportVariadicIsIdentical"><list><block s="reportListItem"><block var="cloneNum"/><block var="boardState"/></block><l>X</l></list></block><block s="reportVariadicIsIdentical"><list><block s="reportListItem"><block var="cloneNum"/><block var="boardState"/></block><l>O</l></list></block></list></block></list></block><script><block s="doStopThis"><l><option>this script</option></l></block></script><list></list><comment w="90" collapsed="false">Duplicate to avoid clicking after game is over, not really necessary</comment></block><block s="doIfElse"><block var="isXTurn"/><script><block s="doReplaceInList"><block var="cloneNum"/><block var="boardState"/><l>X</l></block><block s="doSwitchToCostume"><l>X</l></block><block s="doSetVar"><l>isXTurn</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doReplaceInList"><block var="cloneNum"/><block var="boardState"/><l>O</l></block><block s="doSwitchToCostume"><l>O</l></block><block s="doSetVar"><l>isXTurn</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doIf"><block s="reportVariadicAnd"><list><custom-block s="hasWinningBoard"></custom-block><block var="isXTurn"/></list></block><script><block s="doSetVar"><l>message</l><l>O wins!</l></block><block s="doSetVar"><l>offset</l><l>-100</l></block><block s="doBroadcast"><l>end</l><list></list><comment w="90" collapsed="false">have to use broadcast to address all clones</comment></block></script><list><block s="reportVariadicAnd"><list><custom-block s="hasWinningBoard"></custom-block><block s="reportNot"><block var="isXTurn"/></block></list></block><script><block s="doSetVar"><l>message</l><l>X wins!</l></block><block s="doSetVar"><l>offset</l><l>-100</l></block><block s="doBroadcast"><l>end</l><list></list></block></script><custom-block s="boardFilled"></custom-block><script><block s="doSetVar"><l>message</l><l>It&apos;s a tie!</l></block><block s="doSetVar"><l>offset</l><l>-150</l></block><block s="doBroadcast"><l>end</l><list></list></block></script></list></block></script><script x="20" y="1173.7500000000002"><block s="receiveMessage"><l>end</l><list></list></block><block s="hide"></block><block s="gotoXY"><block var="offset"/><l>0</l></block><block s="setHeading"><l>90</l></block><block s="setColor"><color>7,7,0,1</color></block><block s="write"><block var="message"/><l>50</l></block><block s="gotoXY"><l>-10000</l><l>-10000</l></block></script></scripts></sprite><watcher var="boardState" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher var="winningBoards" style="normal" x="10" y="52.00000399999999" color="243,118,29" hidden="true"/><watcher var="clonePos" style="normal" x="10" y="73.00000599999998" color="243,118,29" hidden="true"/><watcher scope="0,0" var="cloneNum" style="normal" x="10" y="94.00000799999998" color="243,118,29" hidden="true"/><watcher var="i" style="normal" x="10" y="115.00000999999997" color="243,118,29" hidden="true"/><watcher var="isXTurn" style="normal" x="10" y="136.00001199999997" color="243,118,29" hidden="true"/><watcher var="offset" style="normal" x="10" y="160.00001399999996" color="243,118,29" hidden="true"/><watcher var="message" style="normal" x="10" y="181.00001599999996" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="boardState"><list struct="atomic" id="553">1,2,3,4,5,6,7,8,9</list></variable><variable name="winningBoards"><list id="554"><item><list struct="atomic" id="555">1,2,3</list></item><item><list struct="atomic" id="556">4,5,6</list></item><item><list struct="atomic" id="557">7,8,9</list></item><item><list struct="atomic" id="558">1,4,7</list></item><item><list struct="atomic" id="559">2,5,8</list></item><item><list struct="atomic" id="560">3,6,9</list></item><item><list struct="atomic" id="561">1,5,9</list></item><item><list struct="atomic" id="562">3,5,7</list></item></list></variable><variable name="clonePos"><list id="563"><item><list struct="atomic" id="564">-50,50</list></item><item><list struct="atomic" id="565">0,50</list></item><item><list struct="atomic" id="566">50,50</list></item><item><list struct="atomic" id="567">-50,0</list></item><item><list struct="atomic" id="568">0,0</list></item><item><list struct="atomic" id="569">50,0</list></item><item><list struct="atomic" id="570">-50,-50</list></item><item><list struct="atomic" id="571">0,-50</list></item><item><list struct="atomic" id="572">50,-50</list></item></list></variable><variable name="i"><l>9</l></variable><variable name="isXTurn"><bool>true</bool></variable><variable name="offset"><l>0</l></variable><variable name="message"><l>0</l></variable></variables></scene></scenes></project><media name="4A_TicTacToeChallenge_AndrewXiao" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAABH5JREFUaEPdWkm20zAQlE8BK1hwEc6S4d+JDGfxkh8+LDiReZpstXoqJV7hBfzYUquru7rUVjKF/+yaQgjfQwjzhiveWkSY+pM9o4KtEkfVq3r79cu3PwnQ4Xie77dLgtEOpFOmjFMeYCManOf6QaBkh94fH+F8evtbAJ3m++1qODXo0SDyZQlhqokp/y/T0sSuRLG6wdxZwvvjdwsoZ6i9RiFI0dhsNJ4s03NZVsOdbXcZ4oD2rArf1hJCD9SKqPAsZujtdO4pl0fukZ0eBGwz8S/Odoq1M+hkaAmRwb2S8CVgNzdBUacoD5rb1movUG4ARKurkDpi3leZbrnEAV0vJcu0lHPyPUJLFNHmYAGho8qnSMfIGyE4Px8f4W2T7SgKP3JhAvR1i9zD4mJyBzAXAMpx0XWBjOp+ETcrhsmLxLG6WcleMEC328XTlSE8yODRRCapWuWdzn7/9RHOx7VTqPtQt4T9UWhAEBjdGJdd7gCp9am9XC/WoxzigGR3lrAsU253RCU0QIiPcuuzicLhNN/vVi+nRT5bX3sxtptuvGcViQU+WUSG8ub0em3kUDAB0m9dnYxHXCrRUIa2t6UA5uZ0bX1oL6cv71ABkfwBbCThdZ4SWFm21cUwiJivhaa1WyuTFH8hukVSOq8Pnmvec1DJHDPssUH7oY0VFuN1wUHAw2LK7QOAGnkBCtUEDeB7gu1kSaGXo2+sUNCYknFVMMXumUClOfEfuhaWoeGwdxUOczUPBBJJNuI0vmzOCqCqQPt3DAwbK3BrTWuPyoZMQGo7ohxwaJ2Cp1JtVrTseFmrKaCyfTjP9/uF51ztaQyCDLLOcpjsTaYvIXSiEM/loihA78lgZfDC5RO9+EPSlAaB70MjCyo4Ey7+cjZq2aPkuMqhHgxIsTyUEA2WPwqo1pBHJuE80JuietSgoW+imMWc900ZI6DukKTfWNGUYA54lKFWsNFtlZIMHQ/n+RZVrt3c2D7xmmTkDb6rJSNmm7NYYJUzBS3aVe37hsPJTkbhnuxhObZHDYqCUKjEPhZFz3F4T2oM1TkmINHwqz6T+YixbQw/aeehATLULoo4oNNV7NJWk7rO506LskPzSlc5l/cAuH6I9Dni36sxWUJIokDPth3ZFkPzBLi2cQame3VXn2OUSzkHFc6U+a4KdgGy7fLR+sP7jtWNzF5OqbzbgsDKTVgbyJALqSVPJ6RGgYCBiMPqhZSaCGjVk745Zk7IXmm+8vvljiGkIO4VNG19juf5Vr/wWsOBqD+QRVOePbdrnmiOpPgCKqc4KwQXgIVTcsxY7j+XEB6tbB9ThqRjLC+CT6zuTmnWHHhdeeKwXquEhhbrn04g+tqRNMSkKj/+UFXOcuXVfKnzhw3TLEblF0SBUy5PG14t81rsbLgjtQbIj5dMWso2gH0IA2K9PmMWDO8HUqoDqiomfItOqZ9//pU6acPz+uhlcI6YkDfWKYQ5t/gx3vSqd8nTyI/6I6N+Qru9t9tIO678Jq7uLsyE+qDwuI1SCWtc9tOnz49/ZnUxeI62oTEAAAAASUVORK5CYII=" mediaID="0,0_cst_Empty"/><costume name="X" center-x="26" center-y="26" image="data:image/png;base64,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" mediaID="0,0_cst_X"/><costume name="O" center-x="26" center-y="26" image="data:image/png;base64,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" mediaID="0,0_cst_O"/></media></snapdata>