<snapdata remixID="11178886"><project name="ITP Game of Pong Project Start File" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="ITP Game of Pong Project Start File"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="label %&apos;text&apos; of size %&apos;size&apos;" type="command" category="pen"><comment x="0" y="0" w="90" collapsed="false">LABEL will stamp text on the stage at the given font size. The direction of the text is the direction the sprite is facing, and color will match the pen color.</comment><header></header><code></code><translations>de:drucke _ in Größe _&#xD;ca:etiqueta _ de mida _&#xD;es:etiqueta _ de tamaño _&#xD;fr:étiquette _ d&apos;une taille de _&#xD;</translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + &apos;px monospace&apos;;&#xD;context.textAlign = &apos;left&apos;;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/></list></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations>de:ist _ leer?&#xD;ca:_ buida?&#xD;es:_ vacía?&#xD;fr:_ vide?&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:behalte Elemente, die _ aus _&#xD;ca:manté els elements on _ de _&#xD;es:mantener los elementos donde _ de _&#xD;fr:garder les items tels que _ de _&#xD;</translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:kombiniere mit _ die Elemente von _&#xD;ca:combina amb _ els elements de _&#xD;es:combinar con _ los elementos de _&#xD;fr:combine avec _ les items de _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><header></header><code></code><translations>de:wenn _ dann _ sonst _&#xD;ca:si _ llavors _ si no _&#xD;es:si _ entonces _ sino _&#xD;fr:si _ alors _ sinon _&#xD;</translations><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><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>de:für _ = _ bis _ _&#xD;ca:per _ = _ fins _ _&#xD;es:para _ = _ hasta _ _&#xD;fr:pour _ allant de _ à _ _&#xD;</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>de:füge Wörter zusammen _&#xD;ca:uneix les paraules _&#xD;es:unir las palabras _&#xD;fr:fusionne les mots _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="words"/></block></custom-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-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Liste $arrowRight Satz _&#xD;ca:llista $arrowRight frase _&#xD;es:lista $arrowRight frase _&#xD;fr:liste $arrowRight phrase _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Satz $arrowRight Liste _&#xD;ca:frase $arrowRight llista _&#xD;es:frase $arrowRight lista _&#xD;fr:phrase $arrowRight liste _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block><custom-block s="ignore %s"><l>3</l></custom-block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _&#xD;ca:llança _&#xD;es:lanzar _&#xD;fr:lance _&#xD;</translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _ _&#xD;ca:llança _ _&#xD;es:lanzar _ _&#xD;fr:lance _ _&#xD;</translations><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations>de:für jedes _ von _ _&#xD;ca:per cada _ de _ _&#xD;es:para cada _ de _ _&#xD;fr:pour chaque _ de _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0" type="command" category="control"><header></header><code></code><translations>de:falls _ dann _ und pause $pause-1-255-220-0&#xD;ca:si _ fes _ i atura-ho tot $pause-1-255-220-0&#xD;es:si _ haz _ y páralo todo $pause-1-255-220-0&#xD;fr:si _ faire _ et mettre tout en pause $pause-1-255-220-0&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>breakpoint</l></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doSetVar"><l>breakpoint</l><block var="test"/></block><block s="doShowVar"><l>breakpoint</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doPauseAll"></block><block s="doHideVar"><l></l></block></script></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Wort $arrowRight Liste _&#xD;ca:paraula $arrowRight llista _&#xD;es:palabra $arrowRight lista _&#xD;fr:mot $arrowRight liste _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Liste $arrowRight Wort _&#xD;ca:llista $arrowRight paraula _&#xD;es:lista $arrowRight palabra _&#xD;fr:liste $arrowRight mot _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block var="x"/></block></script></block-definition><block-definition s="numbers from %&apos;from&apos; to %&apos;to&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:Zahlen von _ bis _&#xD;ca:nombres des de _ a _&#xD;es:números de _ a _&#xD;fr:nombres de _ à _&#xD;</translations><inputs><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block var="from"/><block var="to"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block var="from"/><custom-block s="numbers from %n to %n"><block s="reportSum"><block var="from"/><l>1</l></block><block var="to"/></custom-block></block></block></script></block-definition><block-definition s="map %&apos;func&apos; over %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:wende _ an auf _&#xD;ca:mapeja _ sobre _&#xD;es:mapear _ sobre _&#xD;fr:appliquer _ à _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block var="data"/></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="func"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><custom-block s="map %repRing over %l"><block var="func"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block-definition><block-definition s="if receive ball, proceed" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Stop all" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doStopThis"><l><option>all</option></l></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="457"><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="458"></list></costumes><sounds><list struct="atomic" id="459"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="4"><sprite name="Rpaddle" idx="2" x="200" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="464"><costumes><list id="465"><item><ref mediaID="Rpaddle_cst_Paddle"></ref></item></list></costumes><sounds><list struct="atomic" id="466"></list></sounds><blocks></blocks><variables></variables><scripts><script x="53" y="38"><block s="receiveMessage"><l>reset</l><list></list><comment w="90" collapsed="false">This hat block holds the script that allows for the Right Paddle to move up and down when pressing the Up or Down arrows. </comment></block><block s="gotoXY"><l>200</l><l>0</l></block><block s="doForever"><script><block s="doIf"><block s="reportKeyPressed"><l><option>up arrow</option></l></block><script><block s="doIf"><block s="reportLessThan"><block s="yPosition"></block><l>145</l></block><script><block s="changeYPosition"><l>5</l></block></script></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>down arrow</option></l></block><script><block s="doIf"><block s="reportGreaterThan"><block s="yPosition"></block><l>-145</l></block><script><block s="changeYPosition"><l>-5</l></block></script></block></script></block></script></block></script></scripts></sprite><sprite name="Ball" idx="4" x="89.00111736018152" y="-47.322733528817935" heading="118" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="198.9,35.80199999999999,0,1" pen="tip" id="512"><costumes><list id="513"><item><ref mediaID="Ball_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="514"></list></sounds><blocks></blocks><variables></variables><scripts><script x="90" y="52"><block s="receiveMessage"><l>reset</l><list></list><comment w="90" collapsed="false">Hat block that holds alll the functions of the game. </comment></block><block s="gotoXY"><l>0</l><l>0</l><comment w="90" collapsed="false">&quot;Go To&quot; block that sends the ball to the reset point. </comment></block><block s="setHeading"><block s="reportRandom"><l>45</l><l>135</l></block><comment w="90" collapsed="false">chooses random direction for the ball to launch when beginning the game. </comment></block><block s="doForever"><script><block s="bounceOffEdge"><comment w="90" collapsed="false">allows for ball to continuously move to and from the walls. </comment></block><block s="forward"><l>4.2</l></block><block s="doIf"><block s="reportOr"><block s="reportTouchingObject"><l>LPaddle</l></block><block s="reportTouchingObject"><l>Rpaddle</l></block></block><script><block s="setHeading"><block s="reportDifference"><l>360</l><block s="direction"></block></block></block></script><comment w="90" collapsed="false">this &quot;If&quot; block allows for the ball to bounce off the paddles and send it in the correct direction.</comment></block><block s="doIf"><block s="reportAnd"><block s="reportTouchingObject"><l><option>edge</option></l></block><block s="reportGreaterThan"><block s="xPosition"></block><l>200</l></block></block><script><block s="doSetVar"><l>p1score</l><block s="reportSum"><block var="p1score"/><l>1</l></block></block><block s="doBroadcast"><l>reset</l><list></list></block></script><comment w="90" collapsed="false">The next two &quot;IF&quot; blocks indicates that when the ball misses the paddle, the opposite player receives the point. </comment></block><block s="doIf"><block s="reportAnd"><block s="reportTouchingObject"><l><option>edge</option></l></block><block s="reportLessThan"><block s="xPosition"></block><l>-200</l></block></block><script><block s="doSetVar"><l>p2score</l><block s="reportSum"><block var="p2score"/><l>1</l></block></block><block s="doBroadcast"><l>reset</l><list></list></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="p1score"/><l>4</l></block><script><block s="doBroadcast"><custom-block s="Stop all"></custom-block><list></list></block></script><comment w="90" collapsed="false">These last two &quot;IF&quot; blocks end the game when one of the players receives a score of five. </comment></block><block s="doIf"><block s="reportGreaterThan"><block var="p2score"/><l>4</l></block><script><block s="doBroadcast"><custom-block s="Stop all"></custom-block><list></list></block></script></block></script><comment w="90" collapsed="false">Loops the commands within, allowing the program to run without stopping until certain conditions are met.</comment></block></script><script x="1287" y="44"><block s="receiveGo"><comment w="90" collapsed="false">Resets the ball to the center when the Flag is clicked. </comment></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="bubble"><l></l></block></script><script x="583" y="39"><block s="receiveKey"><l><option>space</option></l><list></list><comment w="90" collapsed="false">The script in this hat block restarts the game, sets scores back to zero and erases &quot;GAME OVER&quot; comment</comment></block><block s="doSetVar"><l>p1score</l><l>0</l></block><block s="doSetVar"><l>p2score</l><l>0</l></block><block s="bubble"><l></l></block><block s="doBroadcast"><l>reset</l><list></list></block></script><script x="939" y="33.33333333333337"><block s="receiveCondition"><block s="reportGreaterThan"><block var="p1score"/><l>4</l></block><comment w="90" collapsed="false">These two hat blocks broadcast the &quot;Game Over&quot; comment when either player reaches five points.</comment></block><block s="doBroadcast"><l>game over</l><list></list></block></script><script x="588" y="193.33333333333337"><block s="receiveMessage"><l>game over</l><list></list><comment w="90" collapsed="false">Displays the &quot;Game Over&quot; comment. </comment></block><block s="doSayFor"><l>GAME OVER</l><l>2</l></block></script><script x="936" y="112"><block s="receiveCondition"><block s="reportGreaterThan"><block var="p2score"/><l>4</l></block></block><block s="doBroadcast"><l>game over</l><list></list></block></script></scripts></sprite><sprite name="LPaddle" idx="1" x="-200" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="97.61399999999999,221.85,0,1" pen="tip" id="670"><costumes><list id="671"><item><ref mediaID="LPaddle_cst_Paddle"></ref></item></list></costumes><sounds><list struct="atomic" id="672"></list></sounds><blocks></blocks><variables></variables><scripts><script x="95" y="53.33333333333334"><block s="receiveMessage"><l>reset</l><list></list><comment w="90" collapsed="false">This hat block holds the script that allows for the Left Paddle to move up and down when pressing the &quot;W&quot; or &quot;S&quot; key.</comment></block><block s="gotoXY"><l>-200</l><l>0</l></block><block s="doForever"><script><block s="doIf"><block s="reportKeyPressed"><l><option>w</option></l></block><script><block s="doIf"><block s="reportLessThan"><block s="yPosition"></block><l>145</l></block><script><block s="changeYPosition"><l>5</l></block></script></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>s</option></l></block><script><block s="doIf"><block s="reportGreaterThan"><block s="yPosition"></block><l>-145</l></block><script><block s="changeYPosition"><l>-5</l></block></script></block></script></block></script></block></script></scripts></sprite><sprite name="Scorer" idx="3" x="-200" y="120" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="0,32,235,1" pen="tip" id="718"><costumes><list struct="atomic" id="719"></list></costumes><sounds><list struct="atomic" id="720"></list></sounds><blocks></blocks><variables></variables><scripts><script x="37" y="25"><block s="receiveGo"></block><block s="setColor"><color>0,32,235,1</color></block><block s="clear"></block><block s="hide"></block><block s="doSetVar"><l>p1score</l><l>0</l></block><block s="doSetVar"><l>p2score</l><l>0</l></block><block s="gotoXY"><l>-200</l><l>120</l></block><custom-block s="label %txt of size %n"><block var="p1score"/><l>48</l></custom-block><block s="gotoXY"><l>180</l><l>120</l></block><custom-block s="label %txt of size %n"><block var="p2score"/><l>48</l></custom-block></script><comment x="217" y="32" w="90" collapsed="false">sets the color of the score label to blue, initializes each score to 0, and displays the score.</comment></scripts></sprite><watcher scope="Rpaddle" s="yPosition" style="normal" x="384.81250000000045" y="44.21249999999998" color="74,108,212" hidden="true"/><watcher scope="Ball" s="xPosition" style="normal" x="296.38749999999936" y="497.8000065499996" color="74,108,212" hidden="true"/><watcher var="p1score" style="normal" x="12.375" y="14.375000000000014" color="243,118,29"/><watcher var="p2score" style="normal" x="14.375" y="86.76250327500003" color="243,118,29"/></sprites></stage><variables><variable name="p1score"><l>0</l></variable><variable name="p2score"><l>0</l></variable></variables></scene></scenes></project><media name="ITP Game of Pong Project Start File" app="Snap! 7, https://snap.berkeley.edu" version="2"><costume name="Paddle" center-x="5" center-y="36" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAABICAYAAADPomTaAAAAAXNSR0IArs4c6QAAADhJREFUSEtjZGBg+M9ABGAcVYgvlEaDB28aGg2e0eDBCIHRRDGaKEYTBTgERrPCaFYYzQojOCsAAOk1SAHLQ6DQAAAAAElFTkSuQmCC" mediaID="Rpaddle_cst_Paddle"/><costume name="Untitled" center-x="8" center-y="7" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAPCAYAAADtc08vAAAAAXNSR0IArs4c6QAAAH9JREFUOE9jZMAB/pvy/keWYjz9mRGbUgxBdI3omtANQjGAkGaYYciGwA0gVjO6IWADSNWMbMggMIBc58O9QbEBgyMQGRgYBP6b8r7HlayxJuHTnwUZGBg+IKdEg/+mvOeJMYTx9GdDBgaGCyC16HmBoCHImrEZAHYArpjBliMBdeE7kPnwqxYAAAAASUVORK5CYII=" mediaID="Ball_cst_Untitled"/><costume name="Paddle" center-x="5" center-y="36" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAABICAYAAADPomTaAAAAAXNSR0IArs4c6QAAADhJREFUSEtjZGBg+M9ABGAcVYgvlEaDB28aGg2e0eDBCIHRRDGaKEYTBTgERrPCaFYYzQojOCsAAOk1SAHLQ6DQAAAAAElFTkSuQmCC" mediaID="LPaddle_cst_Paddle"/></media></snapdata>