<snapdata remixID="12924892"><project name="U3L3 - Cajal - TicTacToe" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAC6ZJREFUeF7tnHlQFckdx38DrhIQFQjiseiq8Si8D8SDwjOSrDG7SSoxxj/MWqtVOazEXdcQXA+kcFelCKZMJVqJa9bVqjWlyVYqVlZRQZBbbpAbj6AY76jrgQupX5Np3/Ni3rx+88h73/7n+YZf/3r6w8ee6Z4etPb29nZCAQE3EdAgoJvIo1lBAAJCBLcSgIBuxY/GISAccCsBCOhW/GgcAsIBtxKAgG7Fj8YhIBxwKwEhYFlZGd25c4fCw8NJ0zTitWmrPi9evEiBgYE0btw4t4JA4+4hoJWUlLT37t1bCKcXXUArv9++fZvGjx/vHgpo1W0EtIyMjPZBgwaJE1ixYgU9evSIpkyZQi0tLfKkeJTasWMHJScn086dO4llUV0uXLhAMTExqtMiXxcnoDU0NMhnwcOGDaMlS5ZQRUUFjRkzhpqbm4VsLGSvXr1o+vTpNG/ePLp165ZLujV06FCX5EXSrktAq6+v7zKbEfg/AIp3EdBqa2ulgOHhr1JdVbmYhNjcEBLZ3B+K4/xzPqZ/mmDW9uWXFBAUaldz+PDhJjKhyv8zAa2mpkba9unKKFodFUjXfIIpI2QRvRrsb9M3nqToobb/Nt795rvt1HynjVb9Z7eo5Luphvj+Ui8jRowwngyRHkFAq66uFjuyeBactWYmTR4XQX1WfCyXYS7XVdH2+Hfkd73X+jKN/t2vhx9t+eRvdPPmTbmMExQUJCFxvD6x4fvJ8L2x1HPrBaqpqZHxI0eO9Aio6IRxAlpVVZUY1liQ0+9F07Afb6fBk2bLDI1vT6DwAF9DGft9co6qqqooNDSUHj9+TN27d5f1jh8/ThMmTKB79+5RXV0dBZzPoiWJe+ns2bMihtsfNWqUoXYQ5DkEtMrKSjkC5vwqhman5tGxY8do6dKldOXKFWr+yRTq/xUf2eOwVb+lwOg3qX5xx9KNben7cSNVV1dLAX19feXIefLkSVq5cqUY7Xbv3i1m0mvXrhXC6iNwRESE55BFTwwR0CoqKuQ9YG7cLIpJyREVw8LChICXfhppJ2CvOYup3+rfU+23g18o4NSpU8Uo5+PzRFwWkBeaeWTkZR6+VMfFxVFlZaXMM3r0aEMnjSDPIaCVlZVJAfPj51B08mm73rX8PMpOwJd1PfTPDeKeTr8E28aygH369BGHePS7ceMGxcfHU3l5uQwbO3as55BFTwwR0EpLS6WABevm0sztWXbPggeFBNL9pqpOk2m+3ejfAf3p7t271NbWJi69/IxXn6ykp6fb5eURcN26dcTPofWC58GdYva4AK24uFgKeGb9fJr2YYZdJ1N/NJfe7vew047zsmDYrlK6dOmSjOXZrl5YQNty/fp12rBhA5WUlMjDPElB8S4CWlFRkRSwaMPXKeqDdNq8eTMtWrSIJk6cSNdXRxu+BId8VCfu/fRLcGtr60sF3LhxIxUXF8sYbg/FuwhohYWFUsCSTbEUmXRCXCpra2uJ1+VuvhtjJ+DQjyqp8a3RFLL013R9/wd2tIL31FJ9fb0U8OHDjpGT8506dUrG8nceARMSEujMmTPy+OTJk72LPnpLWkFBgRSwNOEbNDkxjSZNmkQzZszo2Pny3mw7AYcfbqHmhMX0Ran9pZpZBv2phhoaGqSA9+/fl4gzMuzjr127RomJiVRYWChjeNMDincR0PLz8+U6YNnmb9LEhKN2BO7FzaUwvyfLKS/DE7irks6fPy8F5EVnvdiOgHzs6tWrlJSURAUFBXJyEhkZaZz+EI1oxGiizyuM10FklyOg5eXlyRGwPPF1mrDpcykEn+2A/v3JP8D2mfDz+/DgwQO6ePFfdjup9Ui+5GZmZtpVZAG3bNlC+fn58jivHxousWOIaishoWFgXTNQy8nJkQJWJn2Lxq4/YnemZ385j6Z/9RVjZ5+cK9b39EmI7cZVvjTrM+QBAwaI2e/WrVspNzdX5p42bZqxdvQoSOgYry4YrWVnZ0sBq7YsojHv/0NMGPj+LTY2lh68H/vMo7je85dS7Rshz3bnKQGf3rjKcnIJDg6mQ4cO0bZt2ygnp+PJCxfe8OpwgYQOI+tKFbSsrCwpYPWHb1BE/N/FJTgtLY3mz59PrRtftxPwtd/l0LmfTX/uLLhtW7Z4ysETGN5kwDNdvTz9ktPhw4fFFv/Tp588eZk5c6Y5NpDQHLcuUEvLzMyUAtZsfZNGxX1G/JISb8lnOR5vWmgnIC+/hPxgzXNHQF1A/RLMM1297Nmzx6673EZKSgplZWXJ49HR0eaRQELz7NxYU7yUpLdft/27NGLtX+1OJ/TTePK58GTDwIvPVaM7G4+Kl5r0whsPbAvvsOGyf/9+cQlOTU21Wx90+qUkSOhGlcw1raWnp0sB65O/R19bc4iamprEjpWoqCjq27evyPz0BlRnvvNsl3fC8Jt2tuuDs2bNMtcL21qQ0HmGFmbQTpw4IQVsTPk+DX3nL9StWzfiezR+MjFw4EB5OrxbhTcP2N7P8Q/37dsnYm3387FkvN3+8uXLdt3hmS7PfHkE5IVu3iWjlzlz5qjpOiRUw9GCLEJAfUMoCzhk9UEaPHgwHThwgJYvXy62V+nF399fTDCOHDlCfn5+dPDgQTFK5uXlCfl45Fy4cKEI5wkML7vwhlO98CyXZ738ufoXq+gPu/8oBNTbVyYgNwgJLdDH+Sa0tLQ0KeC51MXUMvw7FPjaWCHSrl27aMGCBVIQFicgIECs9RUVFYlRjCcOvJWe3+nl94iHDBlC2dnZ4iVz3pjA74GwYBzHEw7985Uj62n2b3KJt+rrAvI7x0oLJFSK0xXJtL1797brl9nzO35IiyP86Z+RKWIzgqpns/y2G+fTP/1822nS0RXipSRe7uHC8i5btkx9HyGheqYKM4pJiL5r5eZnSbSwZ5NIX94aRs2PexpqSqOOvyvTLl/bJOJj+nf957WtQfRWz1Lq6dMxU/7i3UK5H7BHjx6kZBLyvDOGhIZ+j+4IEn8di2eijY2NxI/IrC58n8iXb5fJp3cIElr9qzXUnnf9fUBIaEgKK4O8S0DMjq10y1Bb3icgJDQkhlVB3ikgJLTKr07b8V4BIWGnclgR4N0CQkIrHHtpGxAQErpVQgiIdUII6FYCto1jndDyXwVGwKeRQ0JLJYSAz8MNCS2TEAK+CDUktERCCPgyzJDQ5RJCwM4QQ8LOCDn1cwhoBB8kNELJVAwENIoNEhol5VAcBHQEFyR0hJahWAhoCJNNECR0lBieBSslhmfHSnFiBDSLEyOhWXJ29SCgMxghoTP0RF0I6CxCSOgUQQjoFL7/VYaEpilCQNPonqoICU2RhICmsL2gEiR0mCYEdBhZJxUgoUNEIaBDuAwGQ0KDoDALNgzK4UBIaAgZRkBDmEwGQcJOwUHAThE5GQAJXwoQAjrpl6HqkPCFmCCgIYMUBEHC50KEgArcMpwCEj6DCgIatkdRICS0AwkBFXnlUBpIKHFBQIfMURgMCQVMCKjQKYdTQUII6LA0qit4uYQYAVULZSafF0sIAc0I44o6XiohBHSFTGZzeqGEENCsLK6q52USQkBXieRMXi+SEAI6I4or63qJhBDQlRI5m9sLJISAzkri6voeLiEEdLVAKvJ7sIQQUIUgVuTwUAkhoBXyqGrDAyWEgKrksCqPh0kIAa0SR2U7HiQhBFQphpW5PERCCGilNKrb8gAJIaBqKazOp0vY1G51y0rag4BKMCKJWQIQ0Cw51FNCAAIqwYgkZglAQLPkUE8JAQioBCOSmCUAAc2SQz0lBCCgEoxIYpYABDRLDvWUEICASjAiiVkCENAsOdRTQgACKsGIJGYJQECz5FBPCQEIqAQjkpglAAHNkkM9JQQgoBKMSGKWAAQ0Sw71lBCAgEowIolZAhDQLDnUU0IAAirBiCRmCUBAs+RQTwkBCKgEI5KYJQABzZJDPSUEIKASjEhilgAENEsO9ZQQgIBKMCKJWQIQ0Cw51FNC4L+doGLzHqMzQAAAAABJRU5ErkJggg==</thumbnail><scenes select="1"><scene name="U3L3 - Cajal - TicTacToe"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><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"><block s="errorObsolete"></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="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="show"></block><block s="setEffect"><l><option>ghost</option></l><l>30</l><comment w="78" collapsed="true">3.3.3 TIF B</comment></block><block s="setScale"><l>95</l><comment w="190" collapsed="true">Oops costumes are a bit too big.</comment></block><block s="doSetVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>j</l><l>1</l><l>3</l><script><block s="gotoXY"><block s="reportVariadicSum"><list><l>-100</l><block s="reportVariadicProduct"><list><l>50</l><block var="j"/></list></block></list></block><block s="reportDifference"><l>100</l><block s="reportVariadicProduct"><list><l>50</l><block var="i"/></list></block></block></block><block s="createClone"><l><option>myself</option></l></block><block s="doChangeVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block></script></custom-block></script></custom-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>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></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="status of all winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possible winning triples"></custom-block></block></block></script></block-definition><block-definition s="won? %&apos;who&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="status of all winning triples"></custom-block><block s="reportNewList"><list><block var="who"/><block var="who"/><block var="who"/></list></block></block></block></script></block-definition><block-definition s="tied?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block><l></l></list></block></block></script></block-definition><block-definition s="draw win line" type="command" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>i</l><l>1</l><l>8</l><script><block s="doDeclareVariables"><list><l>line</l></list></block><block s="doIf"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></list></block></list></block><script><block s="doSetVar"><l>line</l><block s="reportListItem"><block var="i"/><block var="winning lines"/></block></block><block s="up"></block><block s="doGotoObject"><block s="reportListItem"><l>1</l><block var="line"/><comment w="137.33333333333334" collapsed="false">This is why each line in WIN LINES is a list of points, each of which is a list of x,y coordinates:  It allows us to use the endpoints, as points, in the GO TO block.</comment></block></block><block s="down"></block><block s="doGotoObject"><block s="reportListItem"><l>2</l><block var="line"/></block></block><block s="up"></block></script><list></list></block></script></block></script><scripts><comment x="174" y="10" w="244" collapsed="false">I&apos;m kind of bummed that I didn&apos;t find a beautiful one-line solution using FIND FIRST, but it just gives the value it finds, not the position in the list, which is what we need to find the line endpoints in WIN LINES. So it&apos;s a plain old fashioned FOR loop.</comment></scripts></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="413"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAFBRJREFUeF7t1zGuJUcVx+F+RmzDGmKHIGJbbAACyFkaIZCwABBOQXIIKSMvZB4yjOyZ8Zu5fW9X97/Oqc/p3NdV9Z0j/eSnzX8ECBAgQIDA5QJPl5/oQAIECBAgQGATYEtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQYDtAgAABAgQCAgIcQHckAQIECBAQ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CRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEBDgALojCRAgQICAANsBAgQIECAQEPgv4qjJpf50244AAAAASUVORK5CYII=</pentrails><costumes><list struct="atomic" id="414"></list></costumes><sounds><list struct="atomic" id="415"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="50" y="-50" heading="90" scale="0.95" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="420"><costumes><list id="421"><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="422"></list></sounds><blocks></blocks><variables><variable name="position number"><l>10</l></variable></variables><scripts><script x="12.333333333333343" y="10"><block s="receiveGo"><comment w="273" collapsed="false">Creates The Board For Tictactoe</comment></block><block s="clear"></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><block s="doSetVar"><l>board</l><block s="reportNumbers"><l>1</l><l>9</l></block></block><block s="doSetVar"><l>in action</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script x="10" y="172.6666666666668"><block s="receiveInteraction"><l><option>clicked</option></l><comment w="244" collapsed="false">Click Each Square As You Take Turns Playing, It Alternates Between X and O, if the either player wins, the board will say which side won and draw a line through the board. If they tie, it will say, it&apos;s a tie</comment></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="in action"/><block s="reportVariadicEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block></list></block><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block><block s="doIf"><custom-block s="won? %s"><l>X</l></custom-block><script><block s="bubble"><l>X has  won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doSetVar"><l>in action</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script><script><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l></block><block s="doIf"><custom-block s="won? %s"><l>O</l></custom-block><script><block s="bubble"><l>O has won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doSetVar"><l>in action</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="in action"/><custom-block s="tied?"></custom-block></list></block><script><block s="bubble"><l>You&apos;ve Tied</l></block><block s="goToLayer"><l><option>front</option></l></block></script><list></list></block><block s="doDeclareVariables"><list><l>available squares</l></list></block><block s="doSetVar"><l>available squares</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 s="doIf"><block s="reportVariadicAnd"><list><block var="in action"/><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="available squares"/></block><l>1</l></list></block></list></block><script><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="available squares"/></block><block var="board"/><l>X</l></block><block s="doIf"><block s="reportNot"><custom-block s="won? %s"><l>X</l></custom-block></block><script><block s="bubble"><l>You&apos;ve Tied</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doSetVar"><l>in action</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script><list></list></block></script><list></list></block></script></scripts></sprite><sprite name="Sprite" idx="2" x="100" y="-100" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="255,32,0,1" pen="tip" id="622"><costumes><list struct="atomic" id="623"></list></costumes><sounds><list struct="atomic" id="624"></list></sounds><blocks></blocks><variables></variables><scripts><script x="27" y="23.666666666666668"><block s="receiveGo"></block><block s="hide"></block><block s="setSize"><l>5</l></block><block s="setColor"><color>255,32,0,1</color></block></script></scripts></sprite><watcher scope="Square" var="position number" style="normal" x="10" y="298.500002" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="0" y="27" color="243,118,29" extX="80" extY="70"/></sprites></stage><variables><variable name="X&apos;s turn?"><bool>false</bool></variable><variable name="board"><list struct="atomic" id="637">X,O,O,4,X,6,7,8,X</list></variable><variable name="winning lines"><list id="638"><item><list id="639"><item><list struct="atomic" id="640">-100,50</list></item><item><list struct="atomic" id="641">100,50</list></item></list></item><item><list id="642"><item><list struct="atomic" id="643">-100,0</list></item><item><list struct="atomic" id="644">100,0</list></item></list></item><item><list id="645"><item><list struct="atomic" id="646">-100,-50</list></item><item><list struct="atomic" id="647">100,-50</list></item></list></item><item><list id="648"><item><list struct="atomic" id="649">-50,100</list></item><item><list struct="atomic" id="650">-50,-100</list></item></list></item><item><list id="651"><item><list struct="atomic" id="652">0,100</list></item><item><list struct="atomic" id="653">0,-100</list></item></list></item><item><list id="654"><item><list struct="atomic" id="655">50,100</list></item><item><list struct="atomic" id="656">50,-100</list></item></list></item><item><list id="657"><item><list struct="atomic" id="658">-100,100</list></item><item><list struct="atomic" id="659">100,-100</list></item></list></item><item><list id="660"><item><list struct="atomic" id="661">-100,-100</list></item><item><list struct="atomic" id="662">100,100</list></item></list></item></list></variable><variable name="in action"><bool>false</bool></variable></variables></scene></scenes></project><media name="U3L3 - Cajal - TicTacToe" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAShJREFUaEPtmyEOg0AQRT836A1ag24TBIakFWv2Fr0BFgc4LKdZs6ICgyCpx9AbcIRmG0LS0lbPbj4nmDf/v4xZIgAVgCOAE8L87tECeQZwCZMRt0/ISWuNNE0PPgP3fT8ZYxyC43iH1FpPbdsijmOvIcdxnPI8hzFmC1lVFcqy9DnEdfa6ruF4NkkS0rN8mSSd9KiyrCvryrrK2gCdpJOyGvl3GtaVdWVdZW2ATtJJWY3kCaGTdJJOytoAnaSTshrJO0kn6SSdlLUBOkknZTWSd5JO0kk6KWsDdJJOymok7ySdpJMhOKmUmpumQZIkO494NqMOwzAXRQFrrePYPM+elVLIssxryK7rZmutg/8K6XOAv2Z/JXldHqTvQyQE8HCQof4qsWb2BLkbqAIXp3YbAAAAAElFTkSuQmCC" mediaID="Square_cst_Empty"/><costume name="X" center-x="29" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAAAAXNSR0IArs4c6QAAA8NJREFUaEPd271P20AYBvCHVkIMlmDokA2GbgwJeyFBXegE/AWEjSEDqEu2wMYIAwsMwMYGY5cKBsaqAkG2DrBlqCqQGBBSpepxOcs57LN9H3ack1hiB/t373vvmTszguFsEwAeBG0EwCaAKoDakHjfAagAeAHwB8BPgawDaAwJUmZcyMgXz/PQarVGx8bGSmV+fn7G0dERer1eItI/oVar4fz8HBMTTO1ytOXlZZydnQU3Oz09/bvb7X4A8CaSwUllgq6urvpRFO3w8BD39/fY3GS5kZBLS0t9vVEGqAzsdDo+bmtrKxrJg5OTk+AXRRtkqAxcWVkJIqpEsicY+kGHqoAMUCKSJ0VBmeuMbNEtCZgaGQVltWXVLRKaBpgJ6ZemiwuwID0+PvoBLBIqZ1d4DMrZlSpdw1+6urpCo9EoFJoFmDmSAlskVAbW63U/w1QtcySLhMrAarXqA5OexrSRxOYZUV2gdrrmPUZNgFaQriNqCrSGdAXlcJifn8fDw/8/7NOOQeMpRFXFbI5RW0CrkbRZdWXg+Pi4X+Smpqa0niKNqmvcFU0iGgXkNGHy+OgEGTdG+VDPx0JV54THICNoCnSSrqrphccIbTabb5wuIigu4iyS4gJ3d3d+9K6vrwOYDOU5MzMzQRW1FcHckLwQpwA+1EdBeYwpykiy2QY6T9dwTkZB9/b2cHBw4BSYKzIuouGOOD09VRYmrfkj7fKH7i+P+h4jOjs7i9vb277DcQXJxrWdFx75Jomcm5vDzc3NcCLlIiN3gKto5hpJThOiihLIwrO/v6+cXkqVrlHL93woUE0vNoC5Vdc4oEC4hjpP17Rroy6hTpFpgaqIck+G2xUmzRkyK1AF5dhl5dVtTpC6wDB0fX0dx8fHgcsEah0p9gPF3amW75MiQ5gNqFVk1uX7JCSP24BaQ7oAik4whVpB2lgbTYqqCdQYmQfQNKJGyDyBJlBtZBFAXagWksuEXJcRTXf5Pmkcqo5nGaOZkTaX702QWaaXTEgZyPd8+FnSJqgpxjSiqZEuF39NO0FOXa7z8llXdH4q5CAD44pR+O2xRGQZgAK6s7ODjY2NIDEEdHd3N/7dusXFxb5NUBer26apKn8/6u2xhYUFbG9v89T+V0Hb7TZOTk7AfQq2MgAFWIZWKhXxgm8/0vO8v09PT+/LBoyDvn5+KV7P/gzgUzgN1tbWwN4oW2M9Cb/BzL0ngfwKwCsbKOX9/iCSu6PcCv4CYBTAJYBfKX/BIJ/28fXmvhMp/lWCH/Ln2yDfuc69/QO8JTdw9aXwqAAAAABJRU5ErkJggg==" mediaID="Square_cst_X"/><costume name="O" center-x="28" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAABF9JREFUaEPtmos1LEEQhnsiQARsBIgAEbARIAJEsLsRIAI2AkRgNwJEgAgQwdzzzbm1p7bNo7rnsWupc5z7MNPdf/1Vf1dXT+KcGzrn9tzq2jT5D3Kwuhjd6FeCHKVp+uNZTZJk5JwTHPNMpmm6MlGbJARpZt2BfHt7c+/v79msm5ubbmtrq1WHtg5yOp26+/t7N5lM3PPzcymYnZ0dt7+/746OjtzeXnMi3wpImBqNRhm4z8/PKJbW19czsIPBoDbTjYIE0PX1tRsO2W6LTYeoDt2iNxjv7OzMATzGGgN5e3vrLi4uvjEHIBiRMCxbpIQ1f0rOyvMAvLy8dCcnJ8E4GwEJuKurq7nJySkYAFyMkcO8T05rOz8/z8CGWC2QhOfp6WmWe2IwB2DYa8IYG2CaWca+ubkxh280SAAeHBzMKebx8XEGMDZ3ipzCXAAdj8ezR1Dix8dH01zRIGGQPBRDBasEpy6zjI9qi5GfMFplUSD9yZgoRhCqFpf3exyLg0OcGwySHOn3+7NJkHZfdGIWH/IOoctWJXZ3d1eqAcEge72eY2/DDg8P50QnZKF1n0V8Hh4esmEoC19fXwuHDAIJY2wX2NraWga2aZGxgkeMAPf19ZW9wrYCw3lmBsmgsChlWtmg1oXWfU47HWfDZp7TzSD1gOyFErJ1F1r3fdiUPbTI8WaQu7u7sz2xSzWtcoJWW6osKiXfTCAJ0Y2Njdm7Hx8fC8tFH4BlbSaQFm9VebzN31P9vLy8ZFPkRZkJJBu9lFTLIDi+w7ReUFrqSoxnTSA5SchpgHox9mTRFpvkIXU0lpeXfyDF84iO7I/LJDqyPi0+7JOsUZuJSfWQW9ZWZdka/0AK5Vqin56eHP9eJqPVSbGCbW9vf2t9mphcIXUdzl346NzTIKvObotgWJ9xo7cQ3QnI22wXAUzPqYuVvDaMCtdiJnXMVx1QFwFYb3F5mmHKSRbO/iMH1GUSH01A0RHQDFKHxDKFrGVdZpC6PoRZTuFtX7lVhT4Hd7oVYkV1tRkkA2mV5e8MukijKJdDctGB2XwKESC+5xa5nfj917LICmISsDoHECPY7LoCQmxgUQ4NVRoRDJKBCVU5iZOXqG1XrUm/a0gZR8iWzR8MEjbxJEBlSwm5fKmTw6QL3Xu5lqf3C8CqSIoCyUJ9tW07dP0QZQ3WLkU0SCbxkx+gcvVdhzH/Xe49/O54SFu0Fsi80OX/CB8aXnV7QUQL1xL6qxFriAZ3BqpYIVe4gBExkucBiRqzh1kLB8aiaUaU+I1iRIYTh3UsWUdtJmUgVI/WID8iSNo5sCtX7CxSFgoouXIAQN63PrBHuPITo+KNgdRg/avvqkgo+30TV/SNg9TVkXyyIveIVrDce8onMaGhmTdHayD1ZISy/uxMh6gOXfnsLCYkyxzYCUgrg209Z+oMtDV5V+P+Nia/fZ49SdM07puxrigyzJMkCbeyguN3foNu8NOPeyRrSf748Kxy+z+VzUmjGHSyOAAAAABJRU5ErkJggg==" mediaID="Square_cst_O"/></media></snapdata>