<snapdata remixID="13297933"><project name="Multiplayer Game Network attempt" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes>This project may take a few seconds to load, please give it some time.&#xD;Server Source Code:https://github.com/HooferDevelops/basic-multiplayer-socket.io </notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Multiplayer Game Network attempt"><notes>This project may take a few seconds to load, please give it some time.&#xD;Server Source Code:https://github.com/HooferDevelops/basic-multiplayer-socket.io </notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="initiate socket.io" type="command" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doRun"><block s="reportJSFunction"><list></list><l>function init(){&#xD;var s = document.createElement(&apos;script&apos;);&#xD;s.src = "https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.1/socket.io.js";&#xD;document.head.appendChild(s);&#xD;}&#xD;init()</l></block><list></list></block></script></block></script></block-definition><block-definition s="connect to socket.io with url %&apos;url&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>url</l></list><l>return io(url);</l></block><list><block var="url"/></list></block></block></script></block></script></block-definition><block-definition s="%&apos;var&apos; ++" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportVariadicSum"><list><block var="var"/><l>1</l></list></block></block></script></block-definition><block-definition s="%&apos;socket&apos; .emit %&apos;message&apos; %&apos;value&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s">socket</input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doRun"><block s="reportJSFunction"><list><l>socket</l><l>name</l><l>text</l></list><l>socket.emit(name, text)</l></block><list><block var="socket"/><block var="message"/><block var="value"/></list></block></script></block></script></block-definition><block-definition s="%&apos;socket&apos; .on %&apos;message&apos; run %&apos;eval&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s">socket</input><input type="%s"></input><input type="%cmdRing"></input></inputs><script><block s="doWarp"><script><block s="doRun"><block s="reportJSFunction"><list><l>socket</l><l>eval</l><l>message</l><l>process</l></list><l>socket.on(message, (d)=&gt;{&#xD;    console.log(d);&#xD;    invoke(eval, new List([d]))&#xD;})</l></block><list><block var="socket"/><block var="eval"/><block var="message"/></list></block></script></block></script></block-definition><block-definition s="disconnect from socket %&apos;socket&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="evaluate"><block s="reportJSFunction"><list><l>s</l></list><l>if (s &amp;&amp; s.disconnect) { return true } else { return false };</l></block><list><block var="socket"/></list></block><script><block s="doRun"><block s="reportJSFunction"><list><l>socket</l></list><l>console.log(&apos;Disconnecting from pre-existing Socket&apos;); socket.disconnect();</l></block><list><block var="socket"/></list></block></script><list></list></block></script></block></script><scripts><comment x="452" y="75.19999999999999" w="90" collapsed="true">safety check</comment></scripts></block-definition><block-definition s="%&apos;var&apos; --" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportVariadicSum"><list><block var="var"/><l>-1</l></list></block></block></script></block-definition><block-definition s="get index %&apos;name&apos; of object %&apos;object&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>n</l><l>o</l></list><l>console.log(o); return o[n];</l></block><list><block var="name"/><block var="object"/></list></block></block></script></block-definition><block-definition s="square %&apos;x&apos; %&apos;y&apos; %&apos;hexColor&apos; %&apos;mx&apos; %&apos;my&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="gotoXY"><block var="x"/><block var="y"/></block><custom-block s="face towards x: %n y: %n"><block var="mx"/><block var="my"/></custom-block><block s="down"></block><block s="setColor"><color>219,8,0,1</color></block><block s="forward"><l>10</l></block><block s="turn"><l>180</l></block><block s="forward"><l>10</l></block><block s="turnLeft"><l>90</l></block><custom-block s="set pen color hex to %s"><block var="hexColor"/></custom-block><block s="forward"><l>5</l></block><block s="doFor"><l>i</l><l>1</l><l>3</l><script><block s="turn"><l>90</l></block><block s="forward"><l>10</l></block></script></block><block s="turn"><l>90</l></block><block s="forward"><l>5</l></block><block s="up"></block></script></block></script></block-definition><block-definition s="new object" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return {};</l></block><list></list></block></block></script></block-definition><block-definition s="set index %&apos;index&apos; of object %&apos;object&apos; to %&apos;value&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>n</l><l>o</l><l>v</l></list><l>o[n] = v; return o; </l></block><list><block var="index"/><block var="object"/><block var="value"/></list></block></block></script></block-definition><block-definition s="face towards x: %&apos;x&apos; y: %&apos;y&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>x</l><l>y</l></list><l>this.faceToXY(x,y)</l></block><list><block var="x"/><block var="y"/></list></block></script></block-definition><block-definition s="set pen color hex to %&apos;hex&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>hex</l></list><l>function hexToRGB(hex, alpha) {&#xD;    var r = parseInt(hex.slice(1, 3), 16),&#xD;        g = parseInt(hex.slice(3, 5), 16),&#xD;        b = parseInt(hex.slice(5, 7), 16);&#xD;&#xD;    var color = new Color;&#xD;    color.r = r&#xD;    color.g = g&#xD;    color.b = b&#xD;    color.a = 1;&#xD;    return color;&#xD;}&#xD;&#xD;this.setColor(hexToRGB(hex));</l></block><list><block var="hex"/></list></block></script></block-definition></blocks><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" id="236"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="237"></list></costumes><sounds><list struct="atomic" id="238"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite(2)" idx="2" x="-12" y="26" heading="230" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="219.29999999999998,39.47399999999998,0,1" pen="tip" id="243"><costumes><list struct="atomic" id="244"></list></costumes><sounds><list struct="atomic" id="245"></list></sounds><blocks></blocks><variables></variables><scripts><script x="326" y="63"><block s="receiveGo"></block><block s="doForever"><script><block s="gotoXY"><block var="localX"/><block var="localY"/></block><block s="doFaceTowards"><l><option>mouse-pointer</option></l></block><block s="doSetVar"><l>localRot</l><block s="direction"></block></block></script></block></script><script x="336" y="255.66666666666669"><block s="gotoXY"><l>0</l><l>9000</l></block></script></scripts></sprite><sprite name="Sprite" idx="1" x="0" y="0" heading="290" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="127,140,27,1" pen="tip" id="265"><costumes><list id="266"><item><ref mediaID="Sprite_cst_Invisible"></ref></item></list></costumes><sounds><list struct="atomic" id="267"></list></sounds><blocks></blocks><variables></variables><scripts><script x="10" y="10"><block s="receiveGo"></block><block s="clear"></block><block s="doSetVar"><l>positions</l><block s="reportNewList"><list></list></block></block><custom-block s="initiate socket.io"></custom-block><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="socket"/><l>0</l></list></block></block><script><block s="doBroadcast"><l>disconnect</l><list></list></block></script><list></list></block><block s="doWait"><l>1</l></block><block s="doSetVar"><l>socket</l><custom-block s="connect to socket.io with url %txt"><l>https://snap-multiplayer.herokuapp.com/</l></custom-block></block><custom-block s="%s .on %s run %cmdRing"><block var="socket"/><l>userJoin</l><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>player</l></list></block><block s="doSetVar"><l>player</l><custom-block s="new object"></custom-block></block><block s="doSetVar"><l>player</l><custom-block s="set index %s of object %s to %s"><l>color</l><block var="player"/><custom-block s="get index %txt of object %s"><l>color</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>player</l><custom-block s="set index %s of object %s to %s"><l>x</l><block var="player"/><custom-block s="get index %txt of object %s"><l>x</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>player</l><custom-block s="set index %s of object %s to %s"><l>y</l><block var="player"/><custom-block s="get index %txt of object %s"><l>y</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>player</l><custom-block s="set index %s of object %s to %s"><l>id</l><block var="player"/><custom-block s="get index %txt of object %s"><l>id</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>player</l><custom-block s="set index %s of object %s to %s"><l>mx</l><block var="player"/><custom-block s="get index %txt of object %s"><l>mx</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>player</l><custom-block s="set index %s of object %s to %s"><l>my</l><block var="player"/><custom-block s="get index %txt of object %s"><l>my</l><block var="response"/></custom-block></custom-block></block><block s="doAddToList"><block var="player"/><block var="positions"/></block><block s="doBroadcast"><l>updateLocations</l><list></list></block></script><list><l>response</l></list></block></custom-block><custom-block s="%s .on %s run %cmdRing"><block var="socket"/><l>updatePosition</l><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>id</l><l>index</l><l>newdata</l></list></block><block s="doSetVar"><l>id</l><custom-block s="get index %txt of object %s"><l>id</l><block var="response"/></custom-block></block><block s="doForEach"><l>player</l><block var="positions"/><script><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="get index %txt of object %s"><l>id</l><block var="player"/></custom-block><block var="id"/></list></block><script><block s="doSetVar"><l>newdata</l><custom-block s="new object"></custom-block></block><block s="doSetVar"><l>newdata</l><custom-block s="set index %s of object %s to %s"><l>color</l><block var="player"/><custom-block s="get index %txt of object %s"><l>color</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>newdata</l><custom-block s="set index %s of object %s to %s"><l>x</l><block var="player"/><custom-block s="get index %txt of object %s"><l>x</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>newdata</l><custom-block s="set index %s of object %s to %s"><l>y</l><block var="player"/><custom-block s="get index %txt of object %s"><l>y</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>newdata</l><custom-block s="set index %s of object %s to %s"><l>mx</l><block var="player"/><custom-block s="get index %txt of object %s"><l>mx</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>newdata</l><custom-block s="set index %s of object %s to %s"><l>my</l><block var="player"/><custom-block s="get index %txt of object %s"><l>my</l><block var="response"/></custom-block></custom-block></block><block s="doSetVar"><l>newdata</l><custom-block s="set index %s of object %s to %s"><l>id</l><block var="player"/><custom-block s="get index %txt of object %s"><l>id</l><block var="response"/></custom-block></custom-block></block><block s="doReplaceInList"><block s="reportListIndex"><block var="player"/><block var="positions"/></block><block var="positions"/><block var="newdata"/></block></script><list></list></block></script></block><block s="doBroadcast"><l>updateLocations</l><list></list></block></script><list><l>response</l></list></block></custom-block></script><script x="491" y="27"><block s="receiveMessage"><l>disconnect</l><list></list></block><custom-block s="disconnect from socket %s"><block var="socket"/></custom-block><block s="doSetVar"><l>socket</l><l>0</l></block></script><script x="517" y="829.6666666666665"><block s="receiveGo"></block><block s="doWait"><l>3</l></block><block s="doSetVar"><l>localX</l><l>0</l></block><block s="doSetVar"><l>localY</l><l>0</l></block><block s="doForever"><script><block s="doIf"><block s="reportKeyPressed"><l><option>w</option></l></block><script><block s="doSetVar"><l>localY</l><custom-block s="%n ++"><block var="localY"/></custom-block></block><block s="doBroadcast"><l>sendLocation</l><list></list></block></script><list></list></block><block s="doIf"><block s="reportKeyPressed"><l><option>a</option></l></block><script><block s="doSetVar"><l>localX</l><custom-block s="%n --"><block var="localX"/></custom-block></block><block s="doBroadcast"><l>sendLocation</l><list></list></block></script><list></list></block><block s="doIf"><block s="reportKeyPressed"><l><option>s</option></l></block><script><block s="doSetVar"><l>localY</l><custom-block s="%n --"><block var="localY"/></custom-block></block><block s="doBroadcast"><l>sendLocation</l><list></list></block></script><list></list></block><block s="doIf"><block s="reportKeyPressed"><l><option>d</option></l></block><script><block s="doSetVar"><l>localX</l><custom-block s="%n ++"><block var="localX"/></custom-block></block><block s="doBroadcast"><l>sendLocation</l><list></list></block></script><list></list></block></script></block></script><script x="489.21875" y="109.39999999999998"><block s="receiveInteraction"><l><option>stopped</option></l></block><block s="clear"></block><block s="doBroadcast"><l>disconnect</l><list></list></block></script><script x="732.21875" y="833.9999999999997"><block s="receiveGo"></block><block s="doWait"><l>3</l></block><block s="doForever"><script><block s="doIf"><block s="reportVariadicOr"><list><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportMouseX"></block><block var="mouseX"/></list></block></block><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportMouseY"></block><block var="mouseY"/></list></block></block></list></block><script><block s="doSetVar"><l>mouseX</l><block s="reportMouseX"></block></block><block s="doSetVar"><l>mouseY</l><block s="reportMouseY"></block></block><block s="doBroadcast"><l>sendLocation</l><list></list></block></script><list></list></block></script></block></script><script x="1314.2269531249995" y="290.8333333333336"><block var="a"/></script><script x="718" y="30.166666666666742"><block s="receiveMessage"><l>updateLocations</l><list></list></block><block s="clear"></block><block s="doWarp"><script><block s="doForEach"><l>player</l><block var="positions"/><script><custom-block s="square %n %n %s %s %s"><custom-block s="get index %txt of object %s"><l>x</l><block var="player"/></custom-block><custom-block s="get index %txt of object %s"><l>y</l><block var="player"/></custom-block><custom-block s="get index %txt of object %s"><l>color</l><block var="player"/></custom-block><custom-block s="get index %txt of object %s"><l>mx</l><block var="player"/></custom-block><custom-block s="get index %txt of object %s"><l>my</l><block var="player"/></custom-block></custom-block></script></block></script></block></script><script x="23" y="1182.1666666666665"><block s="receiveMessage"><l>sendLocation</l><list></list></block><custom-block s="%s .emit %s %s"><block var="socket"/><l>updatePosition</l><block s="reportNewList"><list><block var="localX"/><block var="localY"/><block s="reportMouseX"></block><block s="reportMouseY"></block></list></block></custom-block></script></scripts></sprite><watcher scope="Stage" s="getLastMessage" style="normal" x="32.54180140440053" y="169.21738031957935" color="230,168,34" hidden="true"/><watcher var="localY" style="normal" x="39.158598365657554" y="338.999998" color="243,118,29"/><watcher var="positions" style="normal" x="29.672910615679257" y="159.39934543528815" color="243,118,29" hidden="true"/><watcher var="test" style="normal" x="35.63055111337371" y="383.5001892334612" color="243,118,29" hidden="true"/><watcher var="localRot" style="normal" x="25.47384213766759" y="25.4738421376685" color="243,118,29" hidden="true"/><watcher var="mouseX" style="normal" x="11.307747434723751" y="11.30774743472336" color="243,118,29" hidden="true"/><watcher var="mouseY" style="normal" x="11.307747434723751" y="35.054019309191915" color="243,118,29" hidden="true"/><watcher var="socket" style="normal" x="2.2641586414356425" y="2.3094262508240604" color="243,118,29"/><watcher var="localX" style="normal" x="37.58848393025551" y="313.999998" color="243,118,29"/></sprites></stage><variables><variable name="socket" transient="true"/><variable name="test"><l>5</l></variable><variable name="positions" transient="true"/><variable name="localX" transient="true"/><variable name="localY" transient="true"/><variable name="localRot"><l>230</l></variable><variable name="mouseX"><l>-489</l></variable><variable name="mouseY"><l>-375</l></variable></variables></scene></scenes></project><media name="Multiplayer Game Network attempt" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="Invisible" center-x="240" center-y="180" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==" mediaID="Sprite_cst_Invisible"/></media></snapdata>