<snapdata remixID="10298326"><project name="U3L3-TicTacToe" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="false" 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="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="8"><costumes><list id="9"><item><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAABK0lEQVRoQ+2aIY6DUBCGpzfYG7QGvU0QGJKtwHCLvQEWBzgsp8EgVmAQJOsx9AYcYec1TZOW3dXzXj6SCXa+mf/LmHcQkVrrXeusFeL3fbhDfuj/EiKhMn29Qq55nkuSJCefgadpWvu+dwiO4xlSAdeu6ySKIq8hl2VZi6IQBd1D1nUtVVX5vMRH703TiOPZbRJIz/bLJnHSo8gSV+JKXG1NACdx0lYi/+2GuBJX4mprAjiJk7YSyQnBSZzESVsTwEmctJVI7iRO4iRO2poATuKkrURyJ3ESJ3HS1gRwEidtJZI7iZM4GYKTWZZtbdtKHMdvHvHsWp3neSvLUoZhcBy759mbgkqapl5DjuO4KaCD/xXS5wX+1fttk59aJ61jiITKdHWQl0DhHlg/uRuoAmqKFGEAAAAASUVORK5CYII=" id="10"/></item><item><costume name="X" center-x="29" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAADyklEQVRoQ93avW8aMRgHYKeVogxIYejARoZuDMDeBKIudAr8BZCNIQNRFzaSLWMysMBA2LKFsUuVDBmrCgTZOsDGUFVEyoAiVap/1/h0OHe+D9t3HJYshfuAe+61X1983iKbWZKUtWC0LfrHGa1ZWnMb4n1HHSlaX2j9Q+tPhizQD8UNQfKMex75kkgkyMnJyfbOzk6szMvlklxfX5P5fO6KNA7I5XLk7u6OJJNo2vEolUqFDAYD82Izmczvx8fHD3TDm0iaB8UJenx8bESRlV6vR2azGTk7Q7rhkOVyeeVuxAHKA1utloE7Pz+3R2JnOp0mOJGVdYbywGq1akZUiMSdQOjXHSoCIkCuSBxkB0VbR2SjLm5Az0g7KLItsm6UUC9AX0gjNd3fEySkp6cnI4BRQvnWZe2DfOvy1FytJw2HQ1IsFiOF+gH6jiTDRgnlgYVCwWhhouI7klFCeWA2mzWAbk9jgZHAhhnRoMDAzTXsPioDVILUHVFZoDKkLii6w+HhIVks/v9j77UPSg8hoiymso+qAiqNpMqsywN3d3eNJLe3tyccKpx2SmVXpy+ViagdEMOEzOOjFqRTH8VDPR4LRTfH2gcRQVmgluYqGl6wD9BarfbGqSOC7Ee0RZL9wHQ6NaI3Go1MGA/FMfl83syiqiIYGhI/hCEAD/V2UOxDE0UkUVQDtTdXa5u0g7bbbdLtdrUCQ0U6RdR6I25vb4WJKdD4QU/S3if5C0NE9/f3yWQyWdnllJCCwqznRYI8ODgg4/F4M5F8kuGjpCuaoUYSwwTLogAi8XQ6HeHwEqvmajd9j4cC0fCiAhhadnUCMoRuqPbm6nVuVCdUK9IrUBRRvJPB6wqZog3pFyiCou8i8wYtWpBBgVZoo9Eg/X7fdMlAlSPZ+0B2daLpe7fIAKYCqhTpd/reDYn9KqDKkDqA7CbIQpUgVcyNukVVBiqNDAMoG1EpZJhAGWhgZBTAoNBASEwTYl6GlaDT9279ULTfTx/1jVQ5fS+D9DO8+ELyQKzzwTa3l6CyGNmIekbqnPyVvQl808U8L5512c33hFxnoFMysq4ec0XGAcigl5eX5PT01GwYDHp1deW8tu7o6GjlJaiO2W3Zpsqfb7d6rFQqkYuLCxy6uhS02WySm5sbgvcUKHEAMjAPTaVSbIHvKpKuWv77/Pz8Pm5AJ+jr9ge2PPsz3fDJ2gzq9TrB3YhbQT6xrmCm179gyK/0QyJuII/X+wPIGq14FfyF1m1aH2j95fEL1vmwj68X9x3I4usHbET9ts5XHuTa/gG8JTdwVNhOGAAAAABJRU5ErkJggg==" id="11"/></item><item><costume name="O" center-x="28" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAEW0lEQVRoQ+2aizUsQRBAeyNABIgAEVgRIAJEgAh2NwJEwEaACOxGgAgQASLw5s55tae2zae657eWOsd5HzPdfevX1dXTc84Nk5/d5GdZZdr7DzlYVsKEa/QrIUdfX18/3qq9Xm+UWFA45i2ZAC6N1yagwtIe5Ovrq3t7e0snXl9fdxsbG40qtHHI6XTq7u7u3GQycU9PT4Uw29vbrt/vu4ODA7e7W1+SbwQSS41GoxTu4+Mjykqrq6sp7GAwqGzpWiEBurq6csMh222+aBfVrpv3BuOdnp46wGOkNsibmxt3fn7+zXIAYRFxw6JFilvzp8SsPA/gxcWFOz4+DuasBRK4y8vLucmJKSwAXIwQw7xPTGs5OztLYUOkEiTueXJyksaeCJYDGOvVIYwNmLYsY19fX5vdNxoSwL29vbmMeXR0lALGxk6eUpgL0PF4PHuETPzw8GCaKxoSCxKHImTBsoRT1bKMT9YWIT6xaJlEQfqTMVFMQihbXNbvUSwKDlFuMCQxcnh4OJuE1O4nnZjFh7yD67JVidze3hbmgGDIzc1Nx96G7O/vzyWdkIVWfZbkc39/nw5DWfjy8pI7ZBAkFmO7QFZWVlLYupOMFZ5kBNzn52f6CtsKFs4SMySDYkUp04oGtS606nNa6Sgba2Yp3QypB2QvFJetutCq72NN2UPzFG+G3NnZme2JbWbTMiXobEuVRaXkiwkSF11bW5u9+/7+3lks+gCWtZkgLdoq03iTv6f6eX5+TqfI8jITJBu9lFSLkHB8hel8QWmpKzGeNUFykpDTAPVi7MmiKWsSh9TRSFZc/kGK5kk6sj8uUtKR9enkwz7JGrWYLKkecovaqixa4x+kmFyn6MfHR8e/F0lodVKsIFtbW99anyZLLlF2Hc5d+OjY05BlZ7cuLKzPuNFbiO4EZG22XYDpOXWxktWGUe6ab0nt82UH1C6A9RaXlTNMMcnC2X/kgLpIyUcbIO8IaIbULrFILmtZlxlS14dYllN401duZa7PwZ1uhUheXW2GZCCdZfk7g3YpFOVySM47MJtPIQLia67L7cTvvxZ5VpAlgdUxQDLCmm1XQCQbrCiHhrIcEQzJwLiqnMSJS7JtW61Jv2tIGYfLFs0fDIk10SSgsqWEXL5UiWHChe69XMvT+wWwzJOiIFmon22bdl3fRVmDtUsRDckkfvADKlffVSzmv8u9h98dD2mLVoLMcl3+D/eh4VW1F4S3cC2hvxqxuqhWVGVIBiNWuICRZCQTAEk2Zg+zFg6MRdMML/EbxSQZThzWsWQdtUAyGFmP1iA/kpC0NrGuXLGzSFkoUHLlAEDWtz5YD3flJyaL1wYpQFlX31Xis44r+tohdXUkn6zIPaIVlntP+SQm1DWz5mgMUk+GdfVnZ9pFtevKZ2cxLlmkwFYgrRZs6jlTZ6Cpydsa97dZ8tvn2ZOkY9dvS9tNzZNYcZKMLRy/8xv0ppTb5bhpS/LHu2eZBv8Blc1Jo80vdsUAAAAASUVORK5CYII=" id="12"/></item></list></costumes><sounds><list struct="atomic" id="13"></list></sounds><blocks></blocks><variables><variable name="position number"><l>10</l></variable></variables><scripts><script x="26.333333333333343" y="10"><block s="receiveGo"></block><block s="clear"></block><custom-block s="makeBoard"></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>board</l><block s="reportNumbers"><l>1</l><l>9</l></block></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script x="25" y="364.66666666666663"><block s="receiveInteraction"><l><option>clicked</option></l></block></script><script x="21.666666666666657" y="1648.3333333333335"><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="23.33333433333334" y="1846.3333333333335" w="363.3333333333333" collapsed="false">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="27.666667666666655" y="1945.666666666668"><custom-block s="draw win line"><comment w="90" collapsed="true">TIF B inside.</comment></custom-block></script><comment x="26.000000999999997" y="1970.6666666666667" w="358" collapsed="false">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><script x="27.000000999999997" y="2056.6666666666665"><custom-block s="makeBoard"><comment w="90" collapsed="true">TIF B inside.</comment></custom-block></script><script x="26.666666666666657" y="312.33333333333314"><custom-block s="won? %s"><l></l></custom-block></script><script x="26.666666666666657" y="281"><custom-block s="status of all winning triples"></custom-block></script><script x="27.333333333333343" y="164.33333333333363"><custom-block s="possible winning triples"></custom-block></script><script x="30.33333433333334" y="242.66666666666666"><block s="reportEquals"><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></block></script><script x="30" y="217.99999999999991"><custom-block s="status of triple %l"><l/></custom-block></script><script x="32.66666666666666" y="338.33333333333326"><custom-block s="tied?"></custom-block></script><script x="28.33333433333334" y="187.3333333333334"><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></block></script><comment x="21.33333433333334" y="1569.3333333333353" w="356" collapsed="false">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="356.33333433333337" y="314.0000000000001"><block s="receiveMessage"><l><option>any message</option></l></block><block s="doIf"><block s="reportEquals"><block s="getLastMessage"></block><block var="position number"/></block><script><custom-block s="move in this sqaure"></custom-block></script></block></script><script x="384.6666676666666" y="423.6666666666665"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportAnd"><block var="playing"/><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l></block></block><script><block s="doDeclareVariables"><list><l>sqaure #</l></list></block><custom-block s="move in this sqaure"></custom-block><block s="doSetVar"><l>sqaure #</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><custom-block s="blank space %n"><l></l></custom-block></autolambda><list></list></block><custom-block s="best empty square"></custom-block></block></block></script></block></script><script x="20" y="428.6666666666664"><block s="doIf"><block s="reportAnd"><block var="playing"/><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l></block></block><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="doIf"><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></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></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="reportAnd"><block var="playing"/><custom-block s="tied?"></custom-block></block><script><block s="bubble"><l>It&apos;s a tie.</l></block><block s="goToLayer"><l><option>front</option></l></block></script></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="reportAnd"><block var="playing"/><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="available squares"/></block><l>1</l></block></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></block></script></block></script></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="411"><costumes><list struct="atomic" id="412"></list></costumes><sounds><list struct="atomic" id="413"></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="0" y="27" color="243,118,29" extX="80" extY="70"/><watcher var="help" style="normal" x="10" y="338.999998" color="243,118,29" hidden="true"/></sprites></stage><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="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="errorObsolete"></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block></script><scripts><script x="229.00000300000002" y="196.77778077777774"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="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="reportSum"><l>-100</l><block s="reportProduct"><l>50</l><block var="j"/></block></block><block s="reportDifference"><l>100</l><block s="reportProduct"><l>50</l><block var="i"/></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;triple&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></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="triple"/></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"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="status of all 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="reportEquals"><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></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="reportOr"><block s="reportEquals"><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block><block s="reportEquals"><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></block></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"/><comment w="137.33333333333334" collapsed="false">This is why each line in WIN LINES is a list of points, each of which is a list of x,y coordinates:  It allows us to use the endpoints, as points, in the GO TO block.</comment></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></block></script></block></script><scripts><comment x="174" y="6.666666666666667" w="244" collapsed="false">I&apos;m kind of bummed that I didn&apos;t find a beautiful one-line solution using FIND FIRST, but it just gives the value it finds, not the position in the list, which is what we need to find the line endpoints in WIN LINES. So it&apos;s a plain old fashioned FOR loop.</comment></scripts></block-definition><block-definition s="move in this sqaure" 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="doIf"><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></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></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="reportAnd"><block var="playing"/><custom-block s="tied?"></custom-block></block><script><block s="bubble"><l>It&apos;s a tie.</l></block><block s="goToLayer"><l><option>front</option></l></block></script></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="reportAnd"><block var="playing"/><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="available squares"/></block><l>1</l></block></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></block></script></block></script></block-definition><block-definition s="best empty square" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><l>5</l><l>1</l><l>3</l><l>7</l><l>9</l><l>2</l><l>4</l><l>6</l><l>8</l></list></block></block></script></block-definition><block-definition s="blank space %&apos;square&apos;" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><block var="square"/><block var="board"/></block><l><option>number</option></l></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></blocks><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="988">1,2,O,4,X,O,X,X,O</list></variable><variable name="playing"><bool>false</bool></variable><variable name="win lines"><list id="989"><item><list id="990"><item><list struct="atomic" id="991">-100,50</list></item><item><list struct="atomic" id="992">100,50</list></item></list></item><item><list id="993"><item><list struct="atomic" id="994">-100,0</list></item><item><list struct="atomic" id="995">100,0</list></item></list></item><item><list id="996"><item><list struct="atomic" id="997">-100,-50</list></item><item><list struct="atomic" id="998">100,-50</list></item></list></item><item><list id="999"><item><list struct="atomic" id="1000">-50,100</list></item><item><list struct="atomic" id="1001">-50,-100</list></item></list></item><item><list id="1002"><item><list struct="atomic" id="1003">0,100</list></item><item><list struct="atomic" id="1004">0,-100</list></item></list></item><item><list id="1005"><item><list struct="atomic" id="1006">50,100</list></item><item><list struct="atomic" id="1007">50,-100</list></item></list></item><item><list id="1008"><item><list struct="atomic" id="1009">-100,100</list></item><item><list struct="atomic" id="1010">100,-100</list></item></list></item><item><list id="1011"><item><list struct="atomic" id="1012">-100,-100</list></item><item><list struct="atomic" id="1013">100,100</list></item></list></item></list></variable><variable name="help"><l>0</l></variable></variables></project><media name="U3L3-TicTacToe" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>