<snapdata remixID="9302272"><project name="U5-Tic-Tac-Toe advanced" app="Snap! 5.4, 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" penlog="false" volume="100" pan="0" lines="round" ternary="true" codify="false" inheritance="false" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOjUlEQVR4Xu3VwQkAIAwEQe0w/TejYBHuZ9LAwRDYPTNnOQIECBAgQOCrwBbgr97GCBAgQIDAExBgj0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAIELAwG5n57gOi8AAAAASUVORK5CYII=</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="100" y="-100" 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>10</l></variable></variables><scripts><script x="30" y="10"><block s="receiveGo"></block><block s="removeClone"></block></script><script x="30" y="114"><block s="receiveGo"></block><custom-block s="Start"></custom-block><block s="doWarp"><script><custom-block s="makeBoard"></custom-block></script></block><custom-block s="Choose mode"></custom-block><block s="doIf"><block var="AI mode"/><script><block s="doUntil"><block s="reportEquals"><block var="Lock board"/><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="doIf"><block s="reportEquals"><block s="getLastMessage"></block><l>Ai</l></block><script><custom-block s="AI %s"><block var="X or O"/></custom-block><custom-block s="Ending Condition"></custom-block></script></block></script></block></script></block></script><script x="30" y="393"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportEquals"><block var="Lock board"/><block s="reportBoolean"><l><bool>false</bool></l></block></block><script><block s="doIfElse"><block var="AI mode"/><script><block s="doIf"><block s="reportEquals"><block s="getLastMessage"></block><l>Player</l></block><script><custom-block s="Player %s"><block var="X or O"/></custom-block><custom-block s="Ending Condition"></custom-block><block s="doBroadcast"><l>AI</l></block></script></block></script><script><custom-block s="Player vs Player"></custom-block><custom-block s="Ending Condition"></custom-block></script></block></script></block></script></scripts></sprite><watcher var="X&apos;s turn?" style="normal" x="8.425539473686513" y="8.425539473686726" color="243,118,29" hidden="true"/><watcher scope="Square" s="getCostumeIdx" style="normal" x="16.85107894737257" y="16.851078947373367" color="143,86,227" hidden="true"/><watcher scope="Square" var="Position number" style="normal" x="220.74913421059182" y="55.60856726676366" color="243,118,29" hidden="true"/><watcher var="Status of all winning triples" style="normal" x="203.89805526321788" y="158.40014884574146" color="243,118,29" hidden="true"/><watcher var="Lock board" style="normal" x="16.85107894737257" y="208.95338568786144" color="243,118,29" hidden="true"/><watcher var="AI mode" style="normal" x="16.85107894737257" y="249.39597853177338" color="243,118,29" hidden="true"/><watcher var="X or O" style="normal" x="11.795755263161254" y="11.7957687440245" color="243,118,29"/><watcher var="Board" style="normal" x="33.00943455695665" y="103.49598339941849" color="243,118,29" extX="80" 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="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">Create the Borad for Tic Tac Toe.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="show"></block><block s="doSwitchToCostume"><l>Empty</l></block><block s="doFor"><l>y</l><l>1</l><l>3</l><script><block s="doFor"><l>x</l><l>1</l><l>3</l><script><block s="gotoXY"><block s="reportProduct"><block s="reportDifference"><block var="x"/><l>1</l></block><l>50</l></block><block s="reportProduct"><block s="reportDifference"><block var="y"/><l>1</l></block><l>-50</l></block></block><block s="createClone"><l>Square</l></block><block s="doChangeVar"><l>Position number</l><l>1</l></block><block s="doAddToList"><l>Empty</l><block var="Board"/></block></script></block></script></block><block s="hide"></block></script></block-definition><block-definition s="Possible winning triple" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></list></block></block></script></block-definition><block-definition s="Status of Triple %&apos;list&apos;" type="reporter" category="variables"><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="list"/></list></custom-block></block></script></block-definition><block-definition s="Status of all winning triples" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Status of all winning triples</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><custom-block s="Possible winning triple"></custom-block><script><block s="doAddToList"><custom-block s="Status of Triple %l"><block var="item"/></custom-block><block var="Status of all winning triples"/></block></script></block><block s="doReport"><block var="Status of all winning triples"/></block></script></block-definition><block-definition s="Win? %&apos;XO&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block s="reportListContainsItem"><custom-block s="Status of all winning triples"></custom-block><block s="reportNewList"><list><block var="XO"/><block var="XO"/><block var="XO"/></list></block></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block></block></script></block-definition><block-definition s="Ending Condition" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportOr"><custom-block s="Win? %s"><l>o</l></custom-block><custom-block s="Win? %s"><l>x</l></custom-block></block><script><block s="doIf"><custom-block s="Win? %s"><l>o</l></custom-block><script><block s="doSayFor"><l>o win</l><l>1</l></block><block s="doSetVar"><l>Lock board</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doIf"><custom-block s="Win? %s"><l>x</l></custom-block><script><block s="doSayFor"><l>x win</l><l>1</l></block><block s="doSetVar"><l>Lock board</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></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>Tie</l><l>1</l></block><block s="doSetVar"><l>Lock board</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block></script></block-definition><block-definition s="Best Empty Square" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><l>5</l><l>1</l><l>3</l><l>7</l><l>9</l><l>2</l><l>4</l><l>6</l><l>8</l></list></block></block></script></block-definition><block-definition s="AI %&apos;X or O&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>Empty item</l><l>Contain X or O?</l><l>Best win</l><l>Best win with X or O</l></list></block><block s="doSetVar"><l>Empty item</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>Best win</l><custom-block s="Best win for %s"><block var="X or O"/></custom-block></block><block s="doIfElse"><block s="reportListContainsItem"><block var="Board"/><block var="X or O"/></block><script><block s="doIfElse"><block s="reportEquals"><l>0</l><block s="reportListLength"><block var="Best win"/></block></block><script><custom-block s="For tie %s %s"><block var="X or O"/><block var="Empty item"/></custom-block></script><script><block s="doSetVar"><l>Best win with X or O</l><custom-block s="Best win contain %s %s"><block var="X or O"/><custom-block s="Best win for %s"><block var="X or O"/></custom-block></custom-block></block><block s="doIfElse"><block s="reportEquals"><l>0</l><block s="reportListLength"><block var="Best win with X or O"/></block></block><script><custom-block s="Need 3 step to win %s %s %s"><block var="X or O"/><block var="Empty item"/><block var="Best win"/></custom-block></script><script><custom-block s="Need two step to win %s %s %s"><block var="X or O"/><block var="Empty item"/><block var="Best win with X or O"/></custom-block></script></block></script></block></script><script><custom-block s="First choice %s"><block var="X or O"/></custom-block></script></block></script></block-definition><block-definition s="Player %&apos;X or O&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="X or O"/><l>X</l></block><script><block s="doIf"><block s="reportAnd"><block s="reportEquals"><l>Empty</l><block s="reportGetImageAttribute"><l><option>name</option></l><l><option>current</option></l></block></block><block s="reportEquals"><block var="X&apos;s turn?"/><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><script><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="Position number"/><block var="Board"/><l>o</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script><script><block s="doIf"><block s="reportAnd"><block s="reportEquals"><l>Empty</l><block s="reportGetImageAttribute"><l><option>name</option></l><l><option>current</option></l></block></block><block s="reportEquals"><block var="X&apos;s turn?"/><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="Position number"/><block var="Board"/><l>X</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block></script></block-definition><block-definition s="Player vs Player" type="command" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportEquals"><l>Empty</l><block s="reportGetImageAttribute"><l><option>name</option></l><l><option>current</option></l></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="doReplaceInList"><block var="Position number"/><block var="Board"/><l>x</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="Position number"/><block var="Board"/><l>o</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><script><block s="doSwitchToCostume"><l><option>current</option></l></block></script></block></script></block-definition><block-definition s="Start" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Position number</l><l>1</l></block><block s="doSetVar"><l>Board</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>AI mode</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>Lock board</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doWait"><l>.1</l></block></script></block-definition><block-definition s="Choose mode" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doAsk"><l>AI or player?</l></block><block s="doIfElse"><block s="reportEquals"><block s="getLastAnswer"></block><l>AI</l></block><script><block s="doSetVar"><l>AI mode</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doAsk"><l>AI is X or O? (X go first)</l></block><block s="doIfElse"><block s="reportEquals"><l>X</l><block s="getLastAnswer"></block></block><script><block s="doSetVar"><l>X or O</l><l>X</l></block><block s="doSetVar"><l>Lock board</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doBroadcast"><l>AI</l></block></script><script><block s="doSetVar"><l>X or O</l><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="doSetVar"><l>Lock board</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script><script><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>Lock board</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="Best win for %&apos;X or O&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>Best Win List</l></list></block><block s="doSetVar"><l>Best Win List</l><block s="reportNewList"><list></list></block></block><block s="doIfElse"><block s="reportEquals"><block var="X or O"/><l>X</l></block><script><block s="doFor"><l>i</l><l>1</l><block s="reportListLength"><custom-block s="Status of all winning triples"></custom-block></block><script><block s="doIf"><block s="reportAnd"><block s="reportNot"><block s="reportListContainsItem"><block s="reportListItem"><block var="i"/><custom-block s="Status of all winning triples"></custom-block></block><l>O</l></block></block><block s="reportNot"><block s="reportListContainsItem"><block var="Best Win List"/><block s="reportListItem"><block var="i"/><custom-block s="Possible winning triple"></custom-block></block></block></block></block><script><block s="doAddToList"><block s="reportListItem"><block var="i"/><custom-block s="Possible winning triple"></custom-block></block><block var="Best Win List"/></block></script></block></script></block><block s="doReport"><block var="Best Win List"/></block></script><script><block s="doFor"><l>i</l><l>1</l><block s="reportListLength"><custom-block s="Status of all winning triples"></custom-block></block><script><block s="doIf"><block s="reportAnd"><block s="reportNot"><block s="reportListContainsItem"><block s="reportListItem"><block var="i"/><custom-block s="Status of all winning triples"></custom-block></block><l>X</l></block></block><block s="reportNot"><block s="reportListContainsItem"><block var="Best Win List"/><block s="reportListItem"><block var="i"/><custom-block s="Possible winning triple"></custom-block></block></block></block></block><script><block s="doAddToList"><block s="reportListItem"><block var="i"/><custom-block s="Possible winning triple"></custom-block></block><block var="Best Win List"/></block></script></block></script></block><block s="doReport"><block var="Best Win List"/></block></script></block></script></block-definition><block-definition s="Current location of X" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>Board item #</l><l>Current location</l></list></block><block s="doSetVar"><l>Current location</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>Board item #</l><l>0</l></block><block s="doForEach"><l>item</l><block var="Board"/><script><block s="doChangeVar"><l>Board item #</l><l>1</l></block><block s="doIf"><block s="reportEquals"><l>X</l><block var="item"/></block><script><block s="doAddToList"><block var="Board item #"/><block var="Current location"/></block></script></block></script></block><block s="doReport"><block var="Current location"/></block></script></block-definition><block-definition s="Current location of O" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>Board item #</l><l>Current location</l></list></block><block s="doSetVar"><l>Current location</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>Board item #</l><l>0</l></block><block s="doForEach"><l>item</l><block var="Board"/><script><block s="doChangeVar"><l>Board item #</l><l>1</l></block><block s="doIf"><block s="reportEquals"><l>O</l><block var="item"/></block><script><block s="doAddToList"><block var="Board item #"/><block var="Current location"/></block></script></block></script></block><block s="doReport"><block var="Current location"/></block></script></block-definition><block-definition s="Best win contain %&apos;X or O?&apos; %&apos;Best win&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>Best win with X or O</l></list></block><block s="doSetVar"><l>Best win with X or O</l><block s="reportNewList"><list></list></block></block><block s="doFor"><l>i</l><l>1</l><block s="reportListLength"><block var="Best win"/></block><script><block s="doForEach"><l>1</l><block s="reportListItem"><block var="i"/><block var="Best win"/></block><script><block s="doIf"><block s="reportAnd"><block s="reportEquals"><block s="reportListItem"><block var="1"/><block var="Board"/></block><block var="X or O?"/></block><block s="reportNot"><block s="reportListContainsItem"><block var="Best win with X or O"/><block s="reportListItem"><block var="i"/><block var="Best win"/></block></block></block></block><script><block s="doAddToList"><block s="reportListItem"><block var="i"/><block var="Best win"/></block><block var="Best win with X or O"/></block></script></block></script></block></script></block><block s="doReport"><block var="Best win with X or O"/></block></script></block-definition><block-definition s="First choice %&apos;X or O&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>Empty list</l></list></block><block s="doSetVar"><l>Empty list</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>1</l><custom-block s="Best Empty Square"></custom-block><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="1"/><block var="Board"/></block><l>Empty</l></block><script><block s="doAddToList"><block var="1"/><block var="Empty list"/></block></script></block></script></block><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="Empty list"/></block><block var="Board"/><block var="X or O"/></block><block s="doTellTo"><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="Empty list"/></block><block s="reportGet"><l><option>other sprites</option></l></block></block><block s="reifyScript"><script><block s="doSwitchToCostume"><block var="X or O"/></block></script><list></list></block><list></list></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doBroadcast"><l>Player</l></block></script></block-definition><block-definition s="For tie %&apos;X or O&apos; %&apos;Empty list&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doFor"><l>i</l><l>1</l><block s="reportListLength"><block var="Board"/></block><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="i"/><block var="Board"/></block><l>Empty</l></block><script><block s="doAddToList"><block var="i"/><block var="Empty list"/></block></script></block></script></block><block s="doTellTo"><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="Empty list"/></block><block s="reportGet"><l><option>clones</option></l></block></block><block s="reifyScript"><script><block s="doSwitchToCostume"><block var="X or O"/></block></script><list></list></block><list></list></block><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="Empty list"/></block><block var="Board"/><block var="X or O"/></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block></block><block s="doBroadcast"><l>Player</l></block></script></block-definition><block-definition s="Need 3 step to win %&apos;X or O&apos; %&apos;Empty list&apos; %&apos;Best win&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doForEach"><l>2</l><block s="reportListItem"><l>1</l><block var="Best win"/></block><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="2"/><block var="Board"/></block><l>Empty</l></block><script><block s="doAddToList"><block var="2"/><block var="Empty list"/></block></script></block></script></block><block s="doTellTo"><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="Empty list"/></block><block s="reportGet"><l><option>clones</option></l></block></block><block s="reifyScript"><script><block s="doSwitchToCostume"><block var="X or O"/></block></script><list></list></block><list></list></block><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="Empty list"/></block><block var="Board"/><block var="X or O"/></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block></block><block s="doBroadcast"><l>Player</l></block></script></block-definition><block-definition s="Need two step to win %&apos;X or O&apos; %&apos;Empty list&apos; %&apos;Best win with X or O&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doForEach"><l>3</l><block s="reportListItem"><l>1</l><block var="Best win with X or O"/></block><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="3"/><block var="Board"/></block><l>Empty</l></block><script><block s="doAddToList"><block var="3"/><block var="Empty list"/></block></script></block></script></block><block s="doTellTo"><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="Empty list"/></block><block s="reportGet"><l><option>clones</option></l></block></block><block s="reifyScript"><script><block s="doSwitchToCostume"><block var="X or O"/></block></script><list></list></block><list></list></block><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="Empty list"/></block><block var="Board"/><block var="X or O"/></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block></block><block s="doBroadcast"><l>Player</l></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></blocks><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="Board"><list struct="atomic" id="1659">Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty</list></variable><variable name="Status of all winning triples"><list id="1660"><item><list struct="atomic" linked="linked" id="1661">Empty,Empty,Empty</list></item><item><list struct="atomic" linked="linked" id="1662">Empty,Empty,Empty</list></item><item><list struct="atomic" linked="linked" id="1663">Empty,Empty,Empty</list></item><item><list struct="atomic" linked="linked" id="1664">Empty,Empty,Empty</list></item><item><list struct="atomic" linked="linked" id="1665">Empty,Empty,Empty</list></item><item><list struct="atomic" linked="linked" id="1666">Empty,Empty,Empty</list></item><item><list struct="atomic" linked="linked" id="1667">Empty,Empty,Empty</list></item><item><list struct="atomic" linked="linked" id="1668">Empty,Empty,Empty</list></item></list></variable><variable name="Lock board"><bool>true</bool></variable><variable name="AI mode"><bool>false</bool></variable><variable name="X or O"><l>X</l></variable></variables></project><media name="U5-Tic-Tac-Toe advanced" app="Snap! 5.4, http://snap.berkeley.edu" version="1"></media></snapdata>