<snapdata remixID="9657988"><project name="Multiplayer Game Network" app="Snap! 6, https://snap.berkeley.edu" version="1"><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><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite(2)" idx="2" x="0" y="9000" heading="268" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="219.29999999999998,39.47399999999998,0,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="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><block s="gotoXY"><l>0</l><l>9000</l></block></script></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="30"><costumes><list id="31"><item><costume name="Invisible" center-x="240" center-y="180" image="data:image/png;base64,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" id="32"/></item></list></costumes><sounds><list struct="atomic" id="33"></list></sounds><blocks></blocks><variables></variables><scripts><script x="17" 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="reportEquals"><block var="socket"/><l>0</l></block></block><script><block s="doBroadcast"><l>disconnect</l></block></script></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></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="reportEquals"><custom-block s="get index %txt of object %s"><l>id</l><block var="player"/></custom-block><block var="id"/></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></block></script></block><block s="doBroadcast"><l>updateLocations</l></block></script><list><l>response</l></list></block></custom-block></script><script x="498" y="27"><block s="receiveMessage"><l>disconnect</l></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="524" 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></block></script></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></block></script></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></block></script></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></block></script></block></script></block></script><script x="496.21875" y="109.39999999999998"><block s="receiveInteraction"><l><option>stopped</option></l></block><block s="clear"></block><block s="doBroadcast"><l>disconnect</l></block></script><script x="739.21875" y="833.9999999999997"><block s="receiveGo"></block><block s="doWait"><l>3</l></block><block s="doForever"><script><block s="doIf"><block s="reportOr"><block s="reportNot"><block s="reportEquals"><block s="reportMouseX"></block><block var="mouseX"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportMouseY"></block><block var="mouseY"/></block></block></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></block></script></block></script></block></script><script x="1321.2269531249995" y="290.8333333333336"><block var="a"/></script><script x="725" y="30.166666666666742"><block s="receiveMessage"><l>updateLocations</l></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="30" y="1182.1666666666665"><block s="receiveMessage"><l>sendLocation</l></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="458.3202161713024" color="243,118,29" hidden="true"/><watcher var="localX" style="normal" x="37.58848393025551" y="422.13782269800026" color="243,118,29" hidden="true"/><watcher var="positions" style="normal" x="29.672910615679257" y="159.39934543528813" color="243,118,29" hidden="true"/><watcher var="test" style="normal" x="35.63055111337371" y="383.50018923346113" 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.309426250824064" color="243,118,29"/></sprites></stage><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="reportSum"><block var="var"/><l>1</l></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></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="reportSum"><block var="var"/><l>-1</l></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><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>268</l></variable><variable name="mouseX"><l>-760</l></variable><variable name="mouseY"><l>-29</l></variable></variables></project><media name="Multiplayer Game Network" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>