<snapdata remixID="15044722"><project name="U5L6TicTacToe" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="U5L6TicTacToe"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><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="reportVariadicGreaterThan"><list><block var="start"/><block var="end"/></list></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></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="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></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"><block s="errorObsolete"></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></list></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></list></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><list></list></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="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="makeBoard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><block s="show"></block><block s="setEffect"><l><option>ghost</option></l><l>30</l><comment w="78" collapsed="true">3.3.3 TIF B</comment></block><block s="setScale"><l>95</l><comment w="190" collapsed="true">Oops costumes are a bit too big.</comment></block><block s="doSetVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>j</l><l>1</l><l>3</l><script><block s="gotoXY"><block s="reportVariadicSum"><list><l>-100</l><block s="reportVariadicProduct"><list><l>50</l><block var="j"/></list></block></list></block><block s="reportDifference"><l>100</l><block s="reportVariadicProduct"><list><l>50</l><block var="i"/></list></block></block></block><block s="createClone"><l><option>myself</option></l></block><block s="doChangeVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block></script></custom-block></script></custom-block><block s="hide"></block></script></block-definition><block-definition s="possible winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>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>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</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>3</l><l>5</l><l>7</l></list></block></list></block></block></script></block-definition><block-definition s="status of triple %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><block var="list"/></block></block></script></block-definition><block-definition s="status of all winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possible winning triples"></custom-block></block></block></script></block-definition><block-definition s="won? %&apos;who&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="status of winning triples"></custom-block><block s="reportNewList"><list><block var="who"/><block var="who"/><block var="who"/></list></block></block></block></script></block-definition><block-definition s="tied?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block><l></l></list></block></block></script></block-definition><block-definition s="draw win line" type="command" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>i</l><l>1</l><l>8</l><script><block s="doDeclareVariables"><list><l>line</l></list></block><block s="doIf"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="i"/><custom-block s="status of winning triples"></custom-block></block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="i"/><custom-block s="status of winning triples"></custom-block></block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></list></block></list></block><script><block s="doSetVar"><l>line</l><block s="reportListItem"><block var="i"/><block var="win lines"/></block></block><block s="up"></block><block s="doGotoObject"><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="down"></block><block s="doGotoObject"><block s="reportListItem"><l>2</l><block var="line"/></block></block><block s="up"></block></script><list></list></block></script></block></script></block-definition><block-definition s="move in this square" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block><block s="doIfElse"><custom-block s="won? %s"><l>X</l></custom-block><script><block s="bubble"><l>X won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doBroadcast"><custom-block s="next move for computer"></custom-block><list></list></block></script></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="doIf"><custom-block s="won? %s"><l>O</l></custom-block><script><block s="bubble"><l>O won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="playing"/><custom-block s="tied?"></custom-block></list></block><script><block s="bubble"><l>It&apos;s a tie</l></block><block s="goToLayer"><l><option>front</option></l></block></script><list></list></block><block s="doDeclareVariables"><list><l>available squares</l></list></block><block s="doSetVar"><l>available squares</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="playing"/><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="available squares"/></block><l>1</l></list></block></list></block><script><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="available squares"/></block><block var="board"/><l>X</l></block><block s="doIf"><block s="reportNot"><custom-block s="won? %s"><l>X</l></custom-block></block><script><block s="bubble"><l>It&apos;s a tie</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script><list></list></block></script></block-definition><block-definition s="How many in %&apos;letter&apos; list %&apos;list&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><l/><block var="letter"/></block></autolambda><list></list></block><block var="list"/></block></block></block></script></block-definition><block-definition s="opponent %&apos;who&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="who"/><l>X</l></list></block><l>O</l><l>X</l></block></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="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block var="board"/><l></l></block></autolambda><list></list></block><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></block></script></block-definition><block-definition s="Can player %&apos;who&apos; win now" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doReport"><block s="reportIsA"><custom-block s="Winning square of player %s"><block var="who"/></custom-block><l><option>number</option></l></block></block></script></block-definition><block-definition s="Winning square of player %&apos;who&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>triple</l></list></block><block s="doSetVar"><l>triple</l><custom-block s="winning triple for player %s"><block var="who"/></custom-block></block><block s="doIf"><block s="reportIsA"><block var="triple"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><custom-block s="winning triple for player %s"><block var="who"/></custom-block></block></block></script><list></list></block><block s="doReport"><l></l></block></script><scripts><script x="270.52832031250045" y="236.33333333333331"><block var="triple"/></script><script x="221.69921875000023" y="174.33333333333331"><custom-block s="winning triple for player %s"><l></l></custom-block></script></scripts></block-definition><block-definition s="winning triple for player %&apos;who&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><custom-block s="how many %s in %l"><custom-block s="opponent %s"><block var="who"/></custom-block><l/></custom-block><l>0</l></list></block><block s="reportVariadicEquals"><list><custom-block s="how many %s in %l"><block var="who"/><l/></custom-block><l>2</l></list></block></list></block></autolambda><list></list></block><custom-block s="status of all winning triples"><comment w="90" collapsed="true">3.3.2.7 inside</comment></custom-block></block></block></script></block-definition><block-definition s="how many %&apos;symbol&apos; in %&apos;triple&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><l></l><block var="symbol"/></list></block></autolambda><list></list></block><block var="triple"/></block></block></block></script></block-definition><block-definition s="next move for computer" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><custom-block s="Can player %s win now"><l>O</l></custom-block><script><block s="doReport"><custom-block s="Winning square of player %s"><l>O</l></custom-block></block></script><list></list></block><block s="doIf"><custom-block s="Can player %s win now"><l>X</l></custom-block><script><block s="doReport"><custom-block s="Winning square of player %s"><l>X</l></custom-block></block></script><list></list></block><block s="doReport"><custom-block s="Best Empty Square"></custom-block></block></script></block-definition><block-definition s="status of winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possible winning triples"></custom-block></block></block></script></block-definition><block-definition s="best empty square" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block var="board"/><l></l></block></autolambda><list></list></block><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></block></script></block-definition></blocks><primitives></primitives><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" hyperops="true" codify="false" inheritance="false" sublistIDs="false" id="812"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="813"></list></costumes><sounds><list struct="atomic" id="814"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="50" y="-50" heading="90" scale="0.95" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="819"><costumes><list id="820"><item><ref mediaID="U5L6TicTacToe_Square_cst_Empty"></ref></item><item><ref mediaID="U5L6TicTacToe_Square_cst_X"></ref></item><item><ref mediaID="U5L6TicTacToe_Square_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="821"></list></sounds><blocks></blocks><variables><variable name="position number"><l>10</l></variable></variables><scripts><script x="18.666665666666688" y="10.000000000000028"><block s="receiveGo"></block><block s="clear"></block><custom-block s="makeBoard"><comment w="190.66666666666663" collapsed="true">3.3.1.4, and 3.3.3.TIF B, inside</comment></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>board</l><block s="reportNumbers"><l>1</l><l>9</l><comment w="53.333333333333336" collapsed="true">3.3.1.2</comment></block></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>true</bool></l><comment w="130.66666666666666" collapsed="true">3.3.3.5, more below.</comment></block></block></script><script x="17.333332333333345" y="364.66666666666697"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="playing"/><block s="reportVariadicEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block></list><comment w="121.33333333333333" collapsed="true">3.3.3.5, more below.</comment></block><script><custom-block s="move in this square"></custom-block></script><list></list></block></script><script x="13.999999000000003" y="1648.3333333333367"><block s="doSetVar"><l>win lines</l><block s="reportNewList"><list><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>50</l></list></block><block s="reportNewList"><list><l>100</l><l>50</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>0</l></list></block><block s="reportNewList"><list><l>100</l><l>0</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>-50</l></list></block><block s="reportNewList"><list><l>100</l><l>-50</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-50</l><l>100</l></list></block><block s="reportNewList"><list><l>-50</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>100</l></list></block><block s="reportNewList"><list><l>0</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>50</l><l>100</l></list></block><block s="reportNewList"><list><l>50</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>100</l></list></block><block s="reportNewList"><list><l>100</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>-100</l></list></block><block s="reportNewList"><list><l>100</l><l>100</l></list></block></list></block></list></block></block></script><comment x="15.666666666666686" y="1846.3333333333367" w="363.3333333333333" collapsed="true">TIF B:  First of all, we don&apos;t want Square, the sprite with nine clones to show the board, to move around.  So I added another sprite, named Sprite.  It&apos;s hidden, but can draw lines with its thick red pen.  (Click on Sprite at the right to see its code.)  The actual work is done in procedure DRAW WIN LINE.  But instead of running DRAW WIN LINE in the Square sprite (this one), we TELL Sprite TO do it. </comment><script x="20" y="1945.6666666666697"><custom-block s="draw win line"><comment w="90" collapsed="true">TIF B inside.</comment></custom-block></script><script x="19.333333333333343" y="2056.6666666666674"><custom-block s="makeBoard"><comment w="90" collapsed="true">TIF B inside.</comment></custom-block></script><script x="18.999999000000003" y="312.3333333333336"><custom-block s="won? %s"><l></l><comment w="90" collapsed="true">3.3.2.8 inside</comment></custom-block></script><script x="18.999999000000003" y="281.00000000000057"><custom-block s="status of all winning triples"><comment w="90" collapsed="true">3.3.2.7 inside</comment></custom-block></script><script x="19.666665666666688" y="164.33333333333326"><custom-block s="possible winning triples"><comment w="90" collapsed="true">3.3.1.8 inside</comment></custom-block></script><script x="22.666666666666686" y="242.6666666666672"><block s="reportVariadicEquals"><list><custom-block s="status of triple %l"><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></custom-block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></list><comment w="77.33333333333333" collapsed="true">more 3.3.2.5</comment></block></script><script x="22.333332333333345" y="218.0000000000001"><custom-block s="status of triple %l"><l/><comment w="90" collapsed="true">3.3.2.5 inside</comment></custom-block></script><script x="24.999999000000003" y="338.3333333333335"><custom-block s="tied?"><comment w="90" collapsed="true">3.3.3.1 inside</comment></custom-block></script><comment x="347.3333323333334" y="94.66666666666669" w="179.33333333333334" collapsed="true">3.3.3.3:  If the ninth move, the one that fills the board, causes a win, then the game isn&apos;t a tie even though no more moves are possible.</comment><script x="20.666666666666686" y="187.3333333333332"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><comment w="53.333333333333336" collapsed="true">3.3.2.2</comment></block></script><comment x="261.99999900000023" y="307.3333333333338" w="174.66666666666666" collapsed="true">3.3.3.5:  There are many ways to do this.  The way shown here uses a /flag variable/, i.e., a variable whose value is true or false.  In this case, PLAYING is true if further moves are allowed.</comment><comment x="18.333333333333343" y="1970.6666666666688" w="358" collapsed="true">We modify makeBoard for TIF B because drawn lines are behind sprites on the stage, so the win line is hidden by the board.  To fix that, we apply a ghost effect (transparency) to the board sprites.  The value 30 for the ghost effect was found by experiment.  Any more and the board is too faint; any less and the line is.</comment><comment x="13.666666666666686" y="1569.3333333333371" w="356" collapsed="true">3.3.3.TIF B starts here.  The instruction below only needs to be run once.  It makes a list of the two endpoints of each of the lines to mark a win.  It must be in the same order as POSSIBLE WINNING TRIPLES. </comment><script x="428.66666666666674" y="361.40000000000043"><block s="receiveMessage"><l><option>any message</option></l><list><l>data</l></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="data"/><block var="position number"/></list></block><script><custom-block s="move in this square"></custom-block></script><list></list></block></script><comment x="10" y="1261.666666666671" w="358.6666666666667" collapsed="true">3.3.3 TIF A&#xD;This is quite complicated!&#xD;We are asked to make a check, never mind details yet, after the eighth move, because that&apos;s when the last move is forced.  But if the eighth move causes O to win (it has to be O because odd numbered moves are X and even numbered moves are O), then we shouldn&apos;t do this.  That&apos;s why the IF around this code has to include a check of PLAYING.&#xD;&#xD;If O didn&apos;t just win, then we are going to imagine filling the final square with X (because move 9, an odd-numbered move, is always X).  But we&apos;re not really going to change what&apos;s on the board, just what&apos;s in the BOARD list.  (Really we shouldn&apos;t even do that; we should copy the list and change the copy.  But if the eighth move has just happened and X can win on the next move, it&apos;s okay that we&apos;ve already marked that square as belonging to X; we&apos;ll do it again when player X actually clicks the square.)&#xD;&#xD;It&apos;s just after the eighth move if there&apos;s exactly one number left in BOARD.  We compute the list of numbers in BOARD, for two purposes:  First we see if there&apos;s exactly one number.  If so, we change that item of BOARD to X.  Then, if X didn&apos;t win, we can announce a tie. &#xD;&#xD;Note: The code from 3.3.3.1 that checks for a tie on the ninth move is now never going to succeed, because we&apos;re catching ties early.  But there&apos;s no need to remove it, just in case a player manages to click the ninth square before we locate it.  Maybe mark it as obsolete in a comment.  </comment><script x="375.30826822916674" y="480.2333333333328"><block var="data"/></script><script x="368.30826822916674" y="517.3999999999995"><block var="MESSAGE"/></script><script x="39.333332333333345" y="505.0833333333328"><block s="doBroadcast"><custom-block s="best empty square"></custom-block><list></list></block></script></scripts></sprite><sprite name="Sprite" idx="2" x="-50" y="-100" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="255,32,0,1" pen="tip" id="1065"><costumes><list struct="atomic" id="1066"></list></costumes><sounds><list struct="atomic" id="1067"></list></sounds><blocks></blocks><variables></variables><scripts><script x="27" y="23.666666666666668"><block s="receiveGo"></block><block s="hide"></block><block s="setSize"><l>5</l></block><block s="setColor"><color>255,32,0,1</color></block></script></scripts></sprite><watcher scope="Square" var="position number" style="normal" x="10" y="298.500002" color="243,118,29" hidden="true"/><watcher var="playing" style="normal" x="10" y="325.499996" color="243,118,29" hidden="true"/><watcher var="win lines" style="normal" x="10" y="177.999998" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="2" y="7" color="243,118,29" extX="80" extY="70"/></sprites></stage><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="1082">O,O,X,X,X,O,O,X,X</list></variable><variable name="playing"><bool>false</bool></variable><variable name="win lines"><list id="1083"><item><list id="1084"><item><list struct="atomic" id="1085">-100,50</list></item><item><list struct="atomic" id="1086">100,50</list></item></list></item><item><list id="1087"><item><list struct="atomic" id="1088">-100,0</list></item><item><list struct="atomic" id="1089">100,0</list></item></list></item><item><list id="1090"><item><list struct="atomic" id="1091">-100,-50</list></item><item><list struct="atomic" id="1092">100,-50</list></item></list></item><item><list id="1093"><item><list struct="atomic" id="1094">-50,100</list></item><item><list struct="atomic" id="1095">-50,-100</list></item></list></item><item><list id="1096"><item><list struct="atomic" id="1097">0,100</list></item><item><list struct="atomic" id="1098">0,-100</list></item></list></item><item><list id="1099"><item><list struct="atomic" id="1100">50,100</list></item><item><list struct="atomic" id="1101">50,-100</list></item></list></item><item><list id="1102"><item><list struct="atomic" id="1103">-100,100</list></item><item><list struct="atomic" id="1104">100,-100</list></item></list></item><item><list id="1105"><item><list struct="atomic" id="1106">-100,-100</list></item><item><list struct="atomic" id="1107">100,100</list></item></list></item></list></variable></variables></scene></scenes></project><media name="U5L6TicTacToe" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAABVUlEQVR4Aeyasa2DQAyGrTcBI6RhBmZgIzqOEdjgZYIsQJFItMwQRsgIsZGuOCmmcIrYp186JwqWw//5o+SPiBIR3bieldZNIJmNGiK6UJ3VZEjmO87e9/2eUqIUuISBaXau4xSQ3KR5nmkcx9AlDMJyEPJHAdl13aVtW3lsuRX3CIOwZIICMl+s7RuQtRiFSZgMtAE8roFknUaFydP1BGrCZCBZp1ErMqlzAlLfTawOTMbypaeFSX03sTowGcuXnhYm9d3E6sBkLF96WpjUdxOrA5OxfOlpYVLfze86ljvDpGVrHmdg0qMVSyaYtGzN4wxMerRiyQSTlq15nIFJj1YsmWDSsjWPMzDp0YolU2FyXdfXtm0vyx95mhEGYcmZCshlWWgYBpqm6cf13f2FQVg+QvLFhptN5PfPJbswCAvXccSkvJD+4F//ldYjQ94Z8Fpp3d8AAAD//+zHa5sAAAAGSURBVAMAwabGwk2sEIsAAAAASUVORK5CYII=" mediaID="U5L6TicTacToe_Square_cst_Empty"/><costume name="X" center-x="29" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAAEmUlEQVR4AdyaPU/bQBjHjxYxIZGhA1PJTiTyDSDfIAwMTCQrGYCNpSKMncgAiI30EwBDJZaKDP0AkVgYKjXZqNQBqRkQUqXez+oTnR07ie075wXl7/NzL889P9/5HB95p+bzL2diAVnXGTdaP+dEXc3xS+uPFuc3QOpzBXleKTUP+qiUWtJa1uI8J5Da9j5vy8vLb8fHx6per8+UiHl1ddWDCB6CkEu9Xm/p/v5eHRwcqJOTk5nR09OTen5+7vOtr6//FiMI6eW3221VKpXUy8uLZ0/7oVqtqtvb236Y19fXamdn54Nk+CDL5bLkq1kBBbDZbPbjZvZVKpW+zYkPslgsKq4CBWjaQYOAe3t7qq7XEmI35YOkgKswC6BhgOaIwiIagKQgCpSRpXzSigNIrKGQFEwraFxAWCIhKQT04eFBraysYCpW25Jeddt69fUyMj4wHZF0yz1o2pIfTIdCUnlra0u1Wq2JgwLDKBITGheQuiMhqcSqO0nQIODm5qYij9jG0ViQOJoUKDDmCG5sbPge/MQ2SmND4ihr0DBAZlQulyOcsRULEq9ZgdoCJObYkDRyDZoMkMjClQgSV65AeTwdHR3RhSfuwSRT1Gv8/5AYkva2QQHkOczzGP82APGTChIHtkCDgHwB4fUp7iJDTEGlhsRhWtAwQKZoPp/HfWpZgSSKKFBGg/IoRQHiL6pN3HxrkHRMYIwAUw2be2t7ezvy20kWgMRhFRKHgBI8iwY2qlarA6CdTse3xcKF4QLRnjY2ZR2S4LiXCDgKVEaYlPouAfHvBBLHrIphoJeXl94IMtrUcw1IH84gcR4GWqvVvE0yyhHfblxMUXyLnELSiYAWCgVMn9hLKpfLvjwXhnNICXphYUFOM0+dQ7K4lPSWyePj4wBc2Ko7UMlChnNIAGWRId6LiwsVtepS7kJOIRkpE5B7cH9/39szyhLUGSSArJwyMgBWKhXPlMUoK1AnkEFAdtYE0KPUhyxBrUOGAZojqvn6nyjQ09PTfp3gSRLbKmQcQAk2DLSu/2mDL6mTNrUGSVDmiDFFTXtYoAJKG6lHW3yKnSa1AsmVJygJhGBNW/KHpYDShrZSD9sGaGpIAjHvIYIkTwKNm9IWH9IOOy1oKshgAARHngSYNMUHvqQ9dhrQxJDBjnnmNRoNiSt1in9boIkgCcC8sgDy7sh9lZrOcEA/NkBjQ9JxFoDCSn9pQWNB0mGWgLZAx4ZkOk4C0AboWJC8SbC1KB26ugfFf1TKTEoydUdCAsg7IS+/dL62tqYYVduLDL7HURLQoZBBQHbW2BGfFKBchDBQZpoMhNSTNBIyDJARdL2zJoGNSoOgXHxzxpntQyGnHVAAAD07OxPT2+oMAx2AnBVAITs8PAz9PeDr66tUUT5ICsy5zT04TVO0H3XghF0Htlckm4FilMX2QZ6fn//t6H/EUDhZQCKIpyCo8QPfRYFcxGWv13tPinZ3d9Xd3Z3iNWpW1O12VciOfEEgi4CZurq6UrwMz5pYZU0Off4DyI4++ab1psXnuz4050BwoK8C2dBQNa3PWp+0vsyB4ECtfwAAAP//R2JUgwAAAAZJREFUAwCfzUJdHaOfQQAAAABJRU5ErkJggg==" mediaID="U5L6TicTacToe_Square_cst_X"/><costume name="O" center-x="28" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAFYElEQVR4AdyagVniQBCFJ9eAWoFagVqBoQKxAqECtQKgArECtQK1AqACsQLpQDvg8ue+2Rv4sskmJES478adney8eS+72QTCHxEZishkj22IyESfxCKyryYqUvb537rI0XK5lF23ZMJGibn/KyITcQN3ZIeddR0rIpvUtVgsZDabpYbfZK117EZEIub+/l4uLi4kiqLUTk9PJY7j1PCjKErjjGEsOevk6urXJpLZ6ff7cnR0lAoZj8cyn88LeTKGsXFyAsgFY5HMemFiiQEbi/z5+ZHRaCTMzvPzs9DPqn98fCyXl5ep4UvGP3LBAAtM+hnDSoc2EqmEhsPhSmFE3N7eyuvrq9upmZ3pdCrTxPCTzSE9xhjGkmNBhsOhO3E2XsWvLJLriKVlzzYzNZlMZJEst/F4LN1ut5ATYxi7SHLIBUOTwKYGtTRWpS0tksLX19cCMS3ILDAjzFKcXFsaL9uSCwZYYGo+tahJbY2VaUuJpEin05G3tzdX4+bmJt1gmBEX3NABaz6fC9gKRU1qw0FjoW0pkSwbiiv4YDAQrsvDw0MN1daCCTY1FJTacNB+aBssko2Aogr89PQkxLTfVEsNaik+HIhpP6QNEslSYUtXQHbDXq+n3cZbalFTC8EFTtovaoNE2iVydXW1sukUFajrOJsPtRXPctKYry0UCTjbOwAHBwfCcsFvw6gNB2rDCW74/8z/N1ckOxlLQ9O5FtgQtL/tltpw0Lpwg6P2fW2uSM6cgnDfuru78+FsLQ4HuFAQbnDEz7NckS8vLy7XnkEXbMmxXEI2IK9IzhL3JdXBDVr9tlvLZTabCVzzOHlF2jPE8yTXQx7QNo/B5ezszJW0XF3QOF6RPEPquG63q+6vaXu9nuNiubqgcbwi2aJ13Pn5ubq/prWcLNcsgl6RWYN3NeYV+fn56TTZs+aCLTuWk+WaRcsr0u5YXOhZyW3GLCfLNYuTV2TW4F2NeUXaLdreL3+LUMvJcs3i5xVZZjlkATcds0vUcs2ou/SKtIMtoI236ZfgFHlFxnHsNBQ9UbiBW3QsJ8s1g4J/Ju1TDs+HGcmtht7f3119y9UF/zv+meQ+ZD+g2gv9f347Hlx0ufKxC655TLzLlSR7hkI/hZPXpIFtuRQsVYbnv2m2D8F8tix6RkwRG/4DB7hoGctRY+tt7kxylviYpUn9fl/d1lrLAW5wLCKTK5Jk+/UCH2nsrsbxbRpc4KA16auf1xaKPDk5Eft1PWeSCz8PtIlj1LRfQ8IJbiG1CkUCwoWuj07sapu8fAGvrFGzk7yDoSUXLnDCD7EgkTw2sTTsLcUWDSlUdQwbja0FB7jAKRQzSCRg3Ivs9cjy4Y0wLcebMLD5TQGt4sMBLtoPaYNFAsZOZl++sHw4y4+Pjxyu1cBEIDUUmNpw0H5oW0okoNyXPj4+hGVDHxJ84Qshu/NxrIqBARaYmk8talJbY2Xa0iIBZ7mwhNgA6GP0mVWMmzXXEvEQYyw55GJgaR416FNTY2XbSiIpwvbNWeclKWeaGEaMM871yoyMRqP01yGI4EEfw9c4YxhLDrlgYGCCTYxaxKpaZZEUZIfjK3tmgvsWMWvMAMcxRHA9YfjEMMbYHHywwOQ4NYhtYhuJ1MIQYVv/+vqSh4cHse8RdUxRSw65YIAFZlFO6PFaRGoxlhUbBtv89/d3+jselhzG7PCsieETw/ilB2PJIRcMxaurrVWkJcVM8FGNJYcxO1xfGD4xjDGMtbk1+/5vBmou1Cac/5uBNlnVXXtluUZRNK27QDW8zbLWdayITKDjZED6O9RdbtGRmPu/LtId2CMn3XhYop1E1L7a7C8AAAD//8xYKyUAAAAGSURBVAMA11BJ4ODs0soAAAAASUVORK5CYII=" mediaID="U5L6TicTacToe_Square_cst_O"/></media></snapdata>