<snapdata remixID="15069234"><project name="Pong Video 01 - Basic Setup with Balls and Paddles" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAIOklEQVR4Aeyca2gUVxiG3829IopGrbZaq9YURaxYDAimgkpi0iQYbFEIVbFCVbCI4I+CN1D/CbUIQaTWP602P4RCSamYSEWNUYiEhlpwo9jcNIkxJmoum92k+Y6s2dXMbpLZTM7MvIsnM3PmXL7v+R5nd0US188XCcSAwMaNG/sjNaMt4sAXCcSAwMWLFxGpGW1BAY3IsN8SAkMKWFVVhadPn+LZs2e2ag0NDaitrbUEHDeJDYG3BCwrK8PEiRPR2tqKJ0+eoKWlZcyO9f/cxl+H8lH23XrTrb3qT3R1deH58+eorq6ODR2uMuYEwgS8desWZs6ciZ6eHpSXl+PkyZOoqKhQ1y9fvsSlS5fQ3NyMGzduwOfz4fr16+oJKeOkT+ZJf/B48+ZNJYOMC+0P3k98cA3r3nmI7I8nI2fZB8hePF0dsyY1vjrOeIGcT+ZArnNz89RRxmVJ/8D4nKXvv74/q/eRilOINTU1yYHNBgTCBJwzZ44SS2QReaZNm6aKWlJSArkWyfx+PxYtWoQVK1YgKysLbW1t6gkpb3/nzp1Twh4+fBjJyckoKirC3bt3lainTp1Sa+zZswfylJU9gH6FKGFxJuIHWnLeIcTNWqz64j9MR+KnXyB5wzEkLP0ciSu/gmfiNCR/eQJJq75G/PyVSFy1HYmrv1Hj5YesKS01NRXyF0b6DBtvaEEgTEB5C5MCSgsEAirAuro6FBcXqyfZwFdpSL8cjx8/rj5v9fb2Ijs7GwUFBbhz5w7k6VNfX4/Tp08jPT1didDZ2Ynu7m61nvTJU1T2kI6EpXnwTF8AT0IS+juaET9vBeIXrUPg4W143pkMf/Uf6O/qQF/rf0hatxf+yosyDejvQ19bAxAX/+p64KesGWzx8YP9A7f4R1MCYQK2t7crUaSIW7ZswbZt2zDwbzuQJ9vu3btx4MAByFNR7q9du1Y9LSdNmoRly5apz4wnTpxAbm4uzpw5A5m/c+dOdTx48CD27dunnppbt25FYWGhmvuiox3+v39Hz6/foue3A+j+ZRe6f96FwL+lCDyogK/0e9UC3mvo/rFQjQn2+cp+gK/kGLp/2orgS+KSVlNTg5SUlGA3jxoTCBNw+fLlePz4sfqcJ4W8f/+++hIiX0TkySb35FzuBY9yLl9W5Chvx9IfbI2NjQg26ZNxwWsZ35++BXUfFaBufr65tmADqqd+pqT2er1KdI2ZM7QQAmECSv+mTZuQkZGhPvvJW6d8lgq2WF8/GpDd++5aeGdlqlbzXpY6jvh65jrIZ9CEhARs374daWlpkgqbDQi8JaDEPGPGDOTk5CAvLw/5+fmvm+7Xq1evlvDZbERgSAFtFD9DHTkBrWZQQK3K4b5gKKD7aq5VxhRQq3K4LxgK6L6aa5UxBdSqHO4LhgK6r+ZaZWypgFplzmC0IEABtSiDe4OggO6tvRaZU0AtyuDeICige2uvReYUUIsyuDcICmhJ7bmJEQEKaESG/ZYQoICWYOYmRgQooBEZ9ltCgAJagpmbGBGggEZk2G8JAQpoCWb3bhItcwoYjRDvjykBCjimeLl4NAIUMBoh3h9TAhRwTPFy8WgEKGA0Qrw/pgQo4Jji5eLRCDhXwGiZ874WBCigFmVwbxAU0L21j2nmR48eRaRmtBkFNCLD/hERkF9eGqkZLUYBjciw3xICFNASzNzEiAAFNCJj335bRU4BbVUu5wVLAZ1XU1tlRAFtVS7nBUsBnVdTW2VEAW1VLucFSwGdV1NbZRRTAW2VOYPVggAF1KIM7g2CArq39lpkTgG1KIN7g6CA7q29FplTQC3K4N4gKGBMas9FRkuAAo6WHOfFhAAFjAlGLjJaAhRwtOQ4LyYEKGBMMHKR0RKggKMlx3kxIUABY4LRvYuYzZwCmiXI+aYIUEBT+DjZLAEKaJYg55siQAFN4eNkswQooFmCnG+KAAU0hY+TzRIwFHDHjh2I1MxubHo+F3AEAUMBz549i0jNEdkziXEnYCjguEfGAFxBgAK6osz6JkkB9a2NKyKjgK4os75JUkB9a2MUmaP6KaCjymm/ZCig/WrmqIgpoKPKab9kKKD9auaoiCmgo8ppv2QooP1q5qiIRySgozJnMloQoIBalMG9QVBA99Zei8wpoBZlsH8QPp8PtbW1aGpqQiAQGHZCFHDYqDjQiEBxcTGWLFmCefPmYfbs2cjMzERlZaXR8LB+ChiGgxcjJXD+/HkUFhbC6/Wir68Pfr8fV65cwZo1a3Dv3r2oy1HAqIhkANtQBDo7O7F3794h33I7Ojpw5MiRoaaF9VHAMBy8GAmBxsZGtLS0GE65fPnykHKGTqCAoTR4PiIC8mUjLi6yQlHvj2hHDiaBEALypWPu3LkhPeGnBQUF8Hg84Z1vXEXW943BvCSBUAJJSUkoKiqCHEP75Tw1NRX79++X04iNAkbEw5vRCKxfvx6lpaXIyMjAhAkTMGXKFGzevBnl5eVYuHBhtOmIizqCA1xNYDjJi3xXr15Fa2sr6uvrceHCBaSlpQ1nKgUcFiUOikrA4/EgJSVFPQWjDg4ZwCdgCAyeWk+AAlrPnDuGEKCAITB4aj0BCmg9c+4YQoAChsDgqfUE9BXQehbccRwIUMBxgM4tBwlQwEEWPBsHAhRwHKBzy0ECFHCQBc/GgQAFHAfo3HKQAAUcZKHLmavioICuKrd+yRoKOHXqVERq+qXCiOxIwFBA+b9dkZodk2XM+hEwFFC/UBmREwlQQCdW1UY5UUAbFcuJoYYJ6MQEmZPeBCig3vVxfHQU0PEl1jtBCqh3fRwfHQV0fIn1TvB/AAAA///QbHC9AAAABklEQVQDAAG2b8sh3uL5AAAAAElFTkSuQmCC</thumbnail><scenes select="1"><scene name="Pong Video 01 - Basic Setup with Balls and Paddles"><notes></notes><hidden></hidden><headers></headers><code></code><blocks></blocks><primitives><block-definition s="if on edge, bounce" type="command" category="motion" selector="bounceOffEdge" primitive="bounceOffEdge"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doPrimitive"><l><bool>true</bool></l><l>bounceOffEdge</l></block><block s="doIf"><block s="reportTouchingObject"><l><option>edge</option></l></block><script><block s="doDeclareVariables"><list><l>get bounds</l><l>bounds</l><l>center</l><l>stage bounds</l><l>dir x</l><l>dir y</l><l>delta x</l><l>delta y</l></list></block><block s="doSetVar"><l>get bounds</l><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportVariadicMin"><block s="reportCONS"><block s="reportNewList"><list><block s="reportGet"><l><option>left</option></l></block><block s="reportGet"><l><option>bottom</option></l></block></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportAttributeOf"><l><option>left</option></l><l></l></block><block s="reportAttributeOf"><l><option>bottom</option></l><l></l></block></list></block></autolambda><list></list></block><block s="reportGet"><l><option>parts</option></l></block></block></block></block><block s="reportVariadicMax"><block s="reportCONS"><block s="reportNewList"><list><block s="reportGet"><l><option>right</option></l></block><block s="reportGet"><l><option>top</option></l></block></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportAttributeOf"><l><option>right</option></l><l></l></block><block s="reportAttributeOf"><l><option>top</option></l><l></l></block></list></block></autolambda><list></list></block><block s="reportGet"><l><option>parts</option></l></block></block></block></block></list></block></autolambda><list></list></block></block><block s="doSetVar"><l>bounds</l><block s="evaluate"><block var="get bounds"/><list></list></block></block><block s="doSetVar"><l>center</l><block s="reportQuotient"><block s="reportVariadicSum"><block var="bounds"/></block><l>2</l></block></block><block s="doSetVar"><l>stage bounds</l><block s="reportAskFor"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportNewList"><list><block s="reportGet"><l><option>left</option></l></block><block s="reportGet"><l><option>bottom</option></l></block></list></block><block s="reportNewList"><list><block s="reportGet"><l><option>right</option></l></block><block s="reportGet"><l><option>top</option></l></block></list></block></list></block></autolambda><list></list></block><list></list></block></block><block s="doSetVar"><l>dir x</l><block s="reportMonadic"><l><option>sin</option></l><block s="direction"></block></block></block><block s="doSetVar"><l>dir y</l><block s="reportMonadic"><l><option>cos</option></l><block s="direction"></block></block></block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="bounds"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="stage bounds"/></block></block></list></block><script><block s="doSetVar"><l>dir x</l><block s="reportMonadic"><l><option>abs</option></l><block var="dir x"/></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block var="bounds"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block var="stage bounds"/></block></block></list></block><script><block s="doSetVar"><l>dir x</l><block s="reportMonadic"><l><option>neg</option></l><block s="reportMonadic"><l><option>abs</option></l><block var="dir x"/></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><block var="bounds"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><block var="stage bounds"/></block></block></list></block><script><block s="doSetVar"><l>dir y</l><block s="reportMonadic"><l><option>neg</option></l><block s="reportMonadic"><l><option>abs</option></l><block var="dir y"/></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="bounds"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="stage bounds"/></block></block></list></block><script><block s="doSetVar"><l>dir y</l><block s="reportMonadic"><l><option>abs</option></l><block var="dir y"/></block></block></script><list></list></block><block s="setHeading"><block s="reportAtan2"><block var="dir x"/><block var="dir y"/></block></block><block s="doSetVar"><l>bounds</l><block s="evaluate"><block var="get bounds"/><list></list></block></block><block s="doGotoObject"><block s="reportVariadicSum"><list><block s="getPosition"></block><block s="reportDifference"><block var="center"/><block s="reportQuotient"><block s="reportVariadicSum"><block var="bounds"/></block><l>2</l></block></block></list></block></block><block s="doSetVar"><l>bounds</l><block s="evaluate"><block var="get bounds"/><list></list></block></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block var="bounds"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block var="stage bounds"/></block></block></list></block><script><block s="doSetVar"><l>delta x</l><block s="reportDifference"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block var="stage bounds"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block var="bounds"/></block></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="bounds"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="stage bounds"/></block></block></list></block><script><block s="doSetVar"><l>delta y</l><block s="reportDifference"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="stage bounds"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="bounds"/></block></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="bounds"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="stage bounds"/></block></block></list></block><script><block s="doSetVar"><l>delta x</l><block s="reportDifference"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="stage bounds"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="bounds"/></block></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><block var="bounds"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><block var="stage bounds"/></block></block></list></block><script><block s="doSetVar"><l>delta y</l><block s="reportDifference"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><block var="stage bounds"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><block var="bounds"/></block></block></block></block></script><list></list></block><block s="doGotoObject"><block s="reportVariadicSum"><list><block s="getPosition"></block><block s="reportNewList"><list><block var="delta x"/><block var="delta y"/></list></block></list></block></block></script><list></list></block></script></block-definition></primitives><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="518"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="519"></list></costumes><sounds><list struct="atomic" id="520"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><watcher var="Ball Y Position" style="normal" x="10" y="10" color="243,118,29"/><watcher scope="Ball" s="xPosition" style="normal" x="10" y="36.100002" color="74,108,212" hidden="true"/><watcher scope="Ball" s="yPosition" style="normal" x="10" y="62.20000399999999" color="74,108,212" hidden="true"/><watcher scope="Ball" s="direction" style="normal" x="10" y="88.30000599999998" color="74,108,212" hidden="true"/><sprite name="Player_Paddle" idx="3" x="210" y="119" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="529"><costumes><list id="530"><item><ref mediaID="Pong Video 01 - Basic Setup with Balls and Paddles_Player_Paddle_cst_costume1"></ref></item></list></costumes><sounds><list struct="atomic" id="531"></list></sounds><blocks></blocks><variables></variables><scripts><script x="105.76923076923077" y="50.69230769230768"><block s="receiveGo"></block><block s="gotoXY"><l>210</l><l>0</l><comment w="313.0769230769231" collapsed="true">At the start of the game, go to the correct starting position.</comment></block><block s="doForever"><script><block s="setYPosition"><block s="reportMouseY"></block><comment w="368.46153846153845" collapsed="true">Forever, keep the X position the same, but follow the mouse Y position.</comment></block><block s="bounceOffEdge"><comment w="570" collapsed="true">We will replace this later with our own code. We don&apos;t want the paddles to go out of the screen and disappear.</comment></block></script></block></script></scripts></sprite><sprite name="Ball" idx="1" x="203.57764171097824" y="-92.93170596839366" heading="106" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="546"><costumes><list id="547"><item><ref mediaID="Pong Video 01 - Basic Setup with Balls and Paddles_Ball_cst_costume1"></ref></item></list></costumes><sounds><list struct="atomic" id="548"></list></sounds><blocks></blocks><variables></variables><scripts><script x="31.923076923076934" y="30"><block s="receiveGo"></block><block s="gotoXY"><l>0</l><l>0</l><comment w="226.15384615384613" collapsed="true">Go to the center at the start of the game</comment></block><block s="setHeading"><block s="reportRandom"><l>45</l><l>135</l><comment w="476.15384615384613" collapsed="true">Start the ball, pointing in a somewhat random direction but always towards the player paddle.</comment></block></block><block s="doForever"><script><block s="doSetVar"><l>Ball Y Position</l><block s="yPosition"></block><comment w="446.923076923077" collapsed="true">Forever, keep updating the variable &quot;Ball Y Position&quot; with this ball&apos;s current position</comment></block><block s="forward"><l>6</l><comment w="487.6923076923077" collapsed="true">Forever move in the direction the ball is facing. The number of steps to move is the ball&apos;s speed</comment></block><block s="bounceOffEdge"><comment w="633.0769230769231" collapsed="true">We will remove this later and write our own code for this, but we want to ball to bounce off the top and bottom (not the left/right)</comment></block><block s="doIf"><block s="reportTouchingObject"><l>Player_Paddle</l></block><script><block s="turn"><block s="reportRandom"><l>120</l><l>180</l></block></block></script><list></list></block><block s="doIf"><block s="reportTouchingObject"><l>Comp_Paddle</l></block><script><block s="turn"><block s="reportRandom"><l>120</l><l>180</l></block></block></script><list></list></block></script></block></script></scripts></sprite><sprite name="Comp_Paddle" idx="2" x="-210" y="-91.27788183349168" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="597"><costumes><list id="598"><item><ref mediaID="Pong Video 01 - Basic Setup with Balls and Paddles_Comp_Paddle_cst_costume1"></ref></item></list></costumes><sounds><list struct="atomic" id="599"></list></sounds><blocks></blocks><variables></variables><scripts><script x="23.076923076923066" y="23.07692307692308"><block s="receiveGo"></block><block s="gotoXY"><l>-210</l><l>0</l><comment w="334.6153846153846" collapsed="true">At the start of the game, go to the correct starting position.</comment></block><block s="doForever"><script><block s="setYPosition"><block var="Ball Y Position"/><comment w="586.9230769230768" collapsed="true">Forever, keep the X position the same, but follow the ball&apos;s Y position. This way the computer will never miss the ball.</comment></block><block s="bounceOffEdge"><comment w="546.1538461538461" collapsed="true">We will replace this later with our own code. We don&apos;t want the paddles to go out of the screen and disappear.</comment></block></script></block></script></scripts></sprite></sprites></stage><variables><variable name="Ball Y Position"><l>-91.27788183349168</l></variable></variables></scene></scenes></project><media name="Pong Video 01 - Basic Setup with Balls and Paddles" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><costume name="costume1" center-x="12.5" center-y="61" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAB6CAYAAABKifiXAAAAsklEQVR4AezTwQmDQBRF0U8qSf9NJaU4ViAHGRdyIbO7MvHw/MzMdzaf85LfumTrOS9Zd+z9dQn5xhUXCVDcuuIiAYpbV1wkQHHriosEKG5dcZEAxa3rPVy9CQlQ3HcSFwlQ3LriIgGKW1dcJEBx64qLBChuXXGRAMWtKy4SoPjpddGfo7g3iYsEKG5dcZEAxa0rLhKguHXFRQIUt664SIDi1hUXCVDcupjrv564ceby2QMAAP//UZVlKgAAAAZJREFUAwC/my+80v6leQAAAABJRU5ErkJggg==" mediaID="Pong Video 01 - Basic Setup with Balls and Paddles_Player_Paddle_cst_costume1"/><costume name="costume1" center-x="13" center-y="13" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAABj0lEQVR4AbSWPy8DYRzHW1akg42tE+8Ai1EMIl6DxAuwGDAQg7dgF4OIScJk9ArwAmrs4A00fD6XPpdre3dt7+6R7/fu6e/P55tWcu1Ca/a/NUZ38dHQnq3xcrqmBa2DuMZf+Ae/46ehPVuz54yztPJVFnTBSg+f4w1cJHvOOOtO7lxe0AqTL/gKzyt33JUxsjsetET3Fe/jqnJXhqyUMR50T2cL15UMWSknG3RK9QA3JVkyE14IWubVJW5aMmW3QtAxCRP/QGp1JVN2GnRYl1iyn7B9R22GdnAsyW4b1CVhEceS7K5BnVgJGW7HoEGmEOs4MKgfi57h9g3yYfibKTZ9lN0zSLCPfO8xnLBD0GOMhCEzYYegB4qfuGnJlJ0+GQwo/NKyWdEpM7wjOc9cbnFTkiUz4WWDLJxxucN1JUNWyhkPsnHC5QZXlbsyRvbzghzwx8Yehw88q5x1x92JnaIgB9+4bGOX/Si+Of/hIM/W7DnjrDuhP3IvCwqDLvtRbFLwSbzKXXu2Zs8ZysX6BwAA///eT5CUAAAABklEQVQDAMkrOl25TJDTAAAAAElFTkSuQmCC" mediaID="Pong Video 01 - Basic Setup with Balls and Paddles_Ball_cst_costume1"/><costume name="costume1" center-x="12.5" center-y="61" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAB6CAYAAABKifiXAAAAsklEQVR4AezTwQmDQBRF0U8qSf9NJaU4ViAHGRdyIbO7MvHw/MzMdzaf85LfumTrOS9Zd+z9dQn5xhUXCVDcuuIiAYpbV1wkQHHriosEKG5dcZEAxa3rPVy9CQlQ3HcSFwlQ3LriIgGKW1dcJEBx64qLBChuXXGRAMWtKy4SoPjpddGfo7g3iYsEKG5dcZEAxa0rLhKguHXFRQIUt664SIDi1hUXCVDcupjrv564ceby2QMAAP//UZVlKgAAAAZJREFUAwC/my+80v6leQAAAABJRU5ErkJggg==" mediaID="Pong Video 01 - Basic Setup with Balls and Paddles_Comp_Paddle_cst_costume1"/></media></snapdata>