<snapdata remixID="9003497"><project name="U3L2-TicTacToe" app="Snap! 5.1, http://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" volume="100" pan="0" lines="round" ternary="true" codify="false" inheritance="false" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAC99JREFUeAHt0DEBAAAAwqD1T20MH4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBj4DAyN/gABHhb3AgAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Square" idx="1" x="-100000" y="10000000" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="80,80,80,1" pen="tip" id="8"><costumes><list id="9"><item><costume name="Empty" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAMdJREFUaAXtmrENgzAABK0oJWlJTSZhFiJmBUXZyQE2+BQnsM6Sy9fJd5SU0uAZtzfVFu4wvL63PdD0nkut9dJ3WT+l6x7340H7o1o5PujsJS1kIdiAnxwsPMZZKFYGDywEC49xFoqVwQMLwcJjnIViZfDAQrDwGGehWBk8sBAsPMZZKFYGDywEC49xFoqVwQMLwcJjnIViZfDAQrDwGGehWBk8sBAsPMZZKFYGDywEC49xFoqVwQMLwcL/wo3bqok/Gvv+uf4AIF351gHMv7AAAAAASUVORK5CYII=" id="10"/></item><item><costume name="X" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAiVJREFUaAXt2k9LAkEUAPBndBCE/ABWiJ/CTvYBNJCO5Z9OQXTIW5ci7VqdIqjsI0TQp9gIzP57kv5o2TdIurQjLEi4szsz783Ohg+GkdUd32/nsfB0IwCQzOXym7FYNGq/DnX0+z8Pk7Yg2et9lIrllVCDvnqfcNNovDIQpFKp7/W11VCDrKtrBoKJUNfYiOTHoBEXxahD3B16e+8YlSxLxisnLqharcHW9o4xqMenZ5jPZOD84tI1Jy7oYH8PWq2WESiGyWWzsLRcgMX8ghwoHp+C+ulJ4KhhzG6NXzHcHWKXIWiUCIbl6wkKEiWK8Q0KAiWDEQLpRMlihEE6UCoYKRAlShUjDaJAYWCUQJgoLIwyCAOFiUEBqaCwMWggGRQFBhUkgqLCoIP8oCgxJCAeihpDBhqF0oEhBQ2jms0mzKXTg+bMq59h56mEr/ZB5Qs63S7c391CIpFQWcb3uaQgp8wKxRJYlqWl8yUDORj2GwArM12dLwnoL8apFx0odJAbRhcKFeSF0YFCA/nFUKNQQKIYSpQySBZDhVICqWIoUNIgLAw2SgqEjcFECYOoMFgoIRA1BgPlG6QLo4ryBdKNUUF5goLCyKK4oKAxMiguqLJR0dI2O4nz5uHWg/en8eDRGLeF6md1mJ2Zdntb+3EHxWa34O6QSRgHwMOwz3BBziJhmscg03drcFNot9vRw6Nj03Pl5sceAGQRsUfSHmV7/Id4+QUcX+A7aPHCPwAAAABJRU5ErkJggg==" id="11"/></item><item><costume name="O" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAABP1JREFUaAXtml1MFFcUx08aH9n1zYbQNhFZWNuYdvmIvFjWLdSkQa1WK5ZqjLJItY3KWtMHLbvaRKuCNbbGwkM/FFiFinz4oCiKPrgKLr7UrzU1hba8Cvo+3v/VaZCdO187y0ypJ5nM7v049/zuPXP2zrlLNA3Fz5ik6XDNnp09+AoWaP2GIEmS9J++rsVuUEaGawYHAtR0kZdATl/JGVYbeP5CH8XjQ5S4f48u9V2khw//SBpixcpVlJWVRe/48imwsITeeP21pDZmCyxxueGRv2jX12HKzp5DTY2N3JZVFRV0ub9fMdCEQiEOc2soTv6SElr5cQX91tFlliGpn59FORbkjMufwyPSzl11EguX0t5vD0r4bkbaT3dKbNWksrJFEj6bERblpHnz3r4FOlNAP/1y4l+QR4/GzNiQ1Odc70UOhQk2OjkykGGXGxsbp63bQtRy4ji1tEbpqx0hmjnTnbTsZgreLw1QW9sp8uTmcVfE82hUDAUFwFQFq8ntdvOBrQKZaDR0YpI8Hg/VVAfpQP0h+mjZkolNVD/rBpJhvF4v7dkdVlVqRSUgvHkeWlxeztXphdLtcrWh7TzUTgWMPCFvvTmXunt6aMXypRS7PiAXq951AX1/9EcaHx+nSLhOVVk6KgHFIh99srqC4CVaogn0++079MXmGgozmHQ8M1oGoh7utmTph1QXjmg21wRqaDhER344RpgpOwXe0dV5RtP1VIHgt9i+rKlcbScLHxveUbt9BzU1NanaogoUjUa5ErtcbbLlmFhMMB4DkQiBsD87/F2DI1ZHNh4TW12ziaLRk3JR0l0I1Hepn7ZsrbUtECRZ+rxgcfkHdD0WE1WTEAg74QXvlgg72lWB4PTgQULodkIgRBT8UjtREMLv3ksomiYEwouZ3aFa0WJWmOPJpdHRUcVqRSCEa7xVOlVycz00FL+paJ4iEFpiR+1UcbtcQtOEQMIeDq/4fwC5XBk0Mjzs2LX4+59RcgncTnGFEN16e885FggRDpFOSRSB0JBlYDR3tkoKp6IMES4zM1NxKCHQ/OJi9uN1X7GT3YXYoBYV5iuaIQRCVvNsT7diJzsLkQnKyfEIs61CoNKAn9rbThJ23U6Sq1euUKC0TGiSEAhbdZYVZbk38VZdqDVNFcgpfLMnwvIL4l2MEAg2BYNV1HjsqK7kRJoYXlB7vLmVT7Jacl8VCB0rP11DB+sbXlBsxxe4PpI1mGQ1UQVCRyhoZmlfvXkxtcFSqYtEdhM7EBAGA1m3JhBWCelYvXkxWbGV933763le8LONQU21mkDQgLwYXA95bT3JPs1RDTTAuRGeY715QV1AGB8pYOS1pxIKMF+GtvF0sN6XTd1Ak6HUUkkGFkDYFOlnozBQZggIHbBSBYVF/FTg51+bUWSpIJptqKqmrjMdhlZGNsIwEDri/AaHXTj0wuBWREA8m1gVnLniwAsHX3rdTIbB3RQQOhbPL+KD+vILeAQEmJmDX6wIopjP5+N5glRPBXUfeAFismB79PmmjTy72tHZTdHWFu73SDPhfaWw4NmOeK43jycs8dw9fvyE8IKWSCTo5uAAvxBBAYJJSlVSApIHB9i6tZX8wowPDMa5wUis41wJm1wIOy2nhYH3+NsmgHG8bwWEbAfulgBNVIgf4uS9VnRik7R+Nv0MpdWqFJS/BEph8qasq5+NNC3+0Thr1quxpw8VBnvd/ej3AAAAAElFTkSuQmCC" id="12"/></item></list></costumes><sounds><list struct="atomic" id="13"></list></sounds><blocks></blocks><variables><variable name="position number"><l>9</l></variable></variables><scripts><script x="16.000000000000114" y="26"><block s="receiveGo"></block><block s="doSetVar"><l>position number</l><l>0</l></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="doWait"><l>.1</l></block><custom-block s="makeBoard"></custom-block><block s="doBroadcast"><l>Start game</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script x="10" y="270.0000000000032"><block s="receiveMessage"><l>Start game</l></block><block s="doSetVar"><l>Game progress</l><l>In progress</l></block></script><script x="406.0000000000001" y="10"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportNot"><block s="reportOr"><block s="reportEquals"><block s="getCostumeIdx"></block><l>3</l></block><block s="reportEquals"><block s="getCostumeIdx"></block><l>2</l></block></block></block><script><block s="doIfElse"><block s="reportEquals"><block var="X&apos;s turn?"/><block s="reportBoolean"><l><bool>false</bool></l></block></block><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></script><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></script></block></script></block><block s="doIf"><custom-block s="won? %txt"><l>O</l></custom-block><script><block s="doBroadcast"><l>O won</l></block></script></block><block s="doIf"><custom-block s="won? %txt"><l>X</l></custom-block><script><block s="doBroadcast"><l>X won</l></block></script></block><block s="doIf"><block s="reportAnd"><block s="reportEquals"><block s="reportAnd"><custom-block s="won? %txt"><l>X</l></custom-block><custom-block s="won? %txt"><l>O</l></custom-block></block><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="reportEquals"><block s="reportListContainsItem"><block var="board"/><l>Empty</l></block><block s="reportBoolean"><l><bool>false</bool></l></block></block></block><script><block s="doBroadcast"><l>Tie</l></block></script></block></script></scripts></sprite><sprite name="Sprite" idx="2" x="-183.00000000000045" y="123.00000000000003" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="0,39.98400000000004,249.9,1" pen="tip" id="148"><costumes><list struct="atomic" id="149"></list></costumes><sounds><list struct="atomic" id="150"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="127"><block s="receiveMessage"><l>X won</l><comment w="90" collapsed="false">Will announce to the player that X won the game</comment></block><block s="doSayFor"><l>Awesome! X wins the game!</l><l>2</l></block><block s="doSetVar"><l>Game progress</l><l>Over</l></block></script><script x="20" y="10"><block s="receiveMessage"><l>O won</l><comment w="90" collapsed="false">Will announce to the player that O won the game</comment></block><block s="doSayFor"><l>Awesome! O wins the game!</l><l>2</l></block><block s="doSetVar"><l>Game progress</l><l>Over</l></block></script><script x="82" y="271"><block s="receiveMessage"><l>Tie</l><comment w="90" collapsed="false">Will announce to the player that the game ended in a tie</comment></block><block s="doSayFor"><l>Waaah! No one wins!</l><l>2</l></block></script></scripts></sprite><watcher var="Game progress" style="normal" x="77.91666666666652" y="0" color="243,118,29"/><watcher scope="Square" var="position number" style="normal" x="1.2499999999998863" y="12.75" color="243,118,29" hidden="true"/><watcher var="X&apos;s turn?" style="normal" x="1.1067708333331439" y="30.606770833333357" color="243,118,29"/><watcher var="board" style="normal" x="1.5000000000001137" y="41.5" color="243,118,29" extX="79.99999999999989" extY="70"/></sprites></stage><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></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></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="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></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></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></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="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></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="reportGreaterThan"><block var="i"/><block var="end"/></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></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="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></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="makeBoard" type="command" category="control"><comment x="0" y="0" w="90" collapsed="false">Creates the tic-tac-toe board by cloning the original sprite, and moves original sprite offscreen.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doFor"><l>Rows</l><l>-1</l><l>1</l><script><block s="doFor"><l>Columns</l><l>-1</l><l>1</l><script><block s="doChangeVar"><l>position number</l><l>1</l></block><block s="gotoXY"><block s="reportProduct"><block var="Rows"/><l>50</l></block><block s="reportProduct"><block var="Columns"/><l>50</l></block></block><block s="createClone"><l>Square</l></block></script></block></script></block><block s="gotoXY"><l>-100000</l><l>10000000</l></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>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block><block s="reportNewList"><list><l>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>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></list></block></block></script></block-definition><block-definition s="status of triple %&apos;input&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><list><block var="input"/></list></custom-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;winning player&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><custom-block s="for each %upvar of %l %cs"><l>item</l><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><list><custom-block s="Possible Winning Triples"></custom-block></list></custom-block><script><block s="doIfElse"><block s="reportListContainsItem"><block var="item"/><l>Empty</l></block><script></script><script><block s="doIfElse"><block s="reportAnd"><block s="reportListContainsItem"><block var="item"/><l>X</l></block><block s="reportListContainsItem"><block var="item"/><l>O</l></block></block><script></script><script><block s="doIf"><block s="reportListContainsItem"><block var="item"/><block var="winning player"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block></script></block></script></custom-block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></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"><l></l></block></script></block-definition></blocks><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="Game progress"><l>In progress</l></variable><variable name="board"><list struct="atomic" id="948">Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty</list></variable></variables></project><media name="U3L2-TicTacToe" app="Snap! 5.1, http://snap.berkeley.edu" version="1"></media></snapdata>