<snapdata remixID="10075504"><project name="tic tac toe" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes>to play you must click the "see code" button and play inside the editor, for some reason the project page player is funky.&#xD;&#xD;created all using pen.&#xD;&#xD;includes kind-of-AI (not that really smart though)!&#xD;&#xD;enjoy, this took four days to make :)</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="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,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</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="Sprite" idx="1" x="-110" y="-20" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="80,80,80,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="30" y="10"><block s="receiveGo"></block><block s="clear"></block><custom-block s="show alert"></custom-block><block s="doWait"><l>3</l></block><custom-block s="set up commands"></custom-block><custom-block s="init board"></custom-block><block s="doWait"><l>1</l></block><block s="doForever"><script><custom-block s="draw board"></custom-block><custom-block s="shadow"></custom-block><block s="doIf"><block s="reportAnd"><block s="reportMouseDown"></block><block s="reportAnd"><custom-block s="mouse on stage?"></custom-block><block s="reportNot"><custom-block s="occupied?"></custom-block></block></block></block><script><custom-block s="mark %n as %s"><custom-block s="block #"></custom-block><l>X</l></custom-block><block s="doResetTimer"></block><block s="doIfElse"><custom-block s="%s won?"><l>X</l></custom-block><script><custom-block s="draw board"></custom-block><custom-block s="show %s won"><l>X</l></custom-block><block s="doStopThis"><l><option>all</option></l></block></script><script><block s="doIfElse"><custom-block s="tie?"></custom-block><script><custom-block s="draw board"></custom-block><block s="doStopThis"><l><option>all</option></l></block></script><script><block s="doUntil"><block s="reportGreaterThan"><block s="getTimer"></block><l>0.99</l></block><script><custom-block s="draw board"></custom-block></script></block><custom-block s="show alert 2"></custom-block><custom-block s="run AI"></custom-block><block s="doIfElse"><custom-block s="%s won?"><l>O</l></custom-block><script><custom-block s="draw board"></custom-block><custom-block s="show %s won"><l>O</l></custom-block><block s="doStopThis"><l><option>all</option></l></block></script><script><block s="doIf"><custom-block s="tie?"></custom-block><script><custom-block s="draw board"></custom-block><block s="doStopThis"><l><option>all</option></l></block></script></block></script></block></script></block></script></block></script></block></script></block></script></scripts></sprite><watcher scope="Sprite" s="xPosition" style="normal" x="10" y="103.000002" color="74,108,212" hidden="true"/><watcher scope="Sprite" s="direction" style="normal" x="10" y="124.00000399999996" color="74,108,212" hidden="true"/><watcher scope="Sprite" s="yPosition" style="normal" x="10" y="145.00000599999993" color="74,108,212" hidden="true"/><watcher var="AI corner" style="normal" x="10" y="166.00000799999998" color="243,118,29" hidden="true"/><watcher var="AI moved during detection?" style="normal" x="10" y="187.00000999999997" color="243,118,29" hidden="true"/><watcher scope="Stage" s="reportMouseX" style="normal" x="10" y="229.00001399999996" color="4,148,220" hidden="true"/><watcher scope="Stage" s="reportMouseY" style="normal" x="10" y="250.0000159999999" color="4,148,220" hidden="true"/><watcher var="random commands done?" style="normal" x="10" y="292.0000199999999" color="243,118,29" hidden="true"/><watcher var="norepeat random already picked" style="normal" x="10" y="316.00002199999994" color="243,118,29" hidden="true"/><watcher var="aiattemptcmds" style="normal" x="27" y="34.000017999999955" color="243,118,29" hidden="true"/><watcher var="performing trick move?" style="normal" x="10" y="335.9999979999999" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="10" y="-13" color="243,118,29" hidden="true"/><watcher var="aiwincmds" style="normal" x="11.999999999999886" y="7.000023999999939" color="243,118,29" hidden="true"/><watcher var="AI prev moves" style="normal" x="10" y="188.000002" color="243,118,29" hidden="true"/><watcher var="test AI win bool" style="normal" x="10" y="253.00000599999993" color="243,118,29" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="init board" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>board</l><block s="reportNewList"><list><l></l><l></l><l></l><l></l><l></l><l></l><l></l><l></l><l></l></list></block></block><block s="doSetVar"><l>performing trick move?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="draw board"></custom-block></script></block-definition><block-definition s="draw board" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="setColor"><color>80,80,80,1</color></block><block s="clear"></block><block s="setSize"><l>7</l></block><block s="up"></block><block s="gotoXY"><l>-50</l><l>100</l></block><block s="down"></block><block s="setYPosition"><l>-100</l></block><block s="up"></block><block s="gotoXY"><l>50</l><l>100</l></block><block s="down"></block><block s="setYPosition"><l>-100</l></block><block s="up"></block><block s="gotoXY"><l>-120</l><l>40</l></block><block s="down"></block><block s="setXPosition"><l>120</l></block><block s="up"></block><block s="gotoXY"><l>-120</l><l>-40</l></block><block s="down"></block><block s="setXPosition"><l>120</l></block><block s="up"></block><block s="doFor"><l>i</l><l>1</l><l>9</l><script><block s="doWarp"><script><custom-block s="draw %s at x: %n y: %n size: %n"><block s="reportListItem"><block var="i"/><block var="board"/></block><block s="reportSum"><l>-90</l><block s="reportProduct"><block s="reportListItem"><block var="i"/><block s="reportNewList"><list><l>0</l><l>1</l><l>2</l><l>0</l><l>1</l><l>2</l><l>0</l><l>1</l><l>2</l></list></block></block><l>90</l></block></block><block s="reportDifference"><l>90</l><block s="reportProduct"><block s="reportListItem"><block var="i"/><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>1</l><l>1</l><l>1</l><l>2</l><l>2</l><l>2</l></list></block></block><l>90</l></block></block><l>20</l></custom-block></script></block></script></block></script></block></script></block-definition><block-definition s="draw %&apos;symb&apos; at x: %&apos;x&apos; y: %&apos;y&apos; size: %&apos;size&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%n">0</input><input type="%n">0</input><input type="%n">20</input></inputs><script><block s="doWarp"><script><block s="doIfElse"><block s="reportEquals"><block var="symb"/><l>X</l></block><script><block s="up"></block><block s="gotoXY"><block s="reportDifference"><block var="x"/><block var="size"/></block><block s="reportSum"><block var="y"/><block var="size"/></block></block><block s="down"></block><block s="gotoXY"><block s="reportSum"><block var="x"/><block var="size"/></block><block s="reportDifference"><block var="y"/><block var="size"/></block></block><block s="up"></block><block s="gotoXY"><block s="reportSum"><block var="x"/><block var="size"/></block><block s="reportSum"><block var="y"/><block var="size"/></block></block><block s="down"></block><block s="gotoXY"><block s="reportDifference"><block var="x"/><block var="size"/></block><block s="reportDifference"><block var="y"/><block var="size"/></block></block><block s="up"></block></script><script><block s="doIf"><block s="reportEquals"><block var="symb"/><l>O</l></block><script><block s="up"></block><block s="gotoXY"><block s="reportDifference"><block var="x"/><block s="reportProduct"><block s="reportQuotient"><block var="size"/><l>5</l></block><l>1</l></block></block><block s="reportSum"><block var="y"/><l>20</l></block></block><block s="down"></block><block s="doWarp"><script><block s="doRepeat"><l>360</l><script><block s="turn"><l>1</l></block><block s="forward"><block s="reportQuotient"><block s="reportQuotient"><block var="size"/><l>5</l></block><l>10</l></block></block></script></block></script></block><block s="up"></block></script></block></script></block></script></block></script></block-definition><block-definition s="shadow" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="reportAnd"><block s="reportGreaterThan"><block s="reportMouseX"></block><l>-91</l></block><block s="reportAnd"><block s="reportLessThan"><block s="reportMouseX"></block><l>91</l></block><block s="reportAnd"><block s="reportLessThan"><block s="reportMouseY"></block><l>91</l></block><block s="reportGreaterThan"><block s="reportMouseY"></block><l>-91</l></block></block></block></block><script><block s="doIfElse"><custom-block s="occupied?"></custom-block><script><block s="setColor"><color>250,20,0,1</color></block></script><script><block s="setColor"><color>197,197,197,1</color></block></script></block><custom-block s="draw %s at x: %n y: %n size: %n"><l>X</l><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="reportMouseX"></block><l>90</l></block></block><l>90</l></block><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="reportMouseY"></block><l>90</l></block></block><l>90</l></block><l>20</l></custom-block></script></block></script></block-definition><block-definition s="clone" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="snap to grid" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="reportAnd"><block s="reportGreaterThan"><block s="xPosition"></block><l>-120</l></block><block s="reportAnd"><block s="reportLessThan"><block s="xPosition"></block><l>120</l></block><block s="reportAnd"><block s="reportLessThan"><block s="yPosition"></block><l>120</l></block><block s="reportGreaterThan"><block s="yPosition"></block><l>-120</l></block></block></block></block><script><block s="gotoXY"><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="xPosition"></block><l>90</l></block></block><l>90</l></block><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="yPosition"></block><l>90</l></block></block><l>90</l></block></block></script></block></script></block-definition><block-definition s="block #" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>x</l><l>y</l><l>return</l></list></block><block s="doSetVar"><l>x</l><block s="xPosition"></block></block><block s="doSetVar"><l>y</l><block s="yPosition"></block></block><custom-block s="snap to grid"></custom-block><block s="doSetVar"><l>return</l><block s="reportSum"><block s="reportListIndex"><block s="xPosition"></block><block s="reportNewList"><list><l>-90</l><l>0</l><l>90</l></list></block></block><block s="reportDifference"><block s="reportProduct"><block s="reportListIndex"><block s="yPosition"></block><block s="reportNewList"><list><l>90</l><l>0</l><l>-90</l></list></block></block><l>3</l></block><l>3</l></block></block></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="doReport"><block var="return"/></block></script></block-definition><block-definition s="mark %&apos;block&apos; as %&apos;x or y&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%s">X</input></inputs><script><block s="doReplaceInList"><block var="block"/><block var="board"/><block var="x or y"/></block></script></block-definition><block-definition s="occupied?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doGotoObject"><l><option>mouse-pointer</option></l></block><block s="doReport"><block s="reportIfElse"><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><custom-block s="block #"></custom-block><block var="board"/></block><l></l></block></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></script></block-definition><block-definition s="%&apos;who&apos; won?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportOr"><custom-block s="col. 1 occupied with %s ?"><block var="who"/></custom-block><block s="reportOr"><custom-block s="col. 2 occupied with %s ?"><block var="who"/></custom-block><block s="reportOr"><custom-block s="col. 3 occupied with %s ?"><block var="who"/></custom-block><block s="reportOr"><custom-block s="row 1 occupied with %s ?"><block var="who"/></custom-block><block s="reportOr"><custom-block s="row 2 occupied with %s ?"><block var="who"/></custom-block><block s="reportOr"><custom-block s="row 3 occupied with %s ?"><block var="who"/></custom-block><block s="reportOr"><custom-block s="diag 1 occupied with %s ?"><block var="who"/></custom-block><custom-block s="diag 2 occupied with %s ?"><block var="who"/></custom-block></block></block></block></block></block></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="%&apos;block&apos; occupied with %&apos;symb&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">5</input><input type="%s">X</input></inputs><script><block s="doIfElse"><block s="reportEquals"><block s="reportListItem"><block var="block"/><block var="board"/></block><block var="symb"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="col. 1 occupied with %&apos;who&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>1</l><block var="who"/></custom-block><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>4</l><block var="who"/></custom-block><custom-block s="%n occupied with %s ?"><l>7</l><block var="who"/></custom-block></block></block></block></script></block-definition><block-definition s="col. 2 occupied with %&apos;who&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>2</l><block var="who"/></custom-block><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>5</l><block var="who"/></custom-block><custom-block s="%n occupied with %s ?"><l>8</l><block var="who"/></custom-block></block></block></block></script></block-definition><block-definition s="col. 3 occupied with %&apos;who&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>3</l><block var="who"/></custom-block><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>6</l><block var="who"/></custom-block><custom-block s="%n occupied with %s ?"><l>9</l><block var="who"/></custom-block></block></block></block></script></block-definition><block-definition s="row 1 occupied with %&apos;who&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>1</l><block var="who"/></custom-block><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>2</l><block var="who"/></custom-block><custom-block s="%n occupied with %s ?"><l>3</l><block var="who"/></custom-block></block></block></block></script></block-definition><block-definition s="row 2 occupied with %&apos;who&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>4</l><block var="who"/></custom-block><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>5</l><block var="who"/></custom-block><custom-block s="%n occupied with %s ?"><l>6</l><block var="who"/></custom-block></block></block></block></script></block-definition><block-definition s="row 3 occupied with %&apos;who&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>7</l><block var="who"/></custom-block><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>8</l><block var="who"/></custom-block><custom-block s="%n occupied with %s ?"><l>9</l><block var="who"/></custom-block></block></block></block></script></block-definition><block-definition s="diag 1 occupied with %&apos;who&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>1</l><block var="who"/></custom-block><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>5</l><block var="who"/></custom-block><custom-block s="%n occupied with %s ?"><l>9</l><block var="who"/></custom-block></block></block></block></script></block-definition><block-definition s="diag 2 occupied with %&apos;who&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>3</l><block var="who"/></custom-block><block s="reportAnd"><custom-block s="%n occupied with %s ?"><l>5</l><block var="who"/></custom-block><custom-block s="%n occupied with %s ?"><l>7</l><block var="who"/></custom-block></block></block></block></script></block-definition><block-definition s="run AI" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>AI prev moves</l><custom-block s="occupied %s blocks"><l>O</l></custom-block></block><block s="doIfElse"><block s="reportEquals"><custom-block s="occupied %s blocks"><l>O</l></custom-block><l>0</l></block><script><block s="doSetVar"><l>AI corner</l><block s="reportRandom"><l>1</l><l>4</l></block></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="AI corner"/><block s="reportNewList"><list><l>1</l><l>3</l><l>7</l><l>9</l></list></block></block></custom-block></block><script><block s="doSetVar"><l>AI corner</l><block s="reportRandom"><l>1</l><l>4</l></block></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="AI corner"/><block s="reportNewList"><list><l>1</l><l>3</l><l>7</l><l>9</l></list></block></block><l>O</l></custom-block></script><script><custom-block s="attempt to win"></custom-block><block s="doIf"><block s="reportNot"><block var="AI moved during detection?"/></block><script><custom-block s="detect if user is attempting to win"></custom-block><block s="doIf"><block s="reportNot"><block var="AI moved during detection?"/></block><script><block s="doIfElse"><block s="reportEquals"><custom-block s="occupied %s blocks"><l>O</l></custom-block><l>1</l></block><script><block s="doSetVar"><l>performing trick move?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="attempt trick move 1"></custom-block></script><script><block s="doIfElse"><block var="performing trick move?"/><script><custom-block s="attempt trick move 2"></custom-block></script><script><custom-block s="make random move"></custom-block></script></block></script></block></script></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="AI prev moves"/><custom-block s="occupied %s blocks"><l>O</l></custom-block></block><script><custom-block s="make random move"></custom-block></script></block></script></block-definition><block-definition s="%&apos;block&apos; occupied?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">5</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><block var="block"/><block var="board"/></block><l></l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="occupied blocks" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied?"><l>1</l></custom-block><block s="reportSum"><custom-block s="%n occupied?"><l>2</l></custom-block><block s="reportSum"><custom-block s="%n occupied?"><l>3</l></custom-block><block s="reportSum"><custom-block s="%n occupied?"><l>4</l></custom-block><block s="reportSum"><custom-block s="%n occupied?"><l>5</l></custom-block><block s="reportSum"><custom-block s="%n occupied?"><l>6</l></custom-block><block s="reportSum"><custom-block s="%n occupied?"><l>7</l></custom-block><block s="reportSum"><custom-block s="%n occupied?"><l>8</l></custom-block><custom-block s="%n occupied?"><l>9</l></custom-block></block></block></block></block></block></block></block></block></block></script></block-definition><block-definition s="table NN %&apos;n&apos; %&apos;n2&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportSum"><block s="reportDifference"><block s="reportProduct"><block var="n"/><l>3</l></block><l>3</l></block><block var="n2"/></block></block></script></block-definition><block-definition s="occupied %&apos;symb&apos; blocks" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>1</l><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>2</l><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>3</l><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>4</l><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>5</l><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>6</l><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>7</l><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>8</l><block var="symb"/></custom-block><custom-block s="%n occupied with %s ?"><l>9</l><block var="symb"/></custom-block></block></block></block></block></block></block></block></block></block></script></block-definition><block-definition s="detect if user is attempting to win" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>norepeat random already picked</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><l>1</l></block><block s="doUntil"><block s="reportOr"><block var="random commands done?"/><block s="reportGreaterThan"><block var="a"/><l>9</l></block></block><script><custom-block s="run random command"></custom-block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block></script><scripts><script x="212" y="1049.5333333333333"><block s="doSetVar"><l></l><l>0</l></block></script></scripts></block-definition><block-definition s="attempt trick move 1" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportLessThan"><block var="AI corner"/><l>3</l></block><script><block s="doIfElse"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportSum"><block var="AI corner"/><l>6</l></block></custom-block></block><script><custom-block s="mark %n as %s"><block s="reportSum"><block var="AI corner"/><l>6</l></block><l>O</l></custom-block></script><script><block s="doSetVar"><l>performing trick move?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="detect if user is attempting to win"></custom-block></script></block></script><script><block s="doIfElse"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportDifference"><block var="AI corner"/><l>6</l></block></custom-block></block><script><custom-block s="mark %n as %s"><block s="reportDifference"><block var="AI corner"/><l>6</l></block><l>O</l></custom-block></script><script><block s="doSetVar"><l>performing trick move?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="detect if user is attempting to win"></custom-block><block s="doIfElse"><block var="AI moved during detection?"/><script></script><script><custom-block s="make random move"></custom-block></script></block></script></block></script></block></script></block-definition><block-definition s="make random move" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>block</l></list></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>block</l><l>0</l></block><block s="doWarp"><script><block s="doUntil"><block s="reportEquals"><block s="reportListItem"><block var="block"/><block var="board"/></block><l></l></block><script><block s="doSetVar"><l>block</l><block s="reportRandom"><l>1</l><l>9</l></block></block></script></block></script></block><custom-block s="mark %n as %s"><block var="block"/><l>O</l></custom-block></script></block-definition><block-definition s="attempt trick move 2" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>performing trick move?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doIfElse"><custom-block s="%n is odd?"><block var="AI corner"/></custom-block><script><block s="doIfElse"><custom-block s="%n occupied?"><block s="reportSum"><block var="AI corner"/><l>2</l></block></custom-block><script><custom-block s="mark %n as %s"><block s="reportSum"><block var="AI corner"/><l>2</l></block><l>O</l></custom-block></script><script><custom-block s="make random move"></custom-block></script></block></script><script><block s="doIfElse"><custom-block s="%n occupied?"><block s="reportDifference"><block var="AI corner"/><l>2</l></block></custom-block><script><custom-block s="mark %n as %s"><block s="reportDifference"><block var="AI corner"/><l>2</l></block><l>O</l></custom-block></script><script><custom-block s="make random move"></custom-block></script></block></script></block></script></block-definition><block-definition s="how many are occupied in col %&apos;col&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied?"><block s="reportSum"><block var="col"/><l>0</l></block></custom-block><block s="reportSum"><custom-block s="%n occupied?"><block s="reportSum"><block var="col"/><l>3</l></block></custom-block><custom-block s="%n occupied?"><block s="reportSum"><block var="col"/><l>6</l></block></custom-block></block></block></block></script></block-definition><block-definition s="how many are occupied in row %&apos;row&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied?"><block s="reportSum"><block s="reportDifference"><block s="reportProduct"><block var="row"/><l>3</l></block><l>3</l></block><l>1</l></block></custom-block><block s="reportSum"><custom-block s="%n occupied?"><block s="reportSum"><block s="reportDifference"><block s="reportProduct"><block var="row"/><l>3</l></block><l>3</l></block><l>2</l></block></custom-block><custom-block s="%n occupied?"><block s="reportSum"><block s="reportDifference"><block s="reportProduct"><block var="row"/><l>3</l></block><l>3</l></block><l>3</l></block></custom-block></block></block></block></script><scripts><script x="73.9951171875" y="178.50000000000006"><block var="row"/></script></scripts></block-definition><block-definition s="how many are occupied in diag 1" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied?"><l>1</l></custom-block><block s="reportSum"><custom-block s="%n occupied?"><l>5</l></custom-block><custom-block s="%n occupied?"><l>9</l></custom-block></block></block></block></script><scripts><script x="73.9951171875" y="178.50000000000006"><block var="row"/></script></scripts></block-definition><block-definition s="how many are occupied in diag 2" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied?"><l>3</l></custom-block><block s="reportSum"><custom-block s="%n occupied?"><l>5</l></custom-block><custom-block s="%n occupied?"><l>7</l></custom-block></block></block></block></script><scripts><script x="73.9951171875" y="178.50000000000006"><block var="row"/></script></scripts></block-definition><block-definition s="go to block %&apos;block#&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="gotoXY"><block s="reportSum"><l>-90</l><block s="reportProduct"><block s="reportListItem"><block var="block#"/><block s="reportNewList"><list><l>0</l><l>1</l><l>2</l><l>0</l><l>1</l><l>2</l><l>0</l><l>1</l><l>2</l></list></block></block><l>90</l></block></block><block s="reportDifference"><l>90</l><block s="reportProduct"><block s="reportListItem"><block var="block#"/><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>1</l><l>1</l><l>1</l><l>2</l><l>2</l><l>2</l></list></block></block><l>90</l></block></block></block></script></block-definition><block-definition s="tie?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportEquals"><custom-block s="occupied %s blocks"><l></l></custom-block><l>0</l></block></block></script></block-definition><block-definition s="show %&apos;symb&apos; won" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><custom-block s="col. 1 occupied with %s ?"><block var="symb"/></custom-block><script><block s="up"></block><custom-block s="go to block %n"><l>1</l></custom-block><block s="down"></block><custom-block s="go to block %n"><l>7</l></custom-block><block s="up"></block></script><script><block s="doIfElse"><custom-block s="col. 2 occupied with %s ?"><block var="symb"/></custom-block><script><block s="up"></block><custom-block s="go to block %n"><l>2</l></custom-block><block s="down"></block><custom-block s="go to block %n"><l>8</l></custom-block><block s="up"></block></script><script><block s="doIfElse"><custom-block s="col. 3 occupied with %s ?"><block var="symb"/></custom-block><script><block s="up"></block><custom-block s="go to block %n"><l>3</l></custom-block><block s="down"></block><custom-block s="go to block %n"><l>9</l></custom-block><block s="up"></block></script><script><block s="doIfElse"><custom-block s="row 1 occupied with %s ?"><block var="symb"/></custom-block><script><block s="up"></block><custom-block s="go to block %n"><l>1</l></custom-block><block s="down"></block><custom-block s="go to block %n"><l>3</l></custom-block><block s="up"></block></script><script><block s="doIfElse"><custom-block s="row 2 occupied with %s ?"><block var="symb"/></custom-block><script><block s="up"></block><custom-block s="go to block %n"><l>4</l></custom-block><block s="down"></block><custom-block s="go to block %n"><l>6</l></custom-block><block s="up"></block></script><script><block s="doIfElse"><custom-block s="row 3 occupied with %s ?"><block var="symb"/></custom-block><script><block s="up"></block><custom-block s="go to block %n"><l>7</l></custom-block><block s="down"></block><custom-block s="go to block %n"><l>9</l></custom-block><block s="up"></block></script><script><block s="doIfElse"><custom-block s="diag 1 occupied with %s ?"><block var="symb"/></custom-block><script><block s="up"></block><custom-block s="go to block %n"><l>1</l></custom-block><block s="down"></block><custom-block s="go to block %n"><l>9</l></custom-block><block s="up"></block></script><script><block s="doIf"><custom-block s="diag 2 occupied with %s ?"><block var="symb"/></custom-block><script><block s="up"></block><custom-block s="go to block %n"><l>3</l></custom-block><block s="down"></block><custom-block s="go to block %n"><l>7</l></custom-block><block s="up"></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block-definition><block-definition s="show alert" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="gotoXY"><l>-120</l><l>0</l></block><block s="write"><l>see inside to play!</l><l>30</l></block></script></block-definition><block-definition s="%&apos;number&apos; is odd?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block s="reportModulus"><block var="number"/><l>2</l></block><l>1</l></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></script></block-definition><block-definition s="set up commands" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>aiwincmds</l><block s="reportNewList"><list><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n by %s"><l>1</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n by %s"><l>2</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n by %s"><l>3</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n with %s"><l>1</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n with %s"><l>2</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n with %s"><l>3</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in diag 1 with %s"><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in diag 2 with %s"><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block></list></block></block><block s="doSetVar"><l>aiattemptcmds</l><block s="reportNewList"><list><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n"><l>1</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n"><l>2</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n"><l>3</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n"><l>1</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n"><l>2</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n"><l>3</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in diag 1"></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in diag 2"></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><list></list></block></list></block></block></script></block-definition><block-definition s="detect if user is attempting to win backup" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportEquals"><custom-block s="how many are occupied in col %n"><l>1</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><custom-block s="how many are occupied in col %n"><l>2</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><custom-block s="how many are occupied in col %n"><l>3</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><custom-block s="how many are occupied in row %n"><l>1</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><custom-block s="how many are occupied in row %n"><l>2</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><custom-block s="how many are occupied in row %n"><l>3</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><custom-block s="how many are occupied in diag 1"></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><custom-block s="how many are occupied in diag 2"></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block-definition><block-definition s="run random command" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportListItem"><custom-block s="norepeat random"></custom-block><block var="aiattemptcmds"/></block><list></list></block></script></block-definition><block-definition s="norepeat random" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reifyReporter"><script><block s="doDeclareVariables"><list><l>random</l></list></block><block s="doSetVar"><l>random</l><block s="reportRandom"><l>1</l><l>9</l></block></block><block s="doUntil"><block s="reportNot"><block s="reportListContainsItem"><block var="norepeat random already picked"/><block var="random"/></block></block><script><block s="doSetVar"><l>random</l><block s="reportRandom"><l>1</l><l>9</l></block></block></script></block><block s="doAddToList"><block var="random"/><block var="norepeat random already picked"/></block><block s="doReport"><block var="random"/></block></script><list></list></block><list></list></block></block></script></block-definition><block-definition s="show alert 2" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="gotoXY"><l>-200</l><l>-150</l></block><block s="write"><l>AI is thinking...</l><l>12</l></block></script></block-definition><block-definition s="attempt to win" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>norepeat random already picked</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><l>1</l></block><block s="doUntil"><block s="reportOr"><block var="random commands done?"/><block s="reportGreaterThan"><block var="a"/><l>9</l></block></block><script><custom-block s="run random command"></custom-block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block><block s="doIf"><custom-block s="%s won?"><l>O</l></custom-block><script><custom-block s="draw board"></custom-block><custom-block s="show %s won"><l>O</l></custom-block><block s="doSetVar"><l>test AI win bool</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doStopThis"><l><option>this block</option></l></block></script></block></script></block-definition><block-definition s="how many are occupied in col %&apos;col&apos; by %&apos;symb&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied with %s ?"><block s="reportSum"><block var="col"/><l>0</l></block><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><block s="reportSum"><block var="col"/><l>3</l></block><block var="symb"/></custom-block><custom-block s="%n occupied with %s ?"><block s="reportSum"><block var="col"/><l>6</l></block><block var="symb"/></custom-block></block></block></block></script></block-definition><block-definition s="how many are occupied in row %&apos;row&apos; with %&apos;symb&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied with %s ?"><block s="reportSum"><block s="reportDifference"><block s="reportProduct"><block var="row"/><l>3</l></block><l>3</l></block><l>1</l></block><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><block s="reportSum"><block s="reportDifference"><block s="reportProduct"><block var="row"/><l>3</l></block><l>3</l></block><l>2</l></block><block var="symb"/></custom-block><custom-block s="%n occupied with %s ?"><block s="reportSum"><block s="reportDifference"><block s="reportProduct"><block var="row"/><l>3</l></block><l>3</l></block><l>3</l></block><block var="symb"/></custom-block></block></block></block></script></block-definition><block-definition s="how many are occupied in diag 1 with %&apos;symb&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>1</l><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>5</l><block var="symb"/></custom-block><custom-block s="%n occupied with %s ?"><l>9</l><block var="symb"/></custom-block></block></block></block></script></block-definition><block-definition s="how many are occupied in diag 2 with %&apos;symb&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>3</l><block var="symb"/></custom-block><block s="reportSum"><custom-block s="%n occupied with %s ?"><l>5</l><block var="symb"/></custom-block><custom-block s="%n occupied with %s ?"><l>7</l><block var="symb"/></custom-block></block></block></block></script></block-definition><block-definition s="mouse on stage?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportAnd"><block s="reportGreaterThan"><block s="reportMouseX"></block><l>-240</l></block><block s="reportAnd"><block s="reportLessThan"><block s="reportMouseX"></block><l>240</l></block><block s="reportAnd"><block s="reportGreaterThan"><block s="reportMouseY"></block><l>-180</l></block><block s="reportLessThan"><block s="reportMouseY"></block><l>180</l></block></block></block></block></block></script></block-definition><block-definition s="test AI" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Tests the AI used for the computer by creating a game with a RNG versus the AI.</comment><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="init board"></custom-block><custom-block s="set up commands"></custom-block><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>test AI win bool</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doUntil"><block var="test AI win bool"/><script><custom-block s="draw board"></custom-block><block s="doSetVar"><l>a</l><block s="reportRandom"><l>1</l><l>10</l></block></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block var="a"/></custom-block></block><script><block s="doSetVar"><l>a</l><block s="reportRandom"><l>1</l><l>10</l></block></block></script></block><custom-block s="mark %n as %s"><block var="a"/><l>X</l></custom-block><block s="doIfElse"><custom-block s="%s won?"><l>X</l></custom-block><script><custom-block s="draw board"></custom-block><custom-block s="show %s won"><l>X</l></custom-block><block s="doSetVar"><l>test AI win bool</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><custom-block s="tie?"></custom-block><script><custom-block s="draw board"></custom-block><block s="doSetVar"><l>test AI win bool</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><custom-block s="run AI"></custom-block><block s="doIfElse"><custom-block s="%s won?"><l>O</l></custom-block><script><custom-block s="draw board"></custom-block><custom-block s="show %s won"><l>O</l></custom-block><block s="doSetVar"><l>test AI win bool</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIf"><custom-block s="tie?"></custom-block><script><custom-block s="draw board"></custom-block><block s="doSetVar"><l>test AI win bool</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block></script></block></script></block></script></block></script></block-definition><block-definition s="split" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportTextSplit"><block s="reportListItem"><l><option>last</option></l><block var="csvdoc"/></block><l>,</l></block></block></script></block-definition></blocks><variables><variable name="board"><list struct="atomic" id="3363">O,X,O,X,,,,,</list></variable><variable name="AI corner"><l>1</l></variable><variable name="performing trick move?"><bool>false</bool></variable><variable name="AI moved during detection?"><bool>true</bool></variable><variable name="aiattemptcmds"><list id="3364"><item><context id="3365"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n"><l>1</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><context id="3426"><inputs></inputs><variables></variables><receiver><ref id="8"></ref></receiver><origin></origin></context></context></item><item><context id="3428"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n"><l>2</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="3489"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n"><l>3</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="3550"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n"><l>1</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="3611"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n"><l>2</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="3672"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n"><l>3</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="3733"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in diag 1"></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="3793"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in diag 2"></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item></list></variable><variable name="random commands done?"><bool>true</bool></variable><variable name="norepeat random already picked"><list struct="atomic" id="3853">4</list></variable><variable name="aiwincmds"><list id="3854"><item><context id="3855"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n by %s"><l>1</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="3917"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n by %s"><l>2</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="3979"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in col %n by %s"><l>3</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="4041"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n with %s"><l>1</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="4103"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n with %s"><l>2</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="4165"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in row %n with %s"><l>3</l><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="4227"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in diag 1 with %s"><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item><item><context id="4288"><inputs></inputs><variables></variables><script><block s="doIf"><block s="reportEquals"><custom-block s="how many are occupied in diag 2 with %s"><l>O</l></custom-block><l>2</l></block><script><block s="doDeclareVariables"><list><l>i2</l></list></block><block s="doSetVar"><l>i2</l><l>1</l></block><block s="doUntil"><block s="reportNot"><custom-block s="%n occupied?"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></block></custom-block></block><script><block s="doChangeVar"><l>i2</l><l>1</l></block></script></block><custom-block s="mark %n as %s"><block s="reportListItem"><block var="i2"/><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></block><l>O</l></custom-block><block s="doSetVar"><l>random commands done?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>AI moved during detection?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="3426"></ref></context></item></list></variable><variable name="AI prev moves"><l>1</l></variable><variable name="test AI win bool"><bool>true</bool></variable></variables></project><media name="tic tac toe" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>