<snapdata remixID="9044522"><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="10" y="261.0000000000032"><block s="receiveMessage"><l>Start game</l></block><block s="doSetVar"><l>Game progress</l><l>In progress</l></block></script><script x="287.0000000000001" y="178"><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>true</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><script x="16.000000000000114" y="10"><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></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.606770833333343" color="243,118,29"/><watcher var="board" style="normal" x="0.5000000000001137" y="116.5" color="243,118,29" extX="79.99999999999989" extY="70"/><sprite name="Sprite" idx="2" x="-184.00000000000045" y="96.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="152"><costumes><list struct="atomic" id="153"></list></costumes><sounds><list struct="atomic" id="154"></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></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>false</bool></variable><variable name="Game progress"><l>Over</l></variable><variable name="board"><list struct="atomic" id="948">x,o,x,o,o,x,o,x,x</list></variable></variables></project><media name="U3L2-TicTacToe" app="Snap! 5.1, http://snap.berkeley.edu" version="1"></media></snapdata>