<snapdata remixID="9287415"><project name="U5-Tic-Tac-Toe" 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+2awQ2CUBAFlybwjJVYi+RblNFauEIMBzsyMbGAd5ngz3CfPHaGI0N19gxVdamqpYe7pum8fw+6zm15Pu5/fdO6verW2tuDjprRQkct83svC1kINuAnBwuP5ywUK4MBC8HC4zkLxcpgwEKw8HjOQrEyGLAQLDyes1CsDAYsBAuP5ywUK4MBC8HC4zkLxcpgwEKw8HjOQrEyGLAQLDyes1CsDAYsBAuP5ywUK4MBC8HC4zkLxcpgoO9CvfzROI6n7QMbcJ2IL5z4zQAAAABJRU5ErkJggg==" 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/64VcKULBAMK1MfCFo1uFEFDjOArahR8xKgFJS4gRuOGUsrGIBUXxgfFxKhA8REfYGKIiuhCEGk1EURJJIKK7njoGnPG3KSlM507M3cKIpM0XfTeM+c7/5lz7z1TC6bZZQGwDkDrdOBKSkrukoAOHXa0Xq2t+aeZ2js6UeBwvJsBmqoyzijEq0zLk2fw+wPo+/QRrc+eor//c9jUnbt2Iz4+HsttdmRlZiAxYT6vecVxQhUaGPwKr7cWdTdvIH3FSuljt9tgTUuVdZZu3vvxE94G/Hj44L40fk9ePnZs36IbTAhQMEjB0SLk5+3WFe279x7C11CPkeFhFB4r0gVmGOja9Tq4XU4QyLFCB+LiYnVHl02kdK2qrERCYiLKypyagqMbaGRkFGWucvR0d8NdUYHVq1YaBgk2QPYvXfGi5vJFXK7xIntDFpd9XUB0syOOAsTGxuKcp0qIKkreUhqePFGCs55qrhTUDMRgrFYrKtwurqgZHdTd8wGbc3O5oDQDHT5SgJiYGJyv9hj1U9N8glq2dAletb+OmN6agC5cvIK2562o9daYmmZq6RcIBBTvzw3EIvS+uwdLlyzWFF2Rg4tLTkjmlDKEG4hSzWZPx/GiQpH+abZFz7DNZkN9g0829biAaFB+3h5EklqzZwYmUOoH/F2QO+pwAZHMi1JSJ10dFgOmUlNzc1j6qwLRtmZBYgKGh0cmpRAoCXmm0oPfv8bClg5VINra0OYx2mVaLSOpSJUUl6Cl5XHIUFUgSrc1azO4Vmk1J0T/npy8EBPTThVIbpJox/Takwu2KpDFYsH4+Ljee5o6j6odXcFLSUQg+tHj8eD2LZ+pjuk1TseMRp8vpHyrAnm9Xtl6r9cJkfPI+Yn+zQCJjLBRW5oVUqr1Rh0RNZ8Ofy9ftIWskf9XlaNIZmdvNKVnIEIlOgFsyskNWfRVFSp1urBwUQoOHtgrwgehNmjRf97WFtIVUgVivbKpthaxVpfmvRxt1efMicOXgUFN/TGhUsgYo8yZNTsGp0/9PcGyS1UhGqg02WynlexHCjIXEJ2J1mVkTKkT688fQ7JtNC4gphJ9R6sXp6QOO3AqPQLcQEwlpeZEtNKPSnVKalrYs6PpGWKDWVt2spoldOzuetMZsS/IrRCDogLR29sb9WYjC6ZcY0RzlZuYTtGG4oUhPzUrNFEpl6vM1E4qnUrPVVWG9Q6UnlndQGSQcpre3zhdbuFbIypC5eVuDA4MoPp8NXfQDAExiZ2lpdLbNofDYfjFFy2aN+oaJFX0vBU0DERQwU5kZq0P2wHzlHRSpL6hUVKcbOgNjhAg5jCB3XvQhEfNTVJ53bJ1m9RCXpFul4YstqZJ3Vc6OI6N/cK370Po6+uTxtJn7779yMnJMaSyUKBgJSjinW/8ksP0X4XR0VHcud0oDUlKSpZUoBdnDFjUO1rTgHjSzIwxM0BmRFWkzemt0HT5R+PcufM6/gCC+YmmYOBoKAAAAABJRU5ErkJggg==" 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="122"><block s="receiveGo"></block><block s="removeClone"><comment w="289" collapsed="false">This affects only clones, not the original sprite&#xD;Delete the all the clone.</comment></block></script><script x="30" y="226"><block s="receiveGo"><comment w="245" collapsed="false">This script prepare the borad for Tic Tac Toe and initialize everything.</comment></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="505"><block s="receiveInteraction"><l><option>clicked</option></l><comment w="90" collapsed="false">Player gain the contol if they click the box..</comment></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="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">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><comment w="90" collapsed="false">Reocrd all the ways to win.</comment></block></script></block-definition><block-definition s="Status of Triple %&apos;list&apos;" type="reporter" category="variables"><comment x="0" y="0" w="90" collapsed="false">Match one possiblitiy of winning with the current status.</comment><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"><comment x="0" y="0" w="90" collapsed="false">Match all the possiblity of winning with the ciurrent status.</comment><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"><comment x="0" y="0" w="90" collapsed="false">Report true if the input turn win, else report false.</comment><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"><comment x="0" y="0" w="90" collapsed="false">If one turn win, if report their winning statement, if no one win then report tie.</comment><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"><comment w="90" collapsed="false">Make player vs Ai becoe possible.</comment><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><comment w="213" collapsed="false">It chnage the costume to X or O (according to the Turn) that is empty, if is not empty then it wont chnage it.</comment></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><comment w="213" collapsed="false">It chnage the costume to X or O (according to the Turn) that is empty, if is not empty then it wont chnage it.</comment></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><comment w="181.33333333333334" collapsed="true">Wait for old clones to be deleted.</comment></block></script></block-definition><block-definition s="Choose mode" type="command" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Deciding player vs player or player vs ai.</comment><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><comment w="90" collapsed="true">X plays first.</comment></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><comment w="90" collapsed="true">X plays first.</comment></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"><comment x="0" y="0" w="90" collapsed="false">Find the possible solution for the condition.</comment><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"><comment x="0" y="0" w="90" collapsed="false">Identife the location of the x in the board.</comment><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"><comment x="0" y="0" w="90" collapsed="false">identifie the location of O in the board.</comment><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"><comment x="0" y="0" w="90" collapsed="false">Selecte the solution or win that contains &quot;x or O&quot; from the solution or win list.</comment><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"><comment x="0" y="0" w="90" collapsed="false">Ai&apos;s first move, selete the best first step in the condition.</comment><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"><comment x="0" y="0" w="90" collapsed="false">If cant find a winning solution, then spreit will choose a random empty spot for tie.</comment><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"><comment x="0" y="0" w="90" collapsed="false">Let the sprite choose the next step, still need 3 more step to win.</comment><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"><comment x="0" y="0" w="90" collapsed="false">Make sprite choose the next step, only need two more step to go.</comment><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></blocks><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="Board"><list struct="atomic" id="1659">o,X,X,X,X,o,o,o,X</list></variable><variable name="Status of all winning triples"><list id="1660"><item><list struct="atomic" linked="linked" id="1661">o,X,X</list></item><item><list struct="atomic" linked="linked" id="1662">X,X,o</list></item><item><list struct="atomic" linked="linked" id="1663">o,X,o</list></item><item><list struct="atomic" linked="linked" id="1664">X,X,o</list></item><item><list struct="atomic" linked="linked" id="1665">X,X,o</list></item><item><list struct="atomic" linked="linked" id="1666">X,o,X</list></item><item><list struct="atomic" linked="linked" id="1667">o,X,X</list></item><item><list struct="atomic" linked="linked" id="1668">o,o,X</list></item></list></variable><variable name="Lock board"><bool>true</bool></variable><variable name="AI mode"><bool>true</bool></variable><variable name="X or O"><l>X</l></variable></variables></project><media name="U5-Tic-Tac-Toe" app="Snap! 5.4, http://snap.berkeley.edu" version="1"></media></snapdata>