<snapdata remixID="8947082"><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,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+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+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</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="1.0480349344978166" y="-149.73799126637553" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" hidden="true" 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,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAx0lEQVRoQ+2awQ2CUBAFlybwSqzEWiTfoozWwhViONiRiYkFvMsEf4b75LEzHBmqs2eoqktVLT3cNU3n/XvQdW7L83H/65vW7VW31t4edNSMFjpqmd97WchCsAE/OVh4PGehWBkMWAgWHs9ZKFYGAxaChcdzFoqVwYCFYOHxnIViZTBgIVh4PGehWBkMWAgWHs9ZKFYGAxaChcdzFoqVwYCFYOHxnIViZTBgIVh4PGehWBkMWAgWHs9ZKFYGA30X6uWPxnE8bR/Jtp2GcsP1ZgAAAABJRU5ErkJggg==" id="10"/></item><item><costume name="X" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAACBUlEQVRoQ+3aO0/CUBQH8MMGIRFnooaRL0BgdCIGqQnxASgQjMjqc3A04maM38KwOTqqm8YEFx+rr0QdcSMupiQ1olTOvfec3hZha9LH/d1/e8M/rQ8AIoaR2QoG/X7w+K/V+rj2AcB4LBY/LpUXPQ16e32Bq0bjoQ3KZvNH9frhsJcDOr+4hN1abQBybYj/M6HHp2cYGx1xVSp2Y0IltFSpQjgchtrOtitQN7d3YKTTsLd/ANOZqY4xoUDN5jtUlqsQjUa1oyzMQqHYdSwokDkFbkD1wpjjRIN0ozAYYZAuFBYjBXIaJYKRBjmFEsUogbhRMhhlEBdKFkMCokapYMhAVChVDClIFUWBIQfJoqgwLCBRFCWGDYRFUWNYQb1QHBh2kB2KC+MI6Ccql8u2y5ldn+loaxIbQvVB4vxfh5h9qlAswdnpCaysrrEVRcdA5m02mUpBIBCAmdk5b4O+PzObG+usdZ49oW4LAGedZwX9tZpxodhAmKWZA8UCwmCs5Y8aRQ4SwXCgSEEyGGoUGUgFQ4kiAVFgqFDKIEoMBUoJxIFRRUmDODEqKCmQExhZlDDISYwMSgikAyOKQoN0YkRQKJAbMFgUCpRMTkA8kWBrmaLV3vpDm8vPy700duNrfRMVCg39mgtUQqIzqHP/AUjn7GOu3d8J9dsHgBEAKGNi9cA+958uiHxCYDA7+gAAAABJRU5ErkJggg==" id="11"/></item><item><costume name="O" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAEYElEQVRoQ+2aS0wTURSG/66Vx0oXCCIK1MfCFoxuFERDjOArahR8xKgFJS4kRuOGUsrGIBUXxgfFxKhA8REfYGKIiujCB9BqIoiSaAQV3fHQNeaMuUlLZzp3Zu4URCZpuui9Z853/jPn3numFkyxywIgG0DbVOBKTk7pkoD2H3C0Xa6r/aeZXr7qQJHD8XYaaLLKOK0QrzKtj57A7w+g7+MHtD15jM+fP4VN3bZ9BxISErDUZkfO6iwkJc7hNa84TqhC/QNf4fXWof76NWRkLpM+drsN1vQ0WWfp5r0fPuJNwI/79+5K43cWFGLrlo26wYQABYMUHSpBYcEOXdG+fec+fI0NGB4aQvHhEl1ghoGuXK2H2+UEgRwudiAuLlZ3dNlEStfqqiokJiWhvNypKTi6gYaHR1DuqkBPdzfclZVYsXyZYZBgA2T/wiUvai+ex8VaL3LX5nDZ1wVENzvoKEJsbCzOeKqFqKLkLaXh8WOlOO2p4UpBzUAMxmq1otLt4oqa0UHdPe+xIT+fC0oz0IGDRYiJicHZGo9RPzXNJ6glixfhxcvXEdNbE9C585fQ/rQNdd5aU9NMLf0CgYDi/bmBWITedfdg8aKFmqIrcvDR0mOSOaUM4QaiVLPZM3CkpFikf5pt0TNss9nQ0OiTTT0uIBpUWLATkaTW7JmBCZT6AX8X5I46XEAk84LUtAlXh8WAqdTc0hKW/qpAtK2Zm5SIoaHhCSkESkKeqvLg96/RsKVDFYi2NrR5jHaZVstIKlKlR0vR2vowZKgqEKXbylVZXKu0mhOif09JmY/xaacKJDdJtGN67ckFWxXIYrFgbGxM7z1NnUfVjq7gpSQiEP3o8Xhw84bPVMf0GqdjRpPPF1K+VYG8Xq9svdfrhMh55Px4/6aBREbYqC3NCinVeqOOiJpPh7/nz9pD1sj/q8pRJHNz15nSMxChEp0A1uflhyz6qgqVOV2YvyAV+/buEuGDUBu06D9tbw/pCqkCsV7ZZFuLWKtL816Oturx8XH40j+gqT8mVAoZY5Q5M2bG4OSJvydYdqkqRAOVJpvttJL9SEHmAqIzUXZW1qQ6sf78MSjbRuMCYirRd7R6cUrqsAOn0iPADcRUUmpORCv9qFSnpqWHPTuaniE2mLVlJ6pZQsfurs6OiH1BboUYFBWI3t7eqDcbWTDlGiOaq9z4dIo2FC8M+alZofFKuVzlpnZS6VR6proqrHeg9MzqBiKDlNP0/sbpcgvfGlERqqhwY6C/HzVna7iDZgiISewsK5PetjkcDsMvvmjRvFbfKKmi562gYSCCCnZidc6asB0wT0knRRoamyTFyYbe4AgBYg4T2J17zXjQ0iyV142bNkst5MwMuzRkoTVd6r7SwXF09Be+fR9EX1+fNJY+u3bvQV5eniGVhQIFK0ER7+j0Sw7TfxVGRkZw62aTNGTevBRJBXpxxoBFvaM1DYgnzcwYMw1kRlRF2pzaCk2VfzTOmjX71R8xTomk2qlpUgAAAABJRU5ErkJggg==" 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="14" y="10"><block s="receiveKey"><l><option>space</option></l></block><block s="removeClone"></block></script><script x="53" y="190.9999999999992"><block s="receiveGo"></block><block s="doGlide"><l>1</l><l>0</l><l>0</l></block><block s="doWait"><l>.1</l></block><custom-block s="makeBoard"></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><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></script><script x="438" y="401.9999999999999"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportOr"><block s="reportEquals"><block s="getCostumeIdx"></block><l>2</l></block><block s="reportEquals"><block s="getCostumeIdx"></block><l>3</l></block></block><script><block s="doStopThis"><l><option>this script</option></l></block></script></block><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block></script><script><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l></block></script></block><block s="doIfElse"><block s="reportOr"><custom-block s="won? %s"><l>O</l></custom-block><custom-block s="won? %s"><l>X</l></custom-block></block><script><block s="doStopThis"><l><option>all</option></l></block></script><script><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block var="board"/><l>empty</l></block></block><script><block s="doSayFor"><l>T&apos;was a tie</l><l>2</l></block><block s="doStopThis"><l><option>all</option></l></block></script></block></script></block></script><script x="125" y="493.99999999999943"><custom-block s="status of triple %l"><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></custom-block></script></scripts></sprite><watcher var="X&apos;s turn?" style="normal" x="2.3854166666657193" y="2.3854166666666856" color="243,118,29" hidden="true"/><watcher scope="Square" var="position number" style="normal" x="0" y="4.293749999999996" color="243,118,29"/><watcher var="board" style="normal" x="0.9541666666664241" y="15.743750954166671" color="243,118,29" extX="80.00000000000023" extY="70.00000000000003"/></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="80" collapsed="false">A board with 3 rows and 3 column will be created.  </comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="show"></block><block s="doSwitchToCostume"><l>Empty</l></block><block s="doSetVar"><l>position number</l><l>0</l></block><block s="doFor"><l>row</l><l>1</l><l>3</l><script><block s="doFor"><l>column</l><l>1</l><l>3</l><script><block s="doSetVar"><l>position number</l><block s="reportSum"><block var="position number"/><l>1</l></block></block><block s="createClone"><l><option>myself</option></l></block><block s="changeXPosition"><l>-50</l></block></script></block><block s="changeYPosition"><l>-50</l></block><block s="changeXPosition"><l>150</l></block></script></block><block s="hide"></block></script></block-definition><block-definition s="possible winning tripples" 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>4</l><l>7</l></list></block><block s="reportNewList"><list><l>9</l><l>8</l><l>7</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</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>1</l><l>5</l><l>9</l></list></block></list></block><comment w="297" collapsed="false">reports all posible winnings in a game of tic-tac-toe</comment></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><comment w="181" collapsed="false">reports the status of a winning triple and reports true if the winning triple is displayed in a current game</comment></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><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>4</l><l>7</l></list></block><block s="reportNewList"><list><l>9</l><l>8</l><l>7</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</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>1</l><l>5</l><l>9</l></list></block></list></block></block><comment w="90" collapsed="false">updates the status of the game automatically</comment></block></script></block-definition><block-definition s="won? %&apos;player&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportListContainsItem"><custom-block s="status of all winning triples"></custom-block><block s="reportNewList"><list><block var="player"/><block var="player"/><block var="player"/></list></block></block><script><block s="doSayFor"><block s="reportJoinWords"><list><block var="player"/><l> wins</l></list></block><l>2</l></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><comment w="90" collapsed="false">reports when a player has won a game of tic-tac-toe</comment></block></script></block-definition></blocks><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="934">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>