From 29d90172efc41d58fe211ac3f15d0f84d039fae6 Mon Sep 17 00:00:00 2001 From: yeahbennou <38169671+BenZeng04@users.noreply.github.com> Date: Fri, 5 Nov 2021 11:18:15 -0400 Subject: [PATCH 01/26] create test pages --- content/game-dev/part-i/draganddrop.md | 6 ++++++ content/game-dev/part-i/introduction.md | 6 ++++++ content/game-dev/part-i/sketch.js | 0 content/game-dev/part-i/towers.md | 6 ++++++ 4 files changed, 18 insertions(+) create mode 100644 content/game-dev/part-i/draganddrop.md create mode 100644 content/game-dev/part-i/introduction.md create mode 100644 content/game-dev/part-i/sketch.js create mode 100644 content/game-dev/part-i/towers.md diff --git a/content/game-dev/part-i/draganddrop.md b/content/game-dev/part-i/draganddrop.md new file mode 100644 index 00000000..6775c996 --- /dev/null +++ b/content/game-dev/part-i/draganddrop.md @@ -0,0 +1,6 @@ ++++ +title = "Drag And Drop" +weight = 3 ++++ + +--- diff --git a/content/game-dev/part-i/introduction.md b/content/game-dev/part-i/introduction.md new file mode 100644 index 00000000..33ed9d14 --- /dev/null +++ b/content/game-dev/part-i/introduction.md @@ -0,0 +1,6 @@ ++++ +title = "Introduction" +weight = 1 ++++ + +--- diff --git a/content/game-dev/part-i/sketch.js b/content/game-dev/part-i/sketch.js new file mode 100644 index 00000000..e69de29b diff --git a/content/game-dev/part-i/towers.md b/content/game-dev/part-i/towers.md new file mode 100644 index 00000000..8d30f13c --- /dev/null +++ b/content/game-dev/part-i/towers.md @@ -0,0 +1,6 @@ ++++ +title = "Towers" +weight = 2 ++++ + +--- From 46b8b68eca49c187eb40b287374905fcbfe13f59 Mon Sep 17 00:00:00 2001 From: ji-mmyliu Date: Mon, 8 Nov 2021 22:35:19 -0500 Subject: [PATCH 02/26] Add Drag and Drop Tutorial Added site page for Drag and Drop along with three reference images. --- content/game-dev/part-i/draganddrop.md | 22 ++++++++++++++++++++++ static/img/Illegal-Tower-Placement.png | Bin 0 -> 29644 bytes static/img/Interface-Demo.png | Bin 0 -> 10204 bytes static/img/Square-Point-Collision.png | Bin 0 -> 16316 bytes 4 files changed, 22 insertions(+) create mode 100644 static/img/Illegal-Tower-Placement.png create mode 100644 static/img/Interface-Demo.png create mode 100644 static/img/Square-Point-Collision.png diff --git a/content/game-dev/part-i/draganddrop.md b/content/game-dev/part-i/draganddrop.md index 6775c996..f414f08d 100644 --- a/content/game-dev/part-i/draganddrop.md +++ b/content/game-dev/part-i/draganddrop.md @@ -4,3 +4,25 @@ weight = 3 +++ --- + +## Graphic Interface +The drag and drop interface for this game contains a pick up region for the user to pick up towers and a trash box for the user to cancel the pick-up. To pick up a tower, simply click within the light-green pick-up box, drag the tower to a valid position on the field, and release the mouse key. Notice that it will not allow you to place the towers directly on the balloon path. If you decide to change your mind about picking up the tower, just drop it in the trash bin, the dark green rectangle around the pick-up box. + +![Interface](/img/Interface-Demo.png) + +## Picking Up Towers +To detect when a tower is being picked up, we will use Processing’s built-in `mousePressed()` method, which is called by the system whenever the computer detects that the left mouse button has been pressed down. In order to determine if the user is actually picking up the tower rather than clicking somewhere else on the screen, we will use a method to check if the mouse coordinates are within the pick-up box. It’ll use "point to rectangle collision" to check if the mouse is within bounds. If both the x distance and the y distance of the mouse from the centre are not greater than half the length of the square, it would be within bounds. See the image below for reference. + +![Collision](/img/Square-Point-Collision.png) + +## Dropping Towers +Now, how do we determine when the user has dropped the tower? In the `draw()` method, which is repeatedly called by the system, we will check if the user is pressing down on the mouse button. If not, we will see if the user was holding the tower in the previous frame. If that is the case, then the user has just dropped the tower, and we should handle the drop accordingly. The `handleDrop()` method will check if the tower is either in a valid dropping position on the field, in an invalid dropping position, or in the trash box, which is the dark-green rectangle surrounding the pick-up region that cancels a tower pick-up. In order to see if it is in the trash box, we make sure that the x and y coordinates of the tower is within the set bounds of the trash box. If the tower is in a valid position on the field, we will add this tower to the list of placed-down towers. + +![Placement](/img/Illegal-Tower-Placement.png) + +## Displaying Towers +In order to keep track of all the towers that have been placed down, we need to use an `ArrayList`. ArrayLists are a built-in feature in Processing and Java that is similar to an array. It stores a sequence of values or elements in a list-like fashion. They have the same functionality as an array, with an additional feature of inserting a new element into the ArrayList at any time. We will be using an ArrayList of `PVector` to store the coordinates of every tower that has been placed down. In case you’re not familiar, `PVector` is a simple data type that stores two numbers and represents an (x, y) coordinate. Whenever a tower is dropped, we will add that tower’s coordinates to the ArrayList. + +To help with displaying towers, we declared a helper method `drawTowerIcon()` that takes in the basic parameters of the tower that we would like to draw, and draws it onto the canvas. + +At each call of the `draw()` function, we will redraw all the placed-down towers whose coordinates are stored in the ArrayList. To do so, we will access each element of our tower ArrayList using a `for` loop and call the `drawTowerIcon()` to draw each tower in its respective position. \ No newline at end of file diff --git a/static/img/Illegal-Tower-Placement.png b/static/img/Illegal-Tower-Placement.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c16e31d15620394ae5281c544f7d6bd2065309 GIT binary patch literal 29644 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 Date: Mon, 8 Nov 2021 23:12:13 -0500 Subject: [PATCH 03/26] Add Path For Balloons Tutorial --- content/game-dev/part-i/pathforballoons.md | 116 +++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 content/game-dev/part-i/pathforballoons.md diff --git a/content/game-dev/part-i/pathforballoons.md b/content/game-dev/part-i/pathforballoons.md new file mode 100644 index 00000000..195a230d --- /dev/null +++ b/content/game-dev/part-i/pathforballoons.md @@ -0,0 +1,116 @@ ++++ +title = "Path For Balloons" +weight = 6 ++++ + +--- + +## Prerequisite - Dynamic Arrays + +To create a path for balloons, you will have to learn about a commonly used tool that will aid you greatly in your quest to make the perfect tower defense: ArrayLists. + +#### ArrayLists + +While useful, arrays have a fatal flaw: they require for the user to set a static size, making adding an arbitrary number of elements challenging. Here's where ArrayLists come into play. + +**ArrayLists** are an object taken from the Java language, based around the concept of dynamic arrays. **Dynamic arrays** are an extension of arrays. Where arrays required a set capacity at declaration, ArrayLists allow for you to add and remove elements dynamically. This means that the ArrayList will automatically resize itself to accomodate for the changes made. + +Formally, **dynamic arrays** are a random access, variable-size list data structure that allows for elements to be dynamically added and removed. ArrayLists are the most commonly used type of dynamic arrays. + +To use ArrayLists, you will first have to import the ArrayList library. There are multiple ways to declare an array. Example 1 will outline the different declaration methods. + +###### Example 1 +```Java +import java.util.ArrayList; //importing the library + + +//notice E represents the type of element contained in the ArrayList, e.g. int, bool, string, PVector + +ArrayList var_name = new ArrayList(); //standard declaration with datatype E + +ArrayList var_name = new ArrayList(initial_size): //declaration with size +``` + +For more information on ArrayLists in Processing, refer to this **[link](https://processing.org/reference/ArrayList.html)**. + +*** + +## Creating The Path + +Now that we know how to use ArrayLists, we can use it to help build our path. + +We can add points, or **[PVectors](https://processing.org/reference/PVector.html)**, to our ArrayList. PVectors are essentially an `(x, y)` point as a variable. Here is how we access our PVector's `x` and `y` values: + +```Java +PVector point = new PVector(20, 10); +point.x; //retrieves x value +point.y; // retrieves y value +``` + +We can store these points into an ArrayList to represent our path. We can link up every element and the element after it together to make a line. We would link indices 0 and 1, 1 and 2, 2 and 3, and so on. Every time we link up two points, we can create a new line, which will connect to our previous line. These connections of lines will create a path for our balloons. + +###### Example 2 +```Java +ArrayList path = new ArrayList(); //declaration +//adding points +path.add(new PVector(30, 40)); +path.add(new PVector(50, 50)); +path.add(new PVector(70, 80)); +path.add(new PVector(90, 100)); +``` + +Let's use Example 2 as our reference. Looking at indices 0 and 1, we get the two PVectors (30, 40) and (50, 50). Let's call the line connecting these points A. Next, let's connect indices 1 and 2. Connecting (50, 50) and (70, 80) will create a new line that stems from line A. Let's call this new line B. Finally, we can add indices 2 and 3, which will gives us a line from (70, 80) to (90, 100), which will stem from line B. Let's call this line C. + +Linking together lines A, B, and C will give us the path for our balloons. We can use the processing line function to create our lines, as shown in Example 3. + +###### Example 3 +```Java +//putting points into variables +PVector point0 = path.get(0); +PVector point1 = path.get(1); +PVector point2 = path.get(2); +PVector point3 = path.get(3); + +line(point0.x, point0.y, point1.x, point1.y);//creates a line from (30, 40) to (50, 50) +line(point1.x, point1.y, point2.x, point2.y);//creates a line from (50, 50) to (70, 80) +line(point1.x, point2.y, point3.x, point3.y);//creates a line from (70, 80) to (90, 100) +``` + +To make our lines look more like a path, we can use a massive **[strokeWeight](https://processing.org/reference/strokeWeight_.html)** to our lines. This will make our path's width very large, making it look less like a group of sticks and more like a real path. We stored a variable called `PATH_RADIUS`, which represents the value we will be increasing our stroke by. + +###### Example 3 with strokeWeight +```Java +//changes the thickness of the lines to make it look more like a path +strokeWeight(PATH_RADIUS * 2 + 1); //notice we multiply by two here, since strokeWeight measures the width or diameter he one at the end represents the middle line, surrounded by the two PATH_RADIUS blocks. + +PVector point0 = path.get(0); +PVector point1 = path.get(1); +PVector point2 = path.get(2); +PVector point3 = path.get(3); + +line(point0.x, point0.y, point1.x, point1.y); +line(point1.x, point1.y, point2.x, point2.y); +line(point1.x, point2.y, point3.x, point3.y); +``` + +To automate this logic, we can run a for loop as shown in Example 4. Notice that we go up until `path.size() - 2` instead of `path.size() - 1`, since we will go out of bounds by accessing index `path.size()`. + +###### Example 4 +```Java +strokeWeight(PATH_RADIUS * 2 + 1); + +//links up indices 0 and 1, 1 and 2, 2 and 3 and so on +for (int i = 0; i < path.size() - 1; i++) { + PVector point0 = path.get(i); + PVector point1 = path.get(i + 1); + line(point0.x, point0.y, point1.x, point1.y); +} +``` + +Check out `Path.pde` if you want to see how our path was made! + +*** + +### TL;DR +ArrayLists can automatically resize themselves when you add or remove elements, while arrays have a set size. We can use an ArrayList to store the points of our path and use a for loop to create line segments connecting the points with a large strokeWeight. + From 6f667f06d2e67a058b8077222f4bc27b535a5736 Mon Sep 17 00:00:00 2001 From: Hazel G <58535328+toaster203@users.noreply.github.com> Date: Tue, 9 Nov 2021 11:23:39 -0500 Subject: [PATCH 04/26] Create UpdatingBalloons.md Have to add link to the ArrayList tutorial on other page. --- content/game-dev/part-i/UpdatingBalloons.md | 116 ++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 content/game-dev/part-i/UpdatingBalloons.md diff --git a/content/game-dev/part-i/UpdatingBalloons.md b/content/game-dev/part-i/UpdatingBalloons.md new file mode 100644 index 00000000..ff818783 --- /dev/null +++ b/content/game-dev/part-i/UpdatingBalloons.md @@ -0,0 +1,116 @@ ++++ +title = "Sending Balloons In Waves" +weight = 0 ++++ + +--- + +### What You'll Learn + +A quick note, all line numbers referenced in this page will refer to the lines in `Balloons.pde`, which you can find at [Game-Dev Github](https://github.com/mcpt/game-dev/blob/main/PartOne/Balloons.pde/ "Open Balloons.pde"). +###### In this tutorial, you'll learn how to send balloons in waves, and further understand how the ArrayList storing balloons functions. + +{{% notice info "Quick Review!"%}} +As we’ve already learned, ArrayLists are similar to arrays, however they allow for **easier adding/removing of elements** from the list. Additionally, ArrayLists are **resizable**, while arrays must be intialized with a fixed size. +This allows for more flexibility, and we'll be using ArrayLists to keep track of all the balloons. + +{{% /notice %}} + +### The ArrayList +```java +ArrayList balloons = new ArrayList<>(); +``` +Waves are represented as an ArrayList of float arrays. Each of these float arrays represents a balloon and has three values: +1. At index 0, the value represents the distance travelled, or the number of 'steps' the balloon has taken so far. +2. At index 1, the value represents the delay of the balloon, or the amount of frames before the balloon will appear on the screen. +3. At index 2, the value represents the speed of the balloon, which determines how fast the balloon will move along the path. +These are represented by the global variables (`final int distanceTravelled = 0, delay = 1, speed = 2;`) at line 6. + +### The Functions +#### 1. Creating a Wave +The first method `createFirstWave()` starts at line 7, and this method is in charge of adding all the balloons from the first wave into the array. +```java +void createFirstWave() { +//{Number of "steps" taken, frames of delay before first step, speed} + balloons.add(new float[]{0, 100, 3}); + balloons.add(new float[]{0, 130, 3}); + balloons.add(new float[]{0, 160, 2}); + balloons.add(new float[]{0, 220, 4}); + balloons.add(new float[]{0, 340, 2}); + balloons.add(new float[]{0, 370, 2}); + balloons.add(new float[]{0, 400, 5}); + balloons.add(new float[]{0, 430, 5}); + balloons.add(new float[]{0, 490, 3}); + balloons.add(new float[]{0, 520, 1}); + balloons.add(new float[]{0, 550, 3}); +} +``` +To add elements to an ArrayList, we use the `add(element)` method, adds the element (type that ArrayList stores) to the end of the ArrayList. This method adds the float arrays to the ArrayList balloons. + +{{% notice tip "Adding to a Specific Index"%}} +If we have an ArrayList storing type String that is called subjects and consists of two elements, "Math" and "Science", we could use `add(0,"ICS")` to add it to the start of the ArrayList (index 0). +{{% /notice %}} + +#### 2. Updating Balloon Positions +This method (line 23) updates the position of the balloons every time it runs, as well as draw the balloon at the corresponding position. It has a float array as a parameter, the values of each balloon passed in. +```java +// Displays and moves balloons +void updatePositions(float[] balloon) { + // Only when balloonProps[1] is 0 (the delay) will the balloons start moving. + if (balloon[delay] == 0) { + final int RADIUS = 25; //Radius of the balloon + + PVector position = getLocation(balloon[distanceTravelled]); + balloon[distanceTravelled] += balloon[speed]; //Increases the balloon's total steps by the speed + + //Drawing of ballon + ellipseMode(CENTER); + strokeWeight(0); + stroke(0); + fill(#f3cd64); + ellipse(position.x, position.y,RADIUS,RADIUS); + } else { + balloon[delay]--; + } +} +``` +The first thing to do is check if the balloon has delay or not, which is the first index (second element) of the ArrayList. If the delay is equal to 0, then it means that the balloon is ready to appear on the screen, so we set a final variable as the radius of the balloon. We use the `getLocation()` method to assign the PVector position to the location of the current balloon. A PVector is able to describe a position of an object, storing the x and y components. Then we update the first element of the array according to its speed, by using the += operator, which is the same as `balloon[distanceTravelled] = balloon[distanceTravelled] + balloon[speed];`. + +Next, we can draw the balloon. For this workshop the balloons are just a circle for simplicity, so we just use an ellipse to draw the balloon. The first line, `ellipseMode(CENTER);` specifies what the parameters of ellipse() represent. For the CENTER mode, the first two parameters are the centre, then the width and finally the height. The stroke (border) and fill (background) of the balloon are set to black (0) and yellow (#f3cd64). Then, we draw the ellipse at the correct position, with the RADIUS variable that we initialized earlier. + +Finally, if the delay of the current balloon is not 0, then we must subtract 1 from the delay, which is what is done by the else{} block at the end of this method. You can see that this value will never be less than zero, since when it hits zero it will go into the if{} block. + +{{% notice info %}} +The documentation for the drawing methods are linked below: +- [ellipseMode](https://processing.org/reference/ellipseMode_.html) +- [strokeWeight](https://processing.org/reference/strokeWeight_.html) +- [stroke](https://processing.org/reference/stroke_.html) +- [fill](https://processing.org/reference/fill_.html) +- [ellipse](https://processing.org/reference/ellipse_.html) +{{% /notice %}} + +#### 3. Drawing Balloons on the Screen +In drawBalloons() (line 42), we loop through the entire wave, and call updatePositions() to create the balloons on the screen. This method also checks if the balloon is at the end of the path, by calling the next method, atEndOfPath(). + +```java +void drawBalloons() { + for(int i = 0; i < balloons.size(); i++) { + float[] balloon = balloons.get(i); + updatePositions(balloon); + + if (atEndOfPath(balloon[distanceTravelled])) { + balloons.remove(i); // Removing the balloon from the list + health--; // Lost a life. + i--; // Must decrease this counter variable, since the "next" balloon would be skipped + /* When you remove a balloon from the list, + all the indexes of the balloons "higher-up" in the list will decrement by 1 */ + } + } +} +``` +We start by creating a basic for loop, to iterate through every balloon in the wave. For the current balloon in the wave we assign it to the local float array called balloon, by using the get() method of ArrayLists. Using get(index) returns the element at this index. Then, we can call the updatePositions() method that we went over previously, to update and draw the balloons. + +The next step is to check if the balloon has reached the end of the path yet. To do this, we call on the boolean method atEndOfPath() (which will be covered next) to check if the balloon has made it to the end. If it has, we can use the remove(index) method, which removes the element at the specified index of the ArrayList. We can subtract 1 from the user’s health, since the user has allowed a balloon to pass through. Additionally, we must **subtract** one from the loop counter, in order to not skip the next balloon. We can see that all the elements after the one we removed will have their indices shifted down one, and thus the next balloon would now have the same index of the balloon that was just removed. This means that the loop would skip over a balloon if we did not subtract one from the counter. + + +The method to check if balloons are at the end of the path will be explained in the next section, about the heath checking system. From 33aca35e8661bb936f7936e8fbc90fa6bf20d658 Mon Sep 17 00:00:00 2001 From: Hazel G <58535328+toaster203@users.noreply.github.com> Date: Tue, 9 Nov 2021 11:25:22 -0500 Subject: [PATCH 05/26] Create HealthChecking.md Not complete, need to explain final two functions. --- content/game-dev/part-i/HealthChecking.md | 67 +++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 content/game-dev/part-i/HealthChecking.md diff --git a/content/game-dev/part-i/HealthChecking.md b/content/game-dev/part-i/HealthChecking.md new file mode 100644 index 00000000..f50306be --- /dev/null +++ b/content/game-dev/part-i/HealthChecking.md @@ -0,0 +1,67 @@ ++++ +title = "Health Checking and Health Bar" +weight = 0 ++++ + +--- +### What You'll Learn +###### In this section, you’ll learn how to implement a system that checks if the balloon has reached the end of the path, then remove it from the waves ArrayList. + +### The Functions +#### 1. Checking if the Balloon is at the End of the Path +The method has a parameter of the distance travelled by the current balloon, or distanceTravelled. It is a boolean function, meaning that it returns either a **True** or **False** to the user. +```java +// Similar code to distance along path +boolean atEndOfPath(float travelDistance) { + float totalPathLength = 0; + for (int i = 0; i < points.size() - 1; i++) { + PVector currentPoint = points.get(i); + PVector nextPoint = points.get(i + 1); + float distance = dist(currentPoint.x, currentPoint.y, nextPoint.x, nextPoint.y); + totalPathLength += distance; + } + if (travelDistance >= totalPathLength){ + return true; // This means the total distance travelled is enough to reach the end + } + return false; +} +``` +We keep a float variable to track the total path length, called totalPathLength. Then, we need to assign a value to it, so we loop through the points ArrayList minus the last point (which doesn't contribute to the length of the path), which stores all the points in the path. We calculate the distance between the current and the next point using the distance formula, which is dist() and takes in the (x,y) of point 1 then the (x,y) of point 2. We add this to the total path length distance, and once the loop has finished iterating through the ArrayList, the total path length is assigned to the correct value. + +We can check if the balloon has completed its journey if the total distance the balloon has travelled is greater or equal to the total path length. If it has, then we can return true, since the balloon has made it to the end. Otherwise, we return false, since the balloon is still on the path. + +#### 2. Drawing the Health Bar +To draw the healthbar, we use two separate functions (line 80 and 84). One to load the image of the heart, and then the other to draw the healthbar. +```java +void loadHeartIcon() { + heart = loadImage("heart.png"); +} +//method to draw a healthbar at the top right of the screen +void drawHealthBar(){ + //draw healthbar outline + stroke(0,0,0); + strokeWeight(0); + fill(#830000); + rect(715,455,120,20); + + //draw healthbar + noStroke(); + rectMode(CORNER); + fill(#FF3131); + rect(655,445.5,health*10,20); //the healthbar that changes based on hp + rectMode(CENTER); + noFill(); + + //write text + stroke(0,0,0); + textSize(14); + fill(255,255,255); + text("Health: "+health,670,462); + + //put the heart.png image on screen + imageMode(CENTER); + image(heart,650,456); + noFill(); +} +``` + From 0891055873246334b9f687d68eb702fcaeb2f9d6 Mon Sep 17 00:00:00 2001 From: Averesoft <59520795+Averesoft@users.noreply.github.com> Date: Tue, 9 Nov 2021 16:16:23 -0500 Subject: [PATCH 06/26] Create towervaliditychecking.md Not finished, need to finish checking overlaps with path --- .../game-dev/part-i/towervaliditychecking.md | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 content/game-dev/part-i/towervaliditychecking.md diff --git a/content/game-dev/part-i/towervaliditychecking.md b/content/game-dev/part-i/towervaliditychecking.md new file mode 100644 index 00000000..9db70495 --- /dev/null +++ b/content/game-dev/part-i/towervaliditychecking.md @@ -0,0 +1,57 @@ ++++ +title = "Tower Validity Checking" +weight = 10 ++++ + +--- +## Checking Overlaps + +One of the main things we need to make sure of is that our towers aren't being placed in illegal areas. We don't want a million towers on top of each other or towers that are on our balloon's path. When dragging and dropping our towers, we made sure to show visually whether the tower is in a legal area or not. We split up the validity checking into two parts: checking for overlaps with other towers and checking overlaps with the path. + +### Checking Overlaps With Other Towers + +To check if there is overlap with other towers, we need to store our towers into an **[ArrayList](https://learning.mcpt.ca/game-dev/part-i/pathforballoons/#arraylists)**. We can use a PVector ArrayList to store the (x, y) coordinates of our towers. The formatting would be the exact same as our ArrayList for storing the path, as shown in Example 1. + +###### Example 1 +```Java +ArrayList towers = new ArrayList(); +towers.add(new PVector(100, 200)); +towers.add(new PVector(150, 175)); +towers.add(new PVector(200, 250)); +``` + +Usually, we would need to store a third element in there representing the size, since we need to know how large the tower is to check for validity. Within Game Dev's code, we only use one size for our tower, so we can set a variable representing the size. Since our towers are squares, we only need one variable for side length rather than two for width and length. + +During our drag and drop, we set an `x` and `y` variable, which represents our current tower's x and y coordinates. To check for a singular collision between our current tower and one placed on the ground, we can do a rectangle collision check. + +In essence, a rectangle collision check tests if the distance between the x and y coordinates are both smaller than the size. In our code, we use half the size to allow for more leeway when dropping towers, but you can use the full size if that suits you better. Example 2 shows our function for detecting rectangle collision. + +###### Example 2 +```Java +boolean pointRectCollision(float x1, float y1, float x2, float y2, float size) { + // --X Distance-- --Y Distance-- + return (abs(x2 - x1) <= size / 2) && (abs(y2 - y1) <= size / 2); +} +``` + +We can automate this similarily to the path. By running a for loop from the beginning to the end of the array, we can check collision for each tower with our current point. This is shown in Example 3. + +###### Example 3 +```Java +boolean collision; +for (int i = 0; i < towers.size(); i++) { + if (pointRectCollision(x, y, towers.get(i).x, towers.get(i).y, towerSize)) { + return false; + } +} +``` + +### Checking Overlaps With Path + +Checking for collision with the path uses the same concept as with the towers. We want to check if each line segment on our path will collide with our tower. Call to mind how we used a `PATH_RADIUS` variable, representing half of the size of the path. We want to find the shortest distance from the line to our `(x, y)` point, and check if it is greater than `PATH_RADIUS`. + +To do this, we need to learn how to calculate the shortest distance from a line to any point. + + + + From 0a95b5eb5780ad787e2f950930c16db9f9233ebb Mon Sep 17 00:00:00 2001 From: ji-mmyliu Date: Tue, 9 Nov 2021 17:41:51 -0500 Subject: [PATCH 07/26] Add sample code segments Added sample code segments for reference --- content/game-dev/part-i/draganddrop.md | 74 ++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/content/game-dev/part-i/draganddrop.md b/content/game-dev/part-i/draganddrop.md index f414f08d..bd805a7f 100644 --- a/content/game-dev/part-i/draganddrop.md +++ b/content/game-dev/part-i/draganddrop.md @@ -11,18 +11,84 @@ The drag and drop interface for this game contains a pick up region for the user ![Interface](/img/Interface-Demo.png) ## Picking Up Towers -To detect when a tower is being picked up, we will use Processing’s built-in `mousePressed()` method, which is called by the system whenever the computer detects that the left mouse button has been pressed down. In order to determine if the user is actually picking up the tower rather than clicking somewhere else on the screen, we will use a method to check if the mouse coordinates are within the pick-up box. It’ll use "point to rectangle collision" to check if the mouse is within bounds. If both the x distance and the y distance of the mouse from the centre are not greater than half the length of the square, it would be within bounds. See the image below for reference. +To detect when a tower is being picked up, we will use Processing’s built-in `mousePressed()` method, which is called by the system whenever the computer detects that the left mouse button has been pressed down. In order to determine if the user is actually picking up the tower rather than clicking somewhere else on the screen, we will use a method to check if the mouse coordinates are within the pick-up box. It will use "point to rectangle collision" to check if the mouse is within bounds. If both the x distance and the y distance of the mouse from the centre are not greater than half the length of the square, it would be within bounds. See the image and code sample below for reference. ![Collision](/img/Square-Point-Collision.png) +```Java +// Use point to rectangle collision detection to check for mouse being within bounds of pick-up box +boolean pointRectCollision(float x1, float y1, float x2, float y2, float size) { + // --X Distance-- --Y Distance-- + return (abs(x2 - x1) <= size / 2) && (abs(y2 - y1) <= size / 2); +} +``` + ## Dropping Towers -Now, how do we determine when the user has dropped the tower? In the `draw()` method, which is repeatedly called by the system, we will check if the user is pressing down on the mouse button. If not, we will see if the user was holding the tower in the previous frame. If that is the case, then the user has just dropped the tower, and we should handle the drop accordingly. The `handleDrop()` method will check if the tower is either in a valid dropping position on the field, in an invalid dropping position, or in the trash box, which is the dark-green rectangle surrounding the pick-up region that cancels a tower pick-up. In order to see if it is in the trash box, we make sure that the x and y coordinates of the tower is within the set bounds of the trash box. If the tower is in a valid position on the field, we will add this tower to the list of placed-down towers. +Now, how do we determine when the user has dropped the tower? Processing has a built-in `mouseReleased()` method which is called by the system whenever the user releases the mouse key. If the user was holding a tower when the `mouseReleased()` method is called, then the user has just dropped the tower, and we should handle the drop accordingly. + +```Java +// Called by the system whenever the left mouse button is released by the user +void mouseReleased() { + if (within) { // If the user was holding the tower in the previous frame, the tower has just been dropped + handleDrop(); // Call the method to handle the drop and check for drop validity + } + + within = false; // The mouse is no longer holding the tower +} +``` + +The `handleDrop()` method will check if the tower is either in a valid dropping position on the field, in an invalid dropping position, or in the trash box, which is the dark-green rectangle surrounding the pick-up region that cancels a tower pick-up. In order to see if it is in the trash box, we make sure that the x and y coordinates of the tower is within the set bounds of the trash box. If the tower is in a valid position on the field, we will add this tower to the list of placed-down towers. ![Placement](/img/Illegal-Tower-Placement.png) ## Displaying Towers -In order to keep track of all the towers that have been placed down, we need to use an `ArrayList`. ArrayLists are a built-in feature in Processing and Java that is similar to an array. It stores a sequence of values or elements in a list-like fashion. They have the same functionality as an array, with an additional feature of inserting a new element into the ArrayList at any time. We will be using an ArrayList of `PVector` to store the coordinates of every tower that has been placed down. In case you’re not familiar, `PVector` is a simple data type that stores two numbers and represents an (x, y) coordinate. Whenever a tower is dropped, we will add that tower’s coordinates to the ArrayList. +In order to keep track of all the towers that have been placed down, we need to use an `ArrayList`. + +{{% notice info "ArrayLists and PVectors"%}} +ArrayLists are a built-in feature in Processing and Java that is similar to an array. It stores a sequence of values or elements in a list-like fashion. They have the same functionality as an array, with an additional feature of inserting a new element into the ArrayList at any time. + +`PVector` is a simple data type that stores two numbers and represents an (x, y) coordinate +{{% /notice %}} + +We will be using an ArrayList of `PVector` to store the coordinates of every tower that has been placed down. Whenever a tower is dropped, we will add that tower’s coordinates to the ArrayList. + +```Java +// List of all towers that have been placed down +ArrayList towers; +``` + +```Java +if (legalDrop()) // If the user drops the tower in a valid position on the field + towers.add(new PVector(x, y)); // Add the location of this tower to the list of placed-down towers +``` To help with displaying towers, we declared a helper method `drawTowerIcon()` that takes in the basic parameters of the tower that we would like to draw, and draws it onto the canvas. -At each call of the `draw()` function, we will redraw all the placed-down towers whose coordinates are stored in the ArrayList. To do so, we will access each element of our tower ArrayList using a `for` loop and call the `drawTowerIcon()` to draw each tower in its respective position. \ No newline at end of file +```Java +// Draw a simple tower at a specified location +void drawTowerIcon(float xPos, float yPos, color colour) { + strokeWeight(0); + stroke(0); + fill(colour); + rectMode(CENTER); + rect(xPos, yPos, towerSize, towerSize); // Draw a simple rectangle as the tower +} +``` + +At each call of the `draw()` function, we will redraw all the placed-down towers whose coordinates are stored in the ArrayList. To do so, we will access each element of our tower ArrayList using a `for` loop and call the `drawTowerIcon()` to draw each tower in its respective position. + +```Java +// Redraws all the towers that have been placed down +void drawAllTowers() { + // Loop through the ArrayList that stores the locations of towers that were placed down + for (int i = 0; i < towers.size(); i++) { + float xPos = towers.get(i).x, yPos = towers.get(i).y; // Get the location of the tower from the ArrayList + + // Draw the tower at the specified location + drawTowerIcon(xPos, yPos, towerColour, new PVector(mouseX, mouseY)); + + fill(#4C6710); // Set the fill colour for text + text("Tower " + (i+1), xPos - 30, yPos - 20); // Write the tower number label + } +} +``` \ No newline at end of file From a7088ef12f69803650ef9894d610a5910f5c6870 Mon Sep 17 00:00:00 2001 From: Averesoft <59520795+Averesoft@users.noreply.github.com> Date: Tue, 9 Nov 2021 17:57:04 -0500 Subject: [PATCH 08/26] Update towervaliditychecking.md --- .../game-dev/part-i/towervaliditychecking.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/content/game-dev/part-i/towervaliditychecking.md b/content/game-dev/part-i/towervaliditychecking.md index 9db70495..4c7187c8 100644 --- a/content/game-dev/part-i/towervaliditychecking.md +++ b/content/game-dev/part-i/towervaliditychecking.md @@ -50,7 +50,24 @@ for (int i = 0; i < towers.size(); i++) { Checking for collision with the path uses the same concept as with the towers. We want to check if each line segment on our path will collide with our tower. Call to mind how we used a `PATH_RADIUS` variable, representing half of the size of the path. We want to find the shortest distance from the line to our `(x, y)` point, and check if it is greater than `PATH_RADIUS`. -To do this, we need to learn how to calculate the shortest distance from a line to any point. +To do this, we need to learn how to calculate the shortest distance from a line to any point. Our code borrows code from [StackOverflow](https://stackoverflow.com/questions/849211/shortest-distance-between-a-point-and-a-line-segment), so you can go check out the code there. + +We can combine the path checking and the tower checking into one boolean function that will be a general check for everything. This is outlined in Example 4: + +###### Example 4 +```Java +// Will return if a drop is legal by looking at the shortance distance between the rectangle center and the path. +boolean legalDrop() { + // checking if this tower overlaps any of the already placed towers + for (int i = 0; i < towers.size(); i++) { + PVector towerLocation = towers.get(i); + if (pointRectCollision(x, y, towerLocation.x, towerLocation.y, towerSize)) return false; + } + return shortestDist(new PVector(x, y)) > PATH_RADIUS; +} +``` + +Check out `Towers.pde` if you want to look at how we handled path and tower collision. From 8c84f3efdf7236efe615ac2ec32cbd4f868741bf Mon Sep 17 00:00:00 2001 From: Hazel G <58535328+toaster203@users.noreply.github.com> Date: Tue, 9 Nov 2021 20:13:46 -0500 Subject: [PATCH 09/26] Update UpdatingBalloons.md Changed the weighting for the page, update arraylist initialization in code block --- content/game-dev/part-i/UpdatingBalloons.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/game-dev/part-i/UpdatingBalloons.md b/content/game-dev/part-i/UpdatingBalloons.md index ff818783..a6448de4 100644 --- a/content/game-dev/part-i/UpdatingBalloons.md +++ b/content/game-dev/part-i/UpdatingBalloons.md @@ -1,6 +1,6 @@ +++ title = "Sending Balloons In Waves" -weight = 0 +weight = 1 +++ --- @@ -18,7 +18,7 @@ This allows for more flexibility, and we'll be using ArrayLists to keep track of ### The ArrayList ```java -ArrayList balloons = new ArrayList<>(); +ArrayList balloons = new ArrayList(); ``` Waves are represented as an ArrayList of float arrays. Each of these float arrays represents a balloon and has three values: 1. At index 0, the value represents the distance travelled, or the number of 'steps' the balloon has taken so far. From e9593f219eeb28b5faa870c579f726075892c828 Mon Sep 17 00:00:00 2001 From: Hazel G <58535328+toaster203@users.noreply.github.com> Date: Tue, 9 Nov 2021 20:14:19 -0500 Subject: [PATCH 10/26] Update HealthChecking.md update weight, add completed page --- content/game-dev/part-i/HealthChecking.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/content/game-dev/part-i/HealthChecking.md b/content/game-dev/part-i/HealthChecking.md index f50306be..fc3c9a81 100644 --- a/content/game-dev/part-i/HealthChecking.md +++ b/content/game-dev/part-i/HealthChecking.md @@ -1,6 +1,6 @@ +++ title = "Health Checking and Health Bar" -weight = 0 +weight = 2 +++ --- @@ -65,3 +65,12 @@ void drawHealthBar(){ } ``` +For these final two functions, we first call the loadImage() method which loads the image specified in parameters to the PImage, in this case it is called heart. The image must be in a folder called data. +Since our file is called balloons.pde, the file explorer should look like: +- Balloons.pde +- data + - heart.png + +After we load the image, we can draw the healthbar, with the method drawHealthBar() starting on line 85. In this method, we will draw the updated healthbar, first drawing the rectangle outline for the bar which is done by drawing a rectangle and filling it. Next, we draw the rectangle that reflects how much health the user has, which has 11 sections for the 11 health points the user has. Since the outer rectangle has 132 width, each point of health the user has can be represented as a section of 12 pixels, so we draw a rectangle with width health*12. This second rectangle will shorten as the health variable decreases. + +Finally, we can put in the text that tells the user how much health they have left, as well as put in the heart image that we imported earlier. The image() function draws the image at the coordinates provided (second and third parameter). In imageMode(CENTER), these two coordinates represent the centre point of the image. From 93043f586a809ff802a08ea95f8c7e1c5b810686 Mon Sep 17 00:00:00 2001 From: ji-mmyliu Date: Tue, 9 Nov 2021 20:29:27 -0500 Subject: [PATCH 11/26] Remove sections involving checking legal drop Remove references to method that checks for valid placement. Add references to official documentation for ArrayList and PVector. --- content/game-dev/part-i/draganddrop.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/content/game-dev/part-i/draganddrop.md b/content/game-dev/part-i/draganddrop.md index bd805a7f..b233b932 100644 --- a/content/game-dev/part-i/draganddrop.md +++ b/content/game-dev/part-i/draganddrop.md @@ -37,29 +37,25 @@ void mouseReleased() { } ``` -The `handleDrop()` method will check if the tower is either in a valid dropping position on the field, in an invalid dropping position, or in the trash box, which is the dark-green rectangle surrounding the pick-up region that cancels a tower pick-up. In order to see if it is in the trash box, we make sure that the x and y coordinates of the tower is within the set bounds of the trash box. If the tower is in a valid position on the field, we will add this tower to the list of placed-down towers. - -![Placement](/img/Illegal-Tower-Placement.png) +The `handleDrop()` method will check if the tower is either in a valid dropping position on the field, in an invalid dropping position, or in the trash box, which is the dark-green rectangle surrounding the pick-up region that cancels a tower pick-up. In order to see if it is in the trash box, we make sure that the x and y coordinates of the tower is within the set bounds of the trash box. If the tower is in a valid position on the field, we will add this tower to a list of placed-down towers (explained below). Checking validity of tower placements is explained here ## Displaying Towers In order to keep track of all the towers that have been placed down, we need to use an `ArrayList`. {{% notice info "ArrayLists and PVectors"%}} -ArrayLists are a built-in feature in Processing and Java that is similar to an array. It stores a sequence of values or elements in a list-like fashion. They have the same functionality as an array, with an additional feature of inserting a new element into the ArrayList at any time. +`ArrayList` is a built-in feature in Processing and Java that is similar to an array. It stores a sequence of values or elements in a list-like fashion. They have the same functionality as an array, with an additional feature of inserting a new element into the ArrayList at any time. Official Documentation can be found here -`PVector` is a simple data type that stores two numbers and represents an (x, y) coordinate +`PVector` is a simple data type that stores two numbers and represents an (x, y) coordinate. Official documentation can be found here {{% /notice %}} -We will be using an ArrayList of `PVector` to store the coordinates of every tower that has been placed down. Whenever a tower is dropped, we will add that tower’s coordinates to the ArrayList. +We will be using an ArrayList of `PVector` to store the coordinates of every tower that has been placed down. Whenever a tower is dropped in a valid position, we will add that tower’s coordinates to the ArrayList. ```Java // List of all towers that have been placed down ArrayList towers; -``` -```Java -if (legalDrop()) // If the user drops the tower in a valid position on the field - towers.add(new PVector(x, y)); // Add the location of this tower to the list of placed-down towers +// Adding the location of a new tower to the list of placed-down towers +towers.add(new PVector(x, y)); ``` To help with displaying towers, we declared a helper method `drawTowerIcon()` that takes in the basic parameters of the tower that we would like to draw, and draws it onto the canvas. From 1643ec5ba25d620044d71563eec75be22a3bfe1c Mon Sep 17 00:00:00 2001 From: Vlad <4vladsurdu@gmail.com> Date: Tue, 9 Nov 2021 23:55:48 -0500 Subject: [PATCH 12/26] Rotating towers almost done --- content/game-dev/part-i/towers.md | 50 +++++++++++++++++++++++++++++- static/img/Line-Slopes.png | Bin 0 -> 145636 bytes static/img/Rotation-Mechanism.png | Bin 0 -> 135629 bytes 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 static/img/Line-Slopes.png create mode 100644 static/img/Rotation-Mechanism.png diff --git a/content/game-dev/part-i/towers.md b/content/game-dev/part-i/towers.md index 8d30f13c..2fe4ec06 100644 --- a/content/game-dev/part-i/towers.md +++ b/content/game-dev/part-i/towers.md @@ -1,6 +1,54 @@ +++ -title = "Towers" +title = "Rotating Towers" weight = 2 +++ --- + +### What You'll Learn + +In this section, we will break down the process of rotating towers so that they always face a balloon. + +We will talk about the **drawTowerIcon()** function staring on line 79 of [Towers.pde](https://github.com/mcpt/game-dev/blob/main/PartOne/Towers.pde "Open Towers.pde") + +##### Key Steps + +1. How do we calculate the _slope of the line_ from the _tower to a balloon_? +2. How do we use that slope to calculate an _angle of rotation_? +3. How do we use that angle of rotation to _rotate the tower_? + +Remember that in Processing, Y values increase as you move _down the window_. Therefore, the origin (0,0) is at the top-left corner of the window. + +### Slope of a Line Connecting a Tower to a Balloon + +![Interface](/img/Line-Slopes.png) + +The slope of a line is essentially _how the hieght of the line changes as you move along the X-axis_. Take a look at line 1. As you move along the x-axis (go from left to right), the height (or _Y-values_) of the line decreases, and so we say it has a negative slope value. In line 2, the line's height doesn't change, so we say it has a slope of 0. For line 3, the height/Y-value increases as you move along the X-axis, so we say the slope is positive. As you may see, the _slope of a line contains some information about the direction from one point to another_. + +All you need to calculate the slope of a line is 2 points on the line itself. + +```java +float slope = (targetLocation.y - yPos) / (targetLocation.x - xPos); +``` + +The formula for slope is (y2 - y1)/(x2 - x1), where (x1,y1) and (x2,y2) are points on a line. This is the formula the code above uses. (targetLocation.x, targetLocation.y) is the coordinates of the tower, and (xPos,yPos) are the coordinates of a balloon. The code stores the slope in a _float_ variable to be used later. + +### Slope -> Angle + +Now we need to find a way to use the slope we calculated to determine the angle the tower must rotate to face the balloon. To do this, we will use the trigonometric function inverse tan - _atan()_ - to convert our slope into an angle. + +There is, however, one issue with using slope to go to an angle. + +![Interface](/img/Rotation-Mechanism.png) + +In the image, there are 2 lines going from the tower to 2 different balloons. Despite the arrows pointing opposite ways, the lines the arrows make have the same slope. Lets look back at our deifinition of slope: _change in hieght (or Y-value) as you move along the X-axis_. Both lines in this case are inclined downwards as you move along the X-axis, and because they do so at the same intensity, they have the same negative slope. In this case, we'll assume that their slopes are -1, which means for every 1 unit increase in _X_, there is 1 unit decrease in height (or in other words, decrease in _Y_). + +However, the identical slopes into atan(), you will get only 1 kind of angle, when there should very clearly be 2. If we assume the slope is -1, plugging that into atan() will tell us that the tower should turn -45 degrees for both balloons. This works for balloon 1, which is on the right side of the tower, but balloon 2 on the left needs an angle of rotation exaclty 180 degrees away from balloon 1. + +{{% notice info "Recap"%}} + +1. Slope is the change in height as you move along the X-axis (in this case, height is Y-value) +2. The function atan() can be used to generate an angle from a slope +3. We need to find a way to differentiate balloon points that make similar slopes to find the proper angles + +{{%/notice%}} diff --git a/static/img/Line-Slopes.png b/static/img/Line-Slopes.png new file mode 100644 index 0000000000000000000000000000000000000000..a64955b11b097fbe590078f669b31610f7cab4a1 GIT binary patch literal 145636 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

-Lq}UI-9k;ix`HX+ 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

=A zM0The!6M{kv64WY`_1xvPwVGCgiqDJ;s#V>_?f9)vye5rJm43wZgDv| zm88r=4?Ygtvd6Bh|0P>hxaVB%gBMY>seEEwP(q$}_FW#s|M=W_8DG=g!UV0Y3!VO- zZ$+}{iP{vv&U$a92c~Lm+)H_H_5>`uJNYxg_Km&p`qd||hea*qivNhidk0KTnLW91(vVqb)#&8*=zjj#>NCNfV{j+U4 zYbW(u0nXs%A=`Vc0>#B8@Rgq}tRY>Xj$_`ys>Q z`YP-G8_Xr8Vf-e`{g@aD&97ebp`XuQqT0_hrU-5)omv~TKsC$Ym!~e3=_3p|yj%8s z`Mt+uSiGXAL*(xw_ZuFES0zDvA(1LR=dD?C61z`NE+|SKRjs|^8lDsphJFlK0mr2B zde5g~P6)BD38gy&9{L=ygp_vi02TLyM>a~!u?RTL-iVANZIojA=R>gpbTuK;?Z(>n zv(qdN=yY=gS7*-PgxlTGC73Nr_mUR2Y1fs-9X|2S(cq4yt%8aEp@XE0G5_=FrltG4 zui)R_#IrKcuw^2o`h%79$QiFE56^>a$`gaV<3^j?OWZgQtNIOZr%8jE_3bJ~aZex|hVi9%fLT3_`I5A=LH^%!QM zCiuEJxO0MA|B-P4`m%hI93=fB{r~3i9JJ<4#bSrQX|g-)es=F)uvsu>V#An?l&bfk z;`0>i&iT3^)8W!M54GjF7vww%yXm{hx)Em8t{3qTNo@t8qGptr0)arp$a?k2p9j0%l0Zkx~K9m_RT+fOHY_7m06xO4Ve#p*exRG zi{lbrZ#b%xrJzPFXOXhMi8q%Xx4*J=5cv4vBxJ0-{TG)vJCtW8a}`&WmtiG@81;H? z{!pu9@%Ba4_Lr+{@18!t^Chv8XC)-I-sGJ;d%cXwQ@44I;vX!W&GmB7T$1XQr3Wy{ zkJ?(!S!N9+Ko_-}aP@eJr0I_TDF+fW|9+WD|LV*vrfy=P|;BYzga+08Y82NbhT!-g#1BmD$zm^q57F|z@?$KGMxy2%aO0J+^NZx~* z#3qLxB=;ug-`tEytA_zAUP+=CVGbx=r%Ee9FNJ0id+L@cSQ%9UBCgy0Zh?!eZH(nE zoS!q__+r9W?b>&y#Q|B#GyPb|jzyJl5g(6>6$F1zd8cqQ@nlYq zoflSLovJ#VBNlPeMD%TrQ_+=6HXoh}ods9D8#4?;gaaapkN-$$*1kc2!<`F`K};?N zI4K!sd|hJq7UEqIoUU2G$wHF*{I1`JMwy7x7jQukeHJOh10+R~-d(Ucw5U*Em+%HA5DRy&D!m zSRdjMt6JG#tR)C!)3Kz@xf!s$h98!zGJigp>umnq3@is!$74=HcpU`l84o!Tr`%M~ zm5h2l3ob}`ycure@?Unhp{wnrlhSPI1pC(tAByCuBezMHj z0k?+>#xPPnCy^D+SEBZVMP%f3QAEVA%Lb+XpAZtP{#>frL16J0EL&tDICrw?FWdt@ zuhx;C7$n)QXj7ViQ+)Eud|dPSgwKcmV^*3R+F?o6k-RI4@#8^UlI45G@ z4G>h&IOHd^W&bVeSOO%yx@Y}q*cRlaOsGPja}TX;L)JpqTQ`Iz8jpM!+%x-dTS;D( zgAcPWWTk1)bQ97NPRYZ6at(h!r<&uG=keQ^#43kqm8DO+v2nlKXr-~tRncX%$_4hI zS^biyJM5J?mB3%-BD?a4#CBXxSsm^?#13+kL+aE`h?M>Hvibg-#qpI)OrbD3Bw8I@D#g<^);v+`aj0i+W14Ptxd9-CF1hZI|mwujAd5Pu10T>{piXq^sHQj#=H}NIXVM!47i9RRLc`S&B&Z@JL`pGA^K)_seOSM9?X2v^*i@+7W7-dc3wC z?R5qT2D0((R~2^5NNzawa%jP)^_A<**E=j-eCFbgw+ebFjPl7lUc-;RKJ-ZHp^{ko9uT^V?T-N4Ans54_~K5p}&PaL=5_a%OdiL;dTL;LIcIhSOnrvGQnsFGcFapftL5)*ZSB6p%#|w~SaDxPXkohzQYJ zkBA4arl=*^&n{eP1br<0`1mo*x>1FUd^{HdadIIu4tfU}`6eF22fv{XhPpR00jwea z7lu?LbD;pXw8IGJIsI;+#Di=$U0b~`q^ z&P|01)Ai~?S*nmGy@LPO%KH7?Q#{aYA!}X9$2rU{?Pd%)Dy8w}^2o$G{b|o9eEw61 zI^a1CeAhoE73Ayhf_!_~{bP+}WjbC0@anb5Tlv8G%ya!o9p2TlEya@r`S7)?csZo| zK)xPb4NlU`%ZJmG64uYI=>j#DS*aU)jw7cqYxn`c1>EdwYmK;2Y*Wt9^RrwITl#>5 zLnpMS2eQ^qWKHs&iQ0Pyh7ONn5rUp`x*mhg>u!s$lAf(fsKJ^eILEx{e^l*9K11ZW zRU!AnxASO9o(oHDJ5tM}wgjX)TYZ6|H~y!LlT-EiWqthlhPyFr|A`YRfsuFEi6~JW z0r`#|owYVu)~_wcud1u|^9`;jMbBh1PFxy)(TG3fy zDyHpfZm9wT}7K zt;89ATGIY%|0VGPDV3zfdEUAE^V=}WW^c9U>Os1fh23u@rJ@EzqW{WH5 zBwLp~`#7|mKcAax?pa$#9^717$eP>tEHG@>S)aZgP;JLM5Vx+y8lNK}M3K>LN2J>i z>e>uOY$rbblWVGJj?I8^0kvJ>H&g8ij3eeV$v%E4+CiIJJXr9c?|OC9L2~mET;55L zsZ12z->O^&GBXW01{A>hLPvn;j+yb1%PH#O?C547Ezu>=CYgju? z^4E%56kzG7vjc#6WUyCxGx>a^wwFMH{_Y``{wi*WrYFwwlZ$h@F9X{tLMjoa)7tso zs(jeQT%_5NNT|xnS4`p|DjWA+6QA-{LI9bHqHRWZd82>!-qt!Lv1-@} zb;W;=Z?lU-5sv#7+V>f@s)&sw=sMMo`5d9quT)*#YbNc9EjfH^OV@%-G}D&-pl7C; zH<_zB$j7fs)t;OX1H>FPpni}ke)MQ^(P zV51N&r;iWBg>ydj*5BQ)LgQ}p>wJCKktnZ<#7SaS3C7;3#!XLYriAZw$Ix{YDqPmY^#sd|leePvbJddxIt(%`B| z_+B}1P<|XjuwT>MWl^<&(ru^6Rw-Gb9n_T){nJV=YEB+ZzjcIx_(*S9%!dRl?{jB2 zChTmdQ54!tYALYj+VpH>(Qdk0Nvc$Jq&{(N4IpmdN%pg}&5wNi=9y~`y;u&|x`1L! zd>W3NgACyAhR@rs^xhG`e%(_2fsr!cKtTuIM?n(aY1B_YJlJ>yPH!Ck{52qx`Ot9!ro*&t|=R-sZlmSUUF(~(9(Z|I|>nHmk)XW zDMrYif{<}3{>E$WpEUndDKBrz8v&@p)FSHhQg8R( zv|8R3IrxHGe%vK_`{Qe#;Kd9Z0MLdxBbnF`K1XKUKgDfgx4+J2__bh4=fT0|Y*(9C z-OO_JI)#Ejk{&zVBtGx{;^S7?GT>dy5`wPDi{l`z_3m%(fXVPZRg=d+N-Q`wygAIE ziZL@Bt?n^IMDJ&u5K{%(`K}o_clE(mBU2jp$L)QS2t<^Z#y7ujnh|g}^6IWw*o0<2 z>EM7?-1IDE-G{<`wng5gs@2E)lqd7{HLc>v5}mzU%n;#&ds|c>qa)o!@ged;)4n2- z=$ju)5_KXo^_-GvM~9=C49W+~)(EWnf%C>l!9MLybmSQzCynX-FNz#6>bUT&YLhL> zGH$Nbv!J_-RjqSc9_#zXMPqEPIYnqYRXUuNT~h0skk@gs$6d$c{OWjcZ`$2Ng-{*k zIE=UN{UEcDENX-!LCrzT#W@Dnh*Gv=i5nhVKBpouv3I(cyfan(?m8c~QpApgi)*Bg zlk2_XAGq~6V@AvYI(lH#I^A-~!TML!Beb6qf|DDeJ0t@Qa5TJKzHFpYz75M8nEahv zvE}p0W9CCL*{y7bU953B#)rxE2AQ&gJ`%T5UE^hi{VmiR2EA;%dOaFtkQRSva;MEQ z)>|Gw!v$a2*p$(behxR>gR1j~CBL|L3-*@Ep-AFTcbRo~l8}eoFT)CXj9l7N8&_I> zOd95m2phgdXuf@VW!dx;sti?7cn1tPM5+ zma53oH9?=m4W%4xlo%A$-N84YZ;4Uwqh!6ux@l`-M|%f1CumX( zbicUd$|{3vOLhN>L1`S{+(ES2zX*1Qn*A|v3G#5TCvq?+c3XoOcYJjshipqH5Z1PC z5NvG=)yLF)U#4hpcY8)DUY~IWJfG5PPABjhSIc;cEgM%#HouaUXy_2ma2ncP0ERv; zyj@tvz8g91fgktz!^v+vc{w{c~8Kb@LbZ+&}iQ3 z!kggyj>L1S-nwte;D~$o5sizPu+uR4Ho3h858@DX^2w(sENu+^Ze8R!s{;mvO>Pu@ znKRJ}0_0BgV?yGkyXOJSZJ<%iD#iGc6Vf|#e8{#2>+N=@jE2epAEbm0zHQN}yGZ=1 z+yC^9Q)@_GTSy2$`5dF8murB(o-bGnqyy={oRkOqtQwFaveXCsC(ry{> z>!QT$gYHyBY;UF&?8`;Kr3ND%p#-1L??3X~ZO&1d;pQhdL#P$SrrCo*|DA?04ikT3j}kvr`wKyA>Fy#KNMrP8+$UqgC&qZY`swwW;4& znLwfccg=L|Bak*8{4dsW@gCq&qb~wJq9gEfZIUSAnIo>=s6uO=KcAl1a%wMc!e?3U zbk2B4XTs}jXW!8!R!V<$IFHh|&Z?$tE=grMQzcWJdu0)S1x=`n=!KopG}qQGFuu5_ z`?97Ti}$c`bgQw{{X+3-_z;lx;TrzPWTU4a7;b03w+V}%3+84n+kxRn7#JW^+rQan z4E@*_U@`3xvRPCYM)lsm_Xq4_t+=F}T%=Fb{YQ4Qt3I@W#CWuqvampaaBYXDq76oVAeg&;RQ7NSrCN1IE(NLjL+otX{Uq65;);KG>C0%!v-mzSd)}2ns2LzJpmOj^7@cZ*p$5-<+OJO@8#o( z5KVpYz~c$8bY^vCp8!Azb%KL&MgNlaM2cs)n@mWhVqpEcP?(JViu$2t*mi{-8{J_7 z7hc)2@+-UJdp%y?-BecD5vz!Ll&PuhaPJID=T_s1n0auji=c0A*RT_;%KQ`YLYg@V z;;6DYC9K#Pf|E>vFT-XQJp8z-qI487l;F{#m`$ih`$WF4h8u5>$TV9%!}CY*Br~Pt z-9+Q9Gf0a-28MbM)sRQ<->bg+@)qR~Rdt@a=P~tSw(o?E)1qQqi+5>;omN_-5p-m2!*2mY|$ywUh`sxOo z_?{Mfj?X^YfT3Kqe-{bSVWtp%9f?8bzbMJcEu73Z*OTu;PTKI|OJHu_aC>Q;WyS-Z`KU}arE%e-s zHWj-{B^zdGs(_Slo=fmK%qE&Rs{WM>9lm^X^Z* z@Zv+gUP1GBxN7@bu)MAy!pek{@j39**3*|+`qhacwSdN?=vE)Bx7AqVlvh|#(?xBz zFjhKGrrU?E@HZq^@x#9k4fQ!fXv$s&6J`i}ZhTTTmgfBJdjs4XD&C^@UXKCJr_Y@b z&nY+@?OtW_4j!K*9YGXv%>+&00vv%(y~>tOcGcJ3Zj;EgXoeMB$Qe{+M;?A<&C(~K zqM@4Bh!{8txYv52+_b894fraasbNcR6Bpjq+`HCH!QFup4om@E7wcddv&Shc2G*1Mv!F50aeLr<<0ZsCOm2{Z*ECW{>srs0|A0MZ zC9%5qMr@xA)(g5sl3hS%*>BZgTZn5XqDnW|E}c@R#Mh=z_|At6yP3l%(?I4vUMO!u zQAkIB1Lh>X6*l$B(6xc-Y4tDq{`6DG>ti$fduHlky&Z<2#`kJjz~peBhmr;wg5h>> zSSCE4fxT@M=9@HbdmnuvQ^V`Ur{vRUf}0X?P4!65USgL{D_~lbvOY0H3U=Icd;FRU zHWvqm8Ul)0iiGM&t(JL}?$nvaiia*!z=P+j90JqREUF+=bIT;+l#$AiRm+L{*f*Q= zBw3$@e*L1CoCTNVh$;&8hg3NRjEv<*=W7&+bNUC997d;P{vfI&*afnpHjRtz#O(F; zI@AA(pk9Jo6rNV5E~uqR97yG~_+S|Ur*qMEnO(8*S>4p(J4IN3;Tf+V^^l~5xagtp zEu&t8TY8aGSm?wsk2*g-42;m*J*d48L!_;@GPMyG>=4gh9HBa}tM=~9b-yUk0KTB< zT2T}e8uK~JFTY}JcJi4G$x^sEv9mq0)t*|)l)fzz_G_R*MN|&-W-OdiEBxnX^WZuR z=a^k^6uq45x17|!w;4NfXeA)cijE3rqFWU33}(mr874ZsXbYRboXtXC&EO`c++@r= z%j<@Z?nH;`KCJWc92nTARvBvk=Yeq`FJ{AS5;hKyq@FQGWJ^G=sI9W=F@eyPxU6Md z@3#a(a$9Cfx`Li#S!PHeB99h4dUVqO~y}(G4V;HqNGq6Y;Y= zh=2!nVJf12Vwy9wKXG8XZ04QXtMK9B9`79=nSvJi-X2Vgc}wGG#)VhN=GA9t0CE#@ zb7r3QdHIH!t_%nS&mx@0iXjTZrr`Vc9O%){i>3~ezc^8Xpnk1B5sps~6?l91Bmd2{PWx5LQ%+>1!|r}5@WVef2Mu)N=$VvnKF@oXG{5=A07S$}!ph4A^oO)RkPVpHA%i5LW8TxpS0~O? zier^GBcK3!;p@Byml(P*LvqSxqPpLZ0x%^C0@?@{J)V=q8g})wk+I};lt$}3t>Pz$ zFohQ!M^HJ!Sh@5iD{M7bKg7;}99Hzj39QAV5b3vH155aue|R4lmQ;cYx&^~o>KD9G_^VxDou}du(wE7UD^ET1q66WUx2{~AiXFUmh z>$A;EFiz_d1fr|yIa#jN;^H>lMCA!-D*gu6lG)Qv)%;H_>iftr!n7j#DmaiJ|8sh6 z>N38LeO+%)&PnJqNzOi<61U8;2oF;!xgv(Gcn$G#O5A&LRq3nAT4;>sjiZym7Y;FK z8$=4AbS&gn!}3(g zu!U?tfRXChi#8jxNnW0Z+w0%uL@_)KX{@H0*-$u1u1zQ`Sjkqup*9 zWy0+F-{XF;8Yksgv*-MXfgB;)!<&W{7C-1xZ4`A+FBG zt|a1|V8el_l7E*J=%7M+(%Y$L{TwB4Ya5T`K6*;2;6=>l(c?gf_1&Utf{SVGT4a7e zbYVS}M_tm*s?weDXe+pTAN8*kJ+N%!7@m%iO55?ZP0{d0bH1KHcA6@rrRP73Ubx>~ znEaWz-lwSATF*FddO}m8jn;^S^feBT3`GHFvpZQ8GTa9qbs|(J1mWc4J^_KUZ?F;> zX(zx$m2*hqIsqP;Ts3pP-}{lfp8;Q$`wpvw@H*r?^ap`r2HG*rI-zU1@D@dt=XQ8WePl~VIbp5w30{X+3z^B~eJqKnvRrHzI>T&=#w$y>0 zr86|kq5#0lB3TahP}Z|BD((E!uQ&Wh$HR(UJw{Buj3dsI>mNNEOwoUm|01cXg_3nB zy46{FL80~MEyY^pvy__r$8Swy21ZNa3T;FWbw^hLJSy+Z>`L2zmPv664(uLoS1Qjk zh$H513r`Qj9E%corlUP=I^2@6MwFl9Tf&lUsi!w?jxNu|8;@>y8wp&pcv@Rq^_Q1T zWO`QYi{=ox6#U(Ap6gp`I$vjvr-CY&@BlYG6f34|mLI_>BGNF`cueO8m|YB{jA*1= zt1>eYQ@>e^e9LJiVb`;MQwiL_2==mA?%tJ22h)##zVcL+o!z|hNup?Y^B6vBfBV>O z>ZEp9ldDwA_dYWxBW=*w$D|AvX+}-I3u|f7IkI3yZg_{qpv-x#9DjKa zP$i2OPl+}g|&>LnuR z+{`~N57{9f=-XC^<$rJx9rggZ{1ThY&pW&Ha^b_)TYqUcuTB~-{HCgk3Yp2g#$+|( z)hcY1fXU9QXKkEcNw%d8Wb{&#`}Ai{ZA5toK2VitqS0em2D)sZdJ{S{zyhO#%KPQKc+dAZ1YRKedfY{ ztFW_7hsQ(aN9sF?6-Tt#vR~_2)uk~tDJ^BvCoI0NU=Y~sqBtw}P zz9fV7BZ-a3KDYrj(!Qj1W6uGkevskFZce$cEHrcS!DdkRK-d@$NlJj_REO+3F7uyjmRO1;gRLRERBh zBed?it1Z)UYaEY-$cl>QLG|V#u*|$9txr!}swIchN!%r-*ZapRs`Co0>V6P@)7e5^ z7IP>>vc$2Q0Z{!hV5n$j&{7OMcv(VGnk`LLMM+CYJOGf5MEy*ep+ugqD`C;w{9Y51$HTwWvt$X@lU1@_Q?R-;cD zO8iD2a+yE=H#=K+?;`L2e7uP_Qg8o8B=Nt0^s77ff4A-*E#?1f4F78k|C}%I|D7?+ d+9ff$G0uM~49+pWA7cIP7~Z{AdBgen{{gcfBY^+_ literal 0 HcmV?d00001 diff --git a/static/img/Rotation-Mechanism.png b/static/img/Rotation-Mechanism.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ff2bf31eadb61c49b614d25ae70a6709747645 GIT binary patch literal 135629 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

ROF@8j9nPcdW1L#q$6*8blA(+R?wz}uw@ zEaM->e^PWza+?`fyd+O69(s3g&^1|IW3M0F{`yF_hhnmvmk9Ghb}E%LWo+qW%lmks z4YTO5;VsZuaslftrUAk>N&x>r0RK|Y1mhP0jv`P(^m{#-Hk8Y87plH(pRjRVFkls5 zZ_dEi$R*`k21t*3H*TGhfq8;11?953U40`&XiD)lb^9|LLrucNQyO6E`pvt$xQk}Y z?;pYqJ*6xu2p2VmKtf*;>9`gpc7Y=FWwIa z5<^3(1an>A*9HKQN~O##mg}!K>91;|KweQuKM~4aCB_>r^B|+N@Z)>V>gOHRvPPc? z_Yw^?vsa^gkpxcO;-wFYLS(l|Kn=kluOQN2U#Q0^tMKD6o$V$ZSX<_Q#Ng=0#~G|$ zgpS@gPkSi(nWXuk60?ONF7yR@Zv&&-kq0HyWl8;?!<3X}oPnzM5&=J}DAZ&c%=;_} zDNU@yl-ZUv5<8nj?;)yu?+8Es)u^P6j&Mhq?pm@oQdCWnwuA00J%R5+F;`X2l)HuF z$0tPwo~gdOSQ7Mtv?k|&#HP~PQLQ>ac}FtfggWryMWTt-_k_%Eimu%>V71xSVPXn% zpSYSkV0Za`M6eMqof&R6>aOFvr=Bm9kJbKK{%JMj2@g#^tmVd+K6fIBLM`@Rz3=OS zRL_-B#Z^^6?$0l#%fP6&h5QeqHCl zp&?NlikxG-jeRLM_Qwc{8;RuO=8M}xQ750UGEI2C?HmakO(MMCFJ>aEO6 z12{*`*2^TDQKaZowLn1eYXw`a%v~}9xYFIz7YR^iaS})<1?2S>6Ud~gT_A+8ZLcfk z5_$wTn>hs15bTQf=}3e#nBkcA=KZzZF+B(vGIBs&O?p9q;&GWs{p)btitPP&U$u#$bbMorWy!6*5-v?{E-&>!7333vg!Dt=Mn zi+IDsSdc{-?|jv|j$0%xLj&ov<|WWxW}!8Eg`9MgIJs^yBRGc}_Vy!s`m{&Dr><5F zrzYHVj-{Nr#b}0Ozwa}iAwPvuO_9xRHANEIA3eq?O*@Mzu!`N4oua0fAG;kfO_?>{ z#XK_la+}^sA$0xJPgtTB#z+Lm$QXZ63|UY)ofxX$EoJo}h&*R$U|Suy;dSu-ruv#v z6DH1ZT~G2vawl8|`^OqwC!KQoa!#HIj^t0Emv9?>_-&2?Fj59EgR!|cmY;Bz1HfF; zUk+Hl4LAofO@Y5(pnBXus-t6mUr)|j$T1uEU4NGtGPh5UJ#m!N0etw3Y$g#{g&XM)8E?u6x(_Zja`$wuh?A@;CF-U z;C+H#7=HMXvV6~Ia>OZ~LY)u?fgDq*IQ1?S>Re+qn14dEus{YvT%7)>m%q1a5q%!A zNFF;<{3zbOlsOTzLFFYsrbIt7kZqB4*}b{_rHLD>>kW}xsem#m^FG67Fwf^|Jv?}9 zI^rtm%>+F*wu$v5OmYDyhLqTse|(2)dyJt4Ak0(7UWW;?_C`#mvR1INTtlb#8|nP= zA2H{2oGgo)*agkSm=O-)ozc;nH3b}zog(1fL%QI4K_$X_-~ciRIUva(xCAHexytJj zgxd~ZTQeUI){4#0&H;1hSMa-@CYjXLqAW*!EwC7E6@0RHcHh~6JlnpeM*Awfz{!Mm z;~jhk1fM*5*-@*kLj*t1fj#qoX!?k!=KZ^48SEa%UBX$lB_PK$^3c-D0Lusg^q~V| zj%gW|nL1n`P>W!|R4h`l^%M z6Lgs&0EF)p7a9hR#O1{{*?i(GdkWAiStLAIM*5#=fi{` z0I3m)A!PTIheiAZI4SPb-S&gu+0@*Zl5z!oJ4HZx*Y>o2@Yy#9W!j0mmW=stLJ6Os zA%J7T14ph69rOx3@4bO9t&LJgW7=ZRk~ zCmxn5PUb3(zqBVddc*-@7bg|bok=4&VZBW-{3UK#`)vLq;;k{qfQ`*dXIMGTSqz4m z_&N@y9WLb#J40X_KY52~n8m7Xp>80!$m>d?L?ACg(K3!nfsR z@!CxdE7tZ(h+keYof!O?m;_T-+=?I*Bb|i>vuR#GTQGvWgMO(;)^x(W6-U}A$XL>0 zLIZM&;SxOrPCnA)y7lD=iItE)Hv$Fwv)0$5Ay6GmAjza5d@~X< zCU^5LLiF_(zkHI8w=~q(0|Q7>0nkyU9{#u(o}zq~%rd#Bvdr!?#j<~2ZSnts5xg$@ z8)aw#FQoTl4wL>yvSjv&QO@xwShFLOF|U3xAIz;9$e79i^7>${qjGH@CakU_7es-VDS}9cBh>drIWKWO{CNMu*AvoEk zUzWuFs*7zIir&#m+kj5AZ9`<-dve_VLQt_l{)tc)p0HvBFOwv`U(){TB8bw^u(EB{ft!7JnA=B)_68mE4Q|{asyO zuT3$IbW`+d8)kbTEZ8WPxVBS|^oSPCpVUs=6LNqyV2K@#3aIAZtadg zmK75XyLyvaHV;Bk$a83)KctfgYVCFCMiHNyVC)vqjc4-cqo0s1;O(4t7%>n+n$67> zbX1I2o=s_c2CrD^lw>aAr42;KyOyv3bqf z;3%d&t96XwpSym{@3Ea6{2B}_(Iugi-)+-x=5?D6?9gr>-Fi_Caol+~bO{Wpbh$vE z-qORG`SDoxh_0&o&$&#uiA-ns;BfP3abBK>ApicTz1ZWGAmxnXt`KZb_{l@>tY9%t z47*3q>1MQxjRhu=Tzzt){+Hf5eCu+XRukd5-&b`kiUdf?*HXuhQIk|_zWEL$*7~E? z?yf|r4a#RBur2SV-0?nQ*}#MylC^t0g0HkO8RIyzkaQaY_CwbZ4ZL46YFVf1jY zmj?l+WONO@m4Ty16J(7;OU`q7s8!q3ua+@LH@q9aSyr1yG1W43xst?wh+8SQLU}G& z5)eeI48$R{rvsNE-!vopaR62v*Dgn3^WFjO{%DZwnb{lK(DrFXLimj1t1WZEuc;<9 z&4q%m27jRnwU#}r%G1x~R_tdT`K59&nWgN3-l1A>eaOJrjB=qry2JiWu_9OBj`!8n zONBbUZ#FEvngri9$)~UiPIF_xkm(T6ln5+j-zhG82p13OfEhF^PiSgEVoe95TXx{4 ztDeH!n&REqououO3K~ZRpJ*>tO?hjpa16mBe~QJrmHVm zsM!mQChd%Zs6_XK51nMaFElKaoEGE0rBg_b=36Mr=aqb6?n1!-bO+lL=Es$CL)3^* z{`EU<$va45!iI?AzV>k{-C{S1X|}op``LtJ{}3LMXB)9|K3hd`eVnQO(@s4~YTcAC zjFG1`uD$9DUMop|mX3i2rtrB@Tr~^@1<1*Q33tN$_MnT1;(h92R$a*nyn1W z%?kEWS#?`+qSiw^yzDk)>g3As<`=C4yfW$QHs!|m1LKAVuEbTFAWj;J1$`?H!r?bgaY6J|zM znETDHRLlO;i9g#@hUVzORF;xB**-0bm#h3|?81R^ zM}l(xUi%}49Ai^*3~|OP(ZXPlo|2EH-2S83;n(h60sPT%zJ};qJrvOOOlYfkKxPeA z0w+vl%h*&kFbX0v6jAYkWT@=k9s%Lzcb^t*PS3) z3BB&Qhd_^`ccYq7V&yM8Qj^U77ELZ!^^X)THDcQiv^$@^rO3{JU5)uq zrMZvoIWxotBpfw^IW%4NaI{EPK>gVr!KPKq5}KwzD5aR>q0KVEJ_s|=!Fa6&b{I?X z>-w=HhC-4KodVZfM>Nwt=$#vim+Z%{l%FHEz~?-;oK@6`4rpHs zT*|Yh-3&_?;+w;kx8jp+lIQ*Ubq4Dh_1fh@;o0qmSio!+kHJC4luBFj@%FetywiKa z(?w7bX~X(3M9}cWttW)ItRK@lyag7@a^fl*P|g+^6g-alg(K)q!X%JUkxG+DPMH}D zoM!IG)%)gKyO|i-Vt6|A(vxA>A*Oa{-qhNfriEgH)Sqz8I~M+dp7 zrtS4bB!N{X*a-KcYDdJZ?4ND~GGklq=2E5hPd^gTzKM8j>qGK3hYq>a=vs5&@#hcA zO(y|}hC~Db5TQrNb<)`&WvkZ>v?Z8@Wk=y@K&pxlKPl=|Y{G|SJU8C)$-2l<(6;6Y zJk!Qd4ZXa-M%wSniC3tGc*?uTkZ!PlkE%XTU$1s4rrPivy;$uxI12P}3Mh}lQw(Sq zc%x5XU4*0{2mn9o4%ivIGNzFY6J~)ur&LtQ zQZJZ*IJPAmX)@Jvm^l*sQ&! z5QH;Odj*>7E&w#1(=8)aK{Bl9$4-Ml^MV2Q=s-XJp%E{R8o?v*eu#Ic_v&rGL~3g1 zH9&`vddzP$Jg@rPip^y@ZT#{TS5z6{)<3KV!+%+iFE?iov2yg=nVp_Va>ONzDT+ zMe0w0e?qJJfI$ceKEY_LwSrh%QCu{A9#}QvkwvfUo2=92YiC?TBDeU1s$(d$NK`vgo}I*qfp}am=fP^xsC-1yX==vz{POlW~w&10GzO z@Tb{vzpcfJWeS@vk8p?M28BGz%(9&}>=XwIGTR1l?JebolHL`f+ICd3Q0G;L*tC zy*eS$<0K_x8suf{3h3b2%z*UfIuwE{V`DD)b`h)s9DvDqLgS5dHk)^5Un8l^v4d#%7GUIvq@z+#*Px*NfdI zx+u_l&5RCq4ZdyVszIa1M-nqf!*qU|`&QF{KBjOh|Hc13T~7uU5!m}F`QpuA?Cspd z{LV)G2B#E-($&2DHEAz-96+4`@w(X<-@}~llY)iM_ug*qXx4Z>dN)!P+{4H;gC>}3 z2ez(oH4jcOX2-$`8OpPffa=m(y&TV#l2YuFYovwihlGbhtXKNo7G4gWYSMn$WSKD> ziCM6BbPXT0ci6sRR`A%>6veGzbFvghl$(P(_yO5>P)~Z(Mm%G6x)x){wN^H`j&rWSH!&y;gB2Wy-@3?Q+nm{2 zYbCrn`vHCq-}ZwWC9t}un!Wg1fjhz( zlS9&h)LfZpNkdPtzNhk?RK0g#00i9rk#RTbq z?I{$XWBIY!EDsMJGGwrZO$RH-xP44PFjn;5>wa`F$rBOSTh#L5OSy*w?Mc;$^3l*T zv`-)1GXHIDpXdCywUrA>2$hrG_PTN@pxa z`zXsA*t*QRdPWv+`4tCVkSfN+PM<5g+_!oco2?u$%?g%38+Eb|8CorkC!9lV)O3g^ zT`)#>K|8glFU*|fyo%UvDW&Rm_1=&PzYc668|12U+NZtVl&P1F5t4Jvms`HVNjTW4 z>o2qjZ)tQnjHg+_35jsfBxBw1RMsMLuzzt31 z1cCvYn2i{Yctb8dYA(}(p7)iMt2O6WP$epm0k&%7ZvsWpdd>&TD#Ubl^BfM}i%AQh z;_0iVnjUueyd#VqN3tCgs5PST^*6bYq8+lQ))9&t&XZu)Gtb4i71G`#`8`8bzjA#j z${glD6VUQT;G|ao9(*zy;Z#)%RR6$MCtusgc=~beLwM*S z^%Rh_XPYZD{AFj)l>%KyB_yl9PRdW$mB`-lb7!=w20M%X6ry2wWWjds(W8Sc1OuE% zki^Othy_?L1B{SQf8 zNq)VVr0P+{?UXY~_JJgzF+fh3FXKleHR7NvlSe9=8Aa2LSqRvDUYb;VDP>P@4bC4h zGvdQ1QHeSz!w!nUL%g$$9hF?u6S+HrzrRE#FVMWUSjNO6?1`+TUWbN*4qjeRR&rh} z#68)Vb(8ip$*e%Te}5r!bwKW~2jv=@NLCy?C;8AU)ndFKX!2;}JUxW+tlBV6VhW|N z@J-jm0K`rHcN_z5F>AL@25A3K)OHQ7phHQ07-L~!CKZVo~P4K7E`sPIvlo!Iy2RtJD9WC(j1)gau?|a@6Uvw; zW860Q##c?{{Joe6K7MHeKjmS@zI|+06m>Qq$?VU1Yjl=^;#C*7e9PHyv>N!}&e?B# z80hN9DYU*D$QOTn!{?Be7qo6uxzVG6 z(1Qg%JYdOZ(K$A5V*Tse!};{mM^M{sTPY)6Gtq z{#ou_4jvrY{^Rzr#3&!M}n^g2ghFvt#Q{S`s^{yPr*Mi+VZp3h@GrA`Nds~cBq3(-~Yv#;Llb-ocpXpW|;&dTtzwu6u-DO&JkPTLfBOC%ZaBb-~yXI%_KT?4s4*VUE9`L~x zs&cs4jJKu55nK_wqzok&#@xS9Tc4CtW~yfHB}wOx{HFfp} zpIeK$Z2o>MNX zMsg1vm!xL!FxLr+nLG6w?tz!biL;guD?S+Wem)~xrESmVm<=4dzsnV>75~s;6kpv! z$EoTvG2Wxy$KE1PRb;nwjF2CwZ$?qT+1g!&g2nV3rR3osn+4XEOM`-O_n$u@cQglH z??ql;GARBjjr9ygRH-YtzJgbK7Q^lOox*KRfR7r1#KH_(t+3;tE99?hKB?Q^OOX1|)kXP&vjzB;nf)2h{Fm^4 ztO$0O#bZ}GnIltXP652Po1e>}JBOR-;Z|_MfTB+FCw?UGpD@8~IdYft-?=(p8unCJ zo~GQPgSq=ihzfuCS3Uk;6`pOf^jpdV3}X~qn_PC(T>FVVk21@!Cw&J=g;$C&F&Ll~ zdvXls&OtxXM%2Pj7HStGC+No!Are%lyWKx<&h8JZe)o&J6Dq}ezB(-v=+~RT6CT?8 zGluk)XAq^i-9u_I?03c1@4eXzIo0kqBQ%4RTJSO2Wra~oGI|>0nq*1rAFOH6%}S81 z*+TOr14HFiV6*DR(jBL7VcP>%rIEr>9WDi}n!=IxC$2Lm((HvoC;xhhwPnJOk~S=g z4<+%I6jZVKb9LgY=W+@+x%hRMz-1=HeMDX~T+7TpyDtt0pMEmEdPsznr!2CuavIv~=2I-p9V|DIIhk9_yf@+NpW{L?2{K9GQg z!E(YQkr`~4rZ1=)aVqdu2F%DAV4zDRQ9OGKWh)gT72=OYnBXi%5aRVu_*|t7*Kh-=LwQu;{I&c(g|$-f;X3rMze(7v>Uni# zhwaKMzablc>NGNbWAbT{ify}2KF)MA7e}}8My}*J$x`^Ykl@)mjRR&9d@8&enFEt) zaB+%fC;8YY(x+)%w&n86gTPCPrHbWxis{?g6OsiKJD(=gTGLV!of7PwQ2r;QO1YNg zvB2LV0ZSDk-$kcONc!}+&KwUy-_nWW6V0Kux&1kg={QkmRDe2J0Lz}&ur*DDXW%#D zD;c^o5&gNW+G#TVOZI&x{$F%8I=1{Yg}4)GTPa`U*Peo*6iTK}{S^G-Um-tq^8xbT zk;Hgpy4Ydsf(Q#kzzbL_L$&$cy2&{*<;HbTC1$0KpDX43INmeO=s5pjVw8J|T$UD* z$iQOy8Rd+Q+cPojYJ~q`9`odfBBuh)ap14)V*0J-blpGFz9lz}JYq#P-Bkrtl|FN- zCj{m%@Lww3l#HKT9_G@4&TmQ62cuqyd*8dqd!cxQ=x7LfmDfm>2U#1CmW=Do5idiO zd}l6$vtj3M1 z-rm#z)yCYJdEl3GI$m)G510fyC<~t-&uLh1o2C7H+X7$F;uRWVXAx-NlVRZ^y6$0G{kc|_k^x>Zdr`zl1tb_aSRX$U zI>sa7s!kpZWuPmM2x54Os8{eIMC)Xhq7)6ta*FqgI+PIDsr8HuJ;ssROqLBqE zp5(o}cusG;tnHIQpq`1{zS91P4E@ zPD&yKD`HIWNzM184<1&Kc2Zr^6;=_q>=R;;7s7M!3<52Z!|Jf(4Win(ZqMT77AzD* zRPfF~ccV%-8v`#c+Yoo^Xne61s%9~xN>5p7%aRg~?;+>=MhtVsAhr+y7a>whH%gkT zVH^U+?!(E^|Fkg$_BNXJ)NJXtv`}r89|eaPG+Ai6IkC^Zu;kw*>7eyu!X*jcCc-YK zl4e-`5yU9*Bj{w&+X10ossD<)(xe__)1}*()T%I~l(zV03boXm1T?P5Q(GZCFF2tq zWpwC^z8MVG*M|u(BhT4yGxb9Sk?4{XK!`r$h5ixZc0p@B`cl6uFG5ieE4gv5Pp4Ji zE7lGKuN+j*>0{bG6pJaLz4oIz=cYVGeg@?q-LC}j-z{soE(?SA z?$wiS7B?PS0;+{o5g{m)U}#hG@Kj4xF8;-P$0$Y}IEh!Aa5e3sxGMopIU)uiwP5BIS)z452bkF2M^(li!l5G{GYKP|a-z<+1S7oOY8 zPJDh_TO)7D?6m{ zN~BV-Ez4haJ>b#hn&Hy%cz_7<{5!9rv*{g|!cH!&Ijlo2sU2sz`-tfh_vtLnjX)~S zL1W!ax-BK*TWD^biyTWl%s*3v-gD8-3RRJX%KU22+@5wLaN;^#$RAJuz}!WU zY-j`JrhW&n*dv-~fG%97D`jc3)vl->OscXU9>~}Ye#@^t`$e4!Vr7)bWUz630VdY2j8-B8fx(4&5DWu0iX$t49-7E2IujCfSZ`_pz3|C+RLEe?rN5s5uthnqtmy}~Ptm|vlP zuQgnpo5BEhxaY~Dxbk{ODfsy7=jeeho=+pZUbdZOFK?+b0?gP}`q=3j8DKS(3D03X z5N!*zF4uiR-NYNz7%IKsJb99J*u>_ntCs{x&mzbF!`D}ERn>KElL8_fxfbC)D)MV}{CtFZ_tdv5Yg%M8%jWrbR4)W%>nUf2Y~u!OaN24pl|UWO4WnUzX!hrhI5xtTgC`DE?)}gQ4kyh?P4GN9A4n8WJ>sYg_|aEDks!^ zLE<++tt5M<*p(c-JMkVYP&+gv40{Ci3HaWzk@Js)m#OH9!ughB^9o!PnP|;dJUNIHj0UP4|BWIFV zvXrGUXq}U|6BxHXCQI0WuxqU2?xqmCOBJdLtA|r#w>KP)*<}y9a=qzoWpPJiHp%=9 zzQ9c(<bYQ#w+hTz$x7hG%f3=X zu*NlHOpAbP;JzAKnN8q2eVuLN_-tD@A8yFFpQb}1NH)UqCj>KY^;gJEd95*f`xQdz zY(c3~GhF;hglXY|@#1!(M7*88xc@E1s@%v`t>kw#9hu&DIw&`9uHb2706x2h=FxO< zBqIOakuccey$6eu9&12`Fh$dVP1;vBcMS`lnCuzODzP~{!7Cx^x9>i6i-bYi;bc(= z)|LjQQ6oWp@f%z(Zhah~;?UYV#wI-+)|?M?9Xtx!S#Tx52n-Lda{|^h5mmGHdRmJ2n#ji^K?}Ha{=gEe3GpHv=<;$l*(6n>(g~~<0Id!qCQmw1LuoGhJtGIi*Uq%AkGU2;xPXW;%NUX zh~vIW)|RH;J?`<-B$567(fyZwUTI%-mO7xcya-VB-+P2)Itt_$V=r%Vy_=N0H&(hi znoGE#mT--dcyBFCL78sWf6R@0WzxML%1K*FS{URuiNqg=)L4XNl$QS^xkXcRrAS^f zIT-podN**Z3K2WQlaH4cf(%PpqzRA+LtKAm>Tn{dMR3P|RaDlKb1}l7NgSS+YJ38@ zqaz3rL5l77O(CDwN3DD*jm1pEUtff^nqI}x#-2nMNA_t5d7Mj{ro*hdc(lzsy|-NG z1bTn;8s0YxX|7&>)NZMvMEvX^Ug4U+O7iRLXBG%)xyzyQXQVHKT(|x#lARQ#W+FF7 z85Zx%K8l(OCJ`%sE@sj9x4dx?t11)oRz(4NavcrYZz!oneLviM{l9Un;WRB7M|EU% z>FF6FObm&u2^$RO8vLZOM8?>s%y4O3E<)2WndgOeOAG&}7|q@tq=0@9t-aRJ;dTHs zKKwE7?yQgs6&3T~>n-y`Qj=(oY~lIX{4)XEjN;CFdDVN>0|ol{8ZR|Yy(7u44zZ_E zDAs%`UtJM&AGLz2ypE+l?CXc&1r@EZ(cELQfP8Qa)<&sWeQ>#yLe{2=IX;@%{0hk* zT_e4Iwk-pRnE$E+s+3_7zecn|Xfg7lWRcCLQ1Jqa(D}m?#o?8(^2LH1)g@mQ;mLgU z$G1Q9L1nFQiy_iO6h@3~QwM+$c62UJPO~+u;%}FnF!JnZ?))B%G`EXJmv5~$4|u99 zN151gypg(rAfYSw`o`c=q8!wj4sVBXvNz7h1WMu)uDQ_7goawJG* zGn6==*p}9AOHBtF4rep{6YQeu{I>4e*V3j`**U^bz|3ug6X}-p?cphvkMIiAvINz_ zlKs2GL}}0;$zKf9ikrl?`(E@`H@0_qEyiorUmiQ|33AbWOFm+NRI8^&13GITT+>A)&(8CmWrg zeDqryr3@(5n#vmw6l%U(YL1&%vsoJ`SChJYs3x9I3HYR6W z$l)95Z13{2EZ@N);23n@ZC+zx!GsBVR>E&pBspYIEA5tE9*SIHVP?6b&VwmBdL}_H zSvSPVWW9)dRbX$8E_B}s{fUgKeUl-&7OrMFgw+5>kZ_IZm}tD`6p9P^5Py?|#&HQZ z3Yj4V1kgz?Db>%42&HAyy7gq^cF#FjjT7V~b6%s>6B^yu`R@T0lhYTciAz^S$a8+l zAsc5hQ|DH?k71tvMurn%^bqM&M1;h+AU{baFs#pq5)vi!}2i1|+YpXqj*8 zab=w2zSz^?hs(H8Z_WAUQ;0=vn%-~L-*gEf)rt`d#T2|$uiSCxaz%Hgm|dYKn-6{~ zK3Em_YE=9-!|~96u3q;~Bw-A2g=r`viAuLtlnr*W-4~UYGp44~zrQ2nPE%yW9vs}5+ZJ!rT ztaC}OST6Dh#1d&4@ul60V2RUj>%xgr4q5B%O-exJLnH97G^_Z9GwZG;PY1#oLV|QW zcU6{;^R7Tp?+jW)KcIy7fDa96anWe`gzs0etLjV4jE-R&Py99)Wn`TkfdpXPY36rwxgwDU01D0b;z8S}ik| z(eMK}oa_S+2rOpY-F0RV`7QgVJXyv8@=s*M{CBV1hiBX0&NxY=zR3$RN7I2Fh3^}? zI4meWYo2yfD)q@k4kih_@;$3qIFql0+Fn z4M-qTf9;+rgKs1jRHm5A?0BMFcMdg3fK%XB*1e*u+eG;!ia}0CbFLhS$G_bYAXOz? ziQeki1V)9gQa#Ocuu*;{IjgVd1IYrg;?vCawtw*r`Ws)CrEgyCFg%Ri=qn|Qk^-u1O_^A8?RVbB8)#(#RS2g|)SHKwonNg@tCu;aV53P)W3%MAE` zF+*YX8<8r{joqr;zJ%U*ZhOe^2@pvy={magoSe${%c8Y@O+1hF2O!o((y5CEjst z$?TTDXb~(c-MOx+Dyn2Syo)pZ3|IxjVW=47gJV1nC9q_thy%}5yyFoU6Toko{_b1;dS3+ryqR4^kYZ;|bgc6nbccTOoFgSUaI{wbHepkBydrP6Zx@Ii9Hb5m)bKA2( zG|EXkIUxW{pNQe*>j-7MvHK~ym23oW&h&Zg0&j|C+7`Z;jzY-EmFaYR{=M+5DQl01 z(>I_6w)DkcIiFhUKZUHgcS@srqIo>|83R_q6~tR2etRy!8_u;-zXTNZB@X}*RCOiO z+Fjy5n4tcXGF?B3mf?{=%GCG}8;!T~FDhLBg-V{9v1VS*X6jBcPhrMD(h{q*HikTj zvDX4sf#@(S#!l~9CXpsx`>3*DFvh^AwgZeOJ83MgjKscvQb*QvYjXIX3~>41Wa97o z(g)s^)|29KEzj~@fdbAg>*j=n*Uw}gxzvk6=k066i2;3mNdw37YBg9b+>!%sBAp1s zdR9r`GR}4Vya{RkZ~ATV7&v%+mt2f(|2mG#e>sly>cIQFDreRZ@mK~1UEjT=mc@iS z4!>`~#`Iff(#_B|UJ>-QpW41ITK=h4BQ?o}uh*AJgY6hj$L3Q)#nim{X2SvI*#9r) z_!<-ZE&5r!W@hrlcSpL=8W5=!!ekJK6}JiSXwA`5MG0S(nX7urUE#D(!c=K}F z#R<$oU6G49k~GpE-I8F*Q(gAh_2z%PF%kZ6x8XYb9jqKBJ$WuQ${fuEKDQXpllHLF z^Ogbp+(p44*%Fx3p^RneCVzjfe+;n5Y}^`{p2VTtN>-B=GYJK+9YCV|A0*U>|5o;y zs2}MAqor{%vV;i4p_bAfM-hTAZ{5>W>9+@;b^< zTtA1Xts8p0anNOtUvK&s@xODm!fG6cSNL`ER-_o;yEEPv1Z*i-)K3%^C`O;rWu;b3 zg{#Q&$Hj~$n+fzEa~!kGQ(ONY;(xM2^qG%ubDG`X>*eiCWqhE06d;Y5^<*jFS2|tN zV+W=a2mcmj)KWcO?r`Q|UplPy$x#o@duyK*sH}9fP|5ia$*hBlHu8dF&V*jQ#AVd% zANv0EUq2_awOV%9`QbfChI?(n_gJ+mL~Lveasnl6y8klqVPKpKftARQSLy~x+|O%O{MPNxW~p=&TpG$sXaDaM-3QmhStQ@@yHo{LTh=Cy zCQ)afvI|@Me(Mz-q=vQb-Rwkh-TF8WGrA)=jUF2Y0FWrx7m-V!uaic(^V0jp;2aMk zMofC9CK?|Z>id)OScmD_wvJ?jvqUY%s|%>QXi~OE4OkygFeE0;N66}{;Dl7Ck@y+- zU)V;IZUoQ5_A0+2H#!Ob!9C44VX zpft;zBgB0&SX*rX>Fdqxj6?l%`%nTH!PdZ-lNhN(sg0#>#!qjha2J53xqB>`;@5e5 z?3`LlpR^o_Y#YZ#v*YxdrIW~iXiraT${mKy=OMrb%7 z3?sj*tF~)vU=LaHApA62&U)U+XZd-@zypKoR8~4O*caYW%jJ^f_4^VH*4w*zO@qYy zLuB`<1k1)^dBWQ^^O3a1%krPAKaJy6w-X!V;KXjB=+&i1_n?7m?1AF5hh(uA$s&t^ zcI}cg;i9tzUT#~DAHN}s`kvY4H><6fv+Ar~`oT~*e_kpRHmQ)B?7aa%vL9EayOB1&JiAlcM9{6_A!7mmh z3d7O&x=6^%Tf1hQUm1l?2Vt$j z<|FAtEzY90KM!ng?dCF)9oXvqH2-6+>H$F42N_*gGr@Ir@JG4xK|1roRiveoOzWkzr3F0ylA*4t8N$xc}K9s53Pc{THSOwJt1wGQja`j1@0#cz(^w;|enz1*FuD`APGkt1v= zJ|`3;bGx|-|8CGKxIbMHTV&`h`xs5rn2;Pp+3FPg)onY@jEfy@VaV>0^6`A!Z>x%t zJ$!k)>{PCG1ZcH@p!jT4DvPj=hvtY~MQwm4#G=UA56WRDZy?O!Vm@{Wu<3?Jv(46X zyX!%lNGL+0qu7Ia%970J9dGMSyX>U-*|En#D`>3F3)B=HBy`*Fu*HAn&F2|)dOg`r zbyr@*uE%n{hoIm`@6!MhxoQ*+y*Li3p9EoE_2p82c-Ll0xh(&9RcnKj>~npI@8zX{PMQb9~P9y}%w2iJ3ucYe!oZvAc<0DzuGb50AI75-Nxe zu(0sW)sh9ZZ5@+Mupt{Px4ZtIAHvpS1+Yd0z#6~|>J{{1O(s9+Yj#vBZ`YdBRG#em zc>gqhfUX4jmCxB_!&%CdlSTW(b;z6eZpD*55k6rDu@=}J-1xkx9_8ja{1~Ft6?XrH$>C- zm*pw$(}A>cx-#$2l+b&Xy6h?OJ5TY8Iaky?I9Qx94$AMSLwJp6$ULlDua_zI;fv0R zxP?mW*Z}KQV$|8(Zi9qom){__xZ+*(VER2Aw)$({cGDa?!&|6scX(%YwT!F)k z)Rd{*i_&6m4*(ASO-FU~y~`ri;dUdTQG?>W@XSy?uv;$Z@s*r;4ZYl}wOu5jrc-pi zAw#1%qMm}I&I_Se z)$-S46TDu(3cc(t(;qlY_SF-2lu>`&9@Fg#Ph6XcAwlJU4GkDo+#VfkN4~#{N*B;= zJLWdZRs~6n+EGya2E6eva1OXk%#>MPSN{l?QB{hYz;faR+H9&>T8GWFOA^5gEi*yt@yVU1VankKpf5RuK8()55MCIP-o6>COG$u`hy zZbM5ZqPf5d?h$1O<`0?NMA{z-b`?jbph%?iLni ziB2#8r5V2ngukp@I4&}s7+V(Oc9=RIK~RJs9@S)BF!FFpDUlR_NM|gU^7nxIH+(Cz zZLY=6K)0EHHVW=-8QU{sJ)`!#(_z1vjoa9lhAGib5`ABCpx=(Ii7{^(pf&f+d$aTk z%(a>Rk304H2!Kd2S{j~1R7p&?emO~v5}REOP=+OJ>|^Es=*X|5$2g^3$xII}Lz(i9 zasq<$jDd7Q2>1F_G%cS&yo(=NM3-k1Ue?HEwVKYw3K0KgF-QhgS+)AIyvs2(`;mER3F{>;CBV!f1yr~%- zm^Js9@@n6+j|B=gA_$^fSq$P(bhe)k~W0n#G= zNSW#^p7qJq^yu%hhUapscac;{UeBl25>&h-XUMl{dKvhDd(lc+UZVG>IeowAz zc>bd~I2TB;@|I#p{qm+ts=qq3AR2lJ4jyY}YCHZEVBhf8@+Stbrq<0EXMP@AdQa<{ zh=S+F__)tmRUH#GPFo{2lynBm72#?6B8rV?ES7`6Ji1V$Oxg6!)60^P1_z%+Ri2x1 z()GMrjOQ1gEFDJd483u6HQeObTDgel;OLl04ULsE3zMW6Z+LEI*2k~)%f8nlj)mrN z<|MC_fcAm=tknFyPe|@9HjWHw(Sk-!VN24N_uD&PtFJZNWBJ^@avfRpNdVuSY03J- zTDao50NdAvC0*Z5e6iG_*M=yGVWo(HL+G~RT&$;cwr9bWZNN@-aqqw9yA|%V{mOjS zpfoy)lkPItuicM_itv24>OptywSTP28F^j z&zuLKBDah{qgOPd18XvHUYTB7 zuW9BLt);f!$2JO3ipvxA{FyIGuzcbJPs7X9oFl5+0!m`%Q##Anl#xk%xjs|4*6qJ5 zL};dYgc@&erVbv!Ub=fSNDsnTwQW2$?K<#u78*8p4QAya*4TU)Tt@<^{y6PF_VI)3 zQ9+yC{z-uP>LX#9Es&0$%$^OFRnA)ivk75Z{$Q~dONapx@DH*tBW5@TwcjpPNS22T=aT&T$ zeW(O;qdy>QPQ2!Mn;e1||5i;vGfhFhVsY?`y;)XjV$K>D`{j%MMU7Ge`i8x(7}?(4 z))nBm@J)~TLFNkQHwQPqkINt+Sy}0aq(7vb`JT2WU6)Y$#kFQ{3%4VWG%C8ZOhk=e zh>VHe85}lDe)$+D$z*piwbz@kM{}Hz+%6-jsp0TAQzzx3SKc+@Ly*-reJK#RrbQ@+I2CZd6 zB7%@pZcE(3wr^afI84UkT4?1m0Al}?j^+k2^d#}}Zauq$z9o;w3 zQ|TrbxdRiM5YO1J>ZtRH0h)zL7#_aXhm0)IA8*Sn09e`)F!<^XpZ|GWzfZjRVDR3% z4t5&5UeV+WNIB|%SL+IYNVbBW6g`aUQFKvF5}U1GKoOZU`=h_gpE3_OMwc3dbk~oo z!2@O@?aDDi$j3wm+x^dh7}zg3XUCU!T}kA$Q3KZy8_y6h+CPp@n9m~qB@_=|c64() zMN4b@oX#b;DqA)tqHqduerKfcoX_)1EuSiTr5&FFNZm<5k}t9bB>6Q^9b`ZX{Dh{Y zoFHGh$GOw@nKH2v_ypi|f*;9>4zqen^vsW=XWF+HOUbMsw8$>$RjO3 zk{9zEiC-ywA0qgGMAJ;u(hQA5jmJtq=fp=r=Wwc9$~p&8uQ;>s#W*F8GIAETWH$nj zKTY!TBMxaY_*-f$CnNwP=cKv6--ybjcBD>trsrWVc+Ue2i13kw_>FqJEnch(3E`i7 z57zeuF2chI=G`%6B6#|SY-~Euj2xl{Mz?sJSimrgu1*uz%l`cde-}o!J=X&=WTKy~ z+w?RrMmL^)o_RJy8hUYad-$=ycJ_JNQUqPo#8xt0d#-Hd@NG&&C}2G`)=IH5z(FF^ zz0i^qLpd@gWroasGqsG@v$4Q|BTRqm>3YhgLt#=!6ARLkHXbXE1yq^_E&4b0Ds0Pn z4OFHjs_kbXNw0IaqMdIG%wjEWshvc7NuK`jGm=jV@rQe-TZM7yoBg;>F8~vb0p8(V zz;9JftyY(Ed=!ZtPe<+8$7W_|*6pWO3H8zlm0`Ls?f%X<$zi)~Z6>64`nMg=k^-{z ztVQXvmLv5)a?kEyAb0X;w!AE1-XSnXzUfH2eV0fG_~5!q`VEfV$Zv@Y-#@o?Tr3^K zS!)MQ)KQJ9lEM;Bl8HBJ2JfNy{6CVFPp9?73ill#lAxiv%^Kgl>I$y2aZSlB$az-^ z5bcA%xZe;x3SC%vKTM*UK@!83TR|0Vmv#!emHozE%bu5G`Ig+YV!%4vDP^|SKNdV~ zUrj4v0#$_3k?ABD^-`Vt8lP{86VU`wxI(QYe=w?)Ic ztAHvv*F1JxO$ZzsDEE|#9(=VMjpib;DK9AJPx4W)oJ%C^dLBY-Hfb;3K0G4#kRcUe z^x=JBAk??=NtZA7AU=3{IfZOrY>u0+A9dyhx zeEHpfy$Jggzbnh3HO~@o{DY$9QX(NCn_)-xy14ZGx92}ibQi=6VqnaSeG{jxv3XG6 zW*&4jnW>hj*Fg2cH`a~K+oby|uy3(~({bzuaU;?_Z}F5F%hL|D60`3mWt1`_j%8wd zx&@rDGg~AF@^BNIbqCSIM^8?1Ih{^btrv@WJw~Uk*6Pe#y~&djULBu89hQ(-&~>)H z*j4#`NvNsfHXrcb-q;Q5rXLVaaO<=NX@i_H#Y}vh$$AyisbIfPxxv&x5EHj^jg;~S zz3@16pTqo4!Fr)te<0qQ2Ls(3iiJl;2YFJD&L@2ut*CPop;y*X%Mnj%81#a??`Xba zvq=Zg{q6(0QUv{Sgxw|y*^-V&ZZ$)KhVCZco1M4SedTmCd|O?=N#!GB*YXe}{ODBC zLU;YJBA`dohyxOP3>t?0+A;jJbvQm)MYsyca<#|eQ^>jRhuF}|STRcFtD&eOoTQ!Cej^L#fekK}pC5{4XNMa$gR z8bqL;NxCJL^iZnW4hzmVCB7Nt9uoI$zZyDm}yXbZp285Gx z;hcWkRp89Tb*KB~YkunrKz>ZX4s{HMw%q>l`mSA57}4%aco;{-NG=UeQ*L zO74@1RPA}Wk9oW2MLW(56VVK0>u`qHq`MxG#Xxe+PXe2J6RkqLcF}J91U|qe z#oK;_7$iL1l`47B-ZUL9`%?iW>7?r*3YGo0Vyk022A&&=W|Vox_qGDsJWmo@IhX=C z1JR;m97%ollLSjAHKdCnodWWWG;iv-;)^>Cc@~>P0)*0s+bp(HfZfyv*kzf;y;C83@Vokr&=Qe{-i5zJ+lUt`;n1-DhwT?y`LAU(5+3)Q zg!)FhcVkHJP?2mLp7#{6LJPhGz1f6br+>6{1>3%O<<)g4dK|x$+T;ZWyMeD4owlR2 z`hwmV*vj8AYuA&NLFxk&d)yk4Ib70s1S4M| z*`MJtro7pEZG>gB)Rb<>wqq|6E3>%*Q2`2;pe zD?U53cJ%Sj$JFE+77p!idlkO@9-Oh93#%u0He2*Z#&dbwtWm3t)8S6+U#sVF#xcaw z2Fi&Mq$1D#n!JTTluMawdxs!nKG1VD=GrfrZh6pGmWyAa4z~FfD|wY6kZM7IC@qD; z<}ZG#T433ArC$q6ppVYr2}V;Sqtf~_|_L`GE^or3QXw5SmH zHdG&tB^jzwz_F7=&)^(agjOntg9ecH@QO>O}c*XSD;j% z(aV?KZ6FX0I|IE~#}1dz%xbHQJL8pWf&{aztKw+2-OtLRA3F{72}hR#lO;DG{xtnc~J zFl!q#-$Q4;eu*!lzBU<1>(T+!ViMm|Via6QoFJFr#@T0C5z6pU z$>i%pL>-1)_EkfyXA6XcI;$qJ-hY%pgx96>)dvQ`a4oCiP1v~f@{8|-0(kEvSVQ#l z5ewgY|Izb336r}^<`x@M$0(JvTWR}B0X2y%Y13r1vDZ02_B+;0o|Y{Izs+d74e~5U z#cfYHb_*`SX`hJ!;9-q~J&N=FaZU1Din*6+4}1Iy6TKVRy;7e+T@p3c?y5s|^f||< zJDzyG)FCNsG`7n)`CTnGQz4^Z=*ustk1aB?9$X|rv$_~;aDqy%=ScI1!M803c~(MG zd#hl6f;EDT{$2#hpd!Vr6+LCG8eO-;ZoSC54YvRQwMU{Xs*CQU&so=kHPHRKgUV4o zI8(#!YX3;KMz{^`rOZ>}je?#B#MJ7K#^G`7r7s5Llng6xxxZCzpk&>WggJmBn* zyhBm8*KLRFlL;5mS8rbV#YxVcFgL1GD+-AcWugkdCx%oa&>p(Q6`M(sIm|~*UvzQ`+u5x5vs)ymLOaN1Lgn3d5^vCqkijrq zbfD4HM}`@W>-*IUfL=Wh&j%9EQ+n-s*W+qqseM*w7`({HYUBCI9FdMvn09*})ZV zl6ch5t*y84!+mKXgi+6Jf}qdUe^dkbM4D;{gw;nwR}fKZMq7?J{^%^Rv!ZL1#?|BF zH^LDFMmn@Tl=BaX`BHs6w0(;}q+z?+lLUupM?#|lw_%1TD&uPKa)A%>OqgtyH@ZXr zCdy&#=Eb%9={26GL!kweYgZTrD{Aq1=)=ZoG2kgPpw zZ#f{8Dsbm-j8XGxZBa^Z&A5j`y=%{M5cF&sGhFKKJej}-DZfExyN?;G+PUS&rjrp~wd_WbR=a`b= z_nyi~=MKE*Qm8u=D+PM+9>XAaRs@}Qpnxj0ZIp5ft!3yv<7c&rda&^?)wh`Xz7j{| zUEOx)9_$wBMQPg%R5?hM>l1+}A4V#Ynhf8W>nPu5#@)rvJ$s-6zFhVq*+d`r711R6 zwE^cV&Y_<^$;ic@wfz01x(DxdoreGt4g zJ8}GLB>ksKmqZkg3LN!IBGK7WO~X4;e_Fy@M42d)tR^_6RHnq9RlV2yAzF2uVjQA* zwp2bjtse+plB*E~^F0c3HNr{L*m91}AK?u#>*NLrU~K&Q8WJ{WayzjlX+Wff)6vx% zlRT*V8QnA8uvk(ekoW$7 zIEbNB>)fQ~H@?Tn&({-yM%HIzJ5*a3gI13ZECKVoa~oe!Fj;@^WW7HKHntrtBWTGM zS&@U%@g%@$%(d;=`~i*emH9Oo?DLtBUIZ=(W@q6Yq<;C8Vu(a>XONKXGMr8TU z6i~r8B(9*qdt` zSDL*0jpmI=OOVmma=Qm(r9M1ydrRqux-HgU$Q-YzB~Q+rqjt(QY6ylVo1Z%kF_a!J z9Ca*2G{014HsD;wnmFN-g4)QRR5hZq6)MKY!1bo+zqOMNvL1KDbaTxhSNgZw{mgX(XeU##q2ov_>WO4V|>Ik_Spd({dQ42$j8JYE){l% zopc6*;NHULl66Jb?f3@_vl7hGXUXH|VwwsiP}qJN}lUbeSR6r$;nzB{!X| z@JQT4tEk5Ze+_}C4>T!l+`@-oZw%#~So>V&0`Ak&uEjlL(kSb_vxth95*gGe?VhMZ zAd(=n{LXwPHB^ooLpUgT(xsR&+D=Li|H5cQ>OQxeb+Ts1R&?k*c;DB69a-NzzrpxAiTr=TD@jC-N^tSq{M?(%Tqkjpd_PGWAj(Ek`v1OiUp5atm)P2Sq=e1WoZQPLv z{sNX#RDl8>*t_An@Ko+UybS}jP1f$BvL)@Ox3;KkzdV!Aa}_#hIR3bYm2IN`lI?3K zXY;~EU3x?HX*!nif}pe%oFfOJbvT!q%RSl}+wW;~;~2q1QBMirk~o++9YGZYdT#-; z*3^wbH+st;y?7SZ4JV;0q*+aHh~Dr4v6fpeX4Yn&F0oAS!HW)>TMY~Q68#WxNqYX^ z=zz`{Wok5lOw@;ZG<1N#=g<&zsACPKe}` z#0K6Alh&_wcPJKq^K-+k$0O?01i>cg=%l%`P9V4H7r&;8(#Qj;i^QS^>$87i5{8ey zKJ|vzCj#dW3VUlD_1b^hm!S7rLLL=`g(Rno9((A5k3Rv!B?b&v`AS4Y*79>_p)@n@ zhmc3#`-Ul*Zr6*ZKdeF$<+KP4{PV4Q+&YMkH?NrJ+sB|4t~7% zW=TS_S3pd*)v~9?9e7UM=+gB(=5)&>vy+QI3wfk~0FiY9UX1}SN&I4Z{jp#K6}vD$0;|pvbC$X6g#(^@c%Z6ow{4X~#QxN;9>u94ZJm=W9z{V&9|ukev+U z`)mKWH%RW|t|MGHwNUKB#y}C5>I|a6jaVHKyT6J)ArLJdI$VZ)kj56xu_+=5Wc%kM zvGbz4?-DJeBSR!^QMt52;=MK(Ob}h!^oa zfbmTn54`~H6wH7S$nmCjDmwAB@YAC zl9a*)UZD>zfLYE`)PLI`l&G)TX(YX8Q8KsV;n-RKj9>B{*h{9G!0f!1KHkGW`A!o9 z{{*;P{+yl&-0VBKE@|K~$uoeKJNnQjZZzIEsSU0sYCzGu0^-#%WaFC_0;qCRnR58a5C}1e;zD>E&5-}lKGvvLl`HeS|}%_M9L=%iF|&A zOIKxME#{o!V^D1?a^GSzrrhlYQ#1&X|^H+@TJc#2Q3vm?@VVl-8Ze@Va z;HY{SRifulN8-tWwMIkJVll@2awxfHd#2i-e$+Y%(m;e1da|%7s@FhH15y^P7Lb<-kliDe(-0{{fG6H`4JL2I+`pr5<=NF4&q2X#H<^{L+S- zp5fyj`rMnr+Sh29G9fGTPB@W*C9gA&(C+*3e)~vgLwLANQQqTA@3~`+g6B$R?czIr-NQCXPMOD>urP6ewof2e|FPWy4<2Z7-_R=o597P;NJNeSO2<4EUPVtLdh?+ z$8J)9y}#$)uvqUS*|m_8<>$$igE(FWavNXQ_djYn@7^QuulZYy9zmR68y0ElBG=~n zL8M`6v1nt4IgoW1algV46)iD$<0w(nAz#xaM7E{Y(fxQKI|HYM`oMCQGL464&DB^v z??x|2_zrKu7YW4|2W<~57^CosC4Qsbb5-Zb`4CPn8^J}@8SD81XRDX`AukeMnaMHg zQw5&$y!}+%6ZRCh^-^=e3p*e3C$YC7_cYD{a>{w+m$;&LzidP1DA;lF;iE`rIgFH6Q04FSe2mtE+c6L!-$n(j_q$e`j*j{{(K;3?(HV+#WIX zPb!0{EEE!Gx$Ov)<&XSE$!}4KFRDE9E)}{ds$R8wXlzGR=?xk9hUt|^+d5@NE|C6xzrC=Ki8f2MnktRe&zL69`k%!`5eAL zd%*ktzI-`_qeoZWfQ<=(s6Dc_uxybd`9K!aX>J7FwqK`&yX}5@)=;hOGqSclTY}A4 zZR+jMmL-M09&-o1DjkMTryCAm`M_V05%qXH# zm1mXK`-eF7;JQAe4>7)>590AB?H+d`9NxkvdgU}z%EF&OM1$~00;^b$MTX8_6V{UI z^Jglr$W{m|mB=og+s(F~Rm+{qBA{=Yw7I%W$kk-=#`wVXDiwV-?Q(x_@YEUA#K!Z( zE}u33z3p*8U_nbGQqnh_HjH6VT(~0hXSHxpM#j0@V_rRa*Ju4YgOkrKc702MC)$vj z1V;Y&CQ(DRS7}#{IUnqTU9yoXT{cd4pCx)}YSZ)n^xnleTEpQ)yQ9BQYZ2XTABzol z(G05cUBvvfQcrH1(B2JpPkBnU&A6cuN?h)6I$LWrenGqbCMdGlk^L$xJSvlKL2RTKMJJ)yswNg&~#&9zrKrf%IB{D8OhJfG{kz z;0t~G4Vk#Zj0Dni>OZTqceXVzD#)U3&K7vQdi#Cw`t@A>384)g=4|IVas5`KC+j_B zjVd0ydRjyhgSd^5TaJ${{fL=^Z#GNjuM^==7)mr**F2u_ z#N0_r53Y)u1brBbQbOzx#)zafkw!TTpaTK(F|3Bz9J4u%`RDlB+EC2>=ZGj`qaO1o zNF1d%h=($&JwK+kyw+MiQ*Ev<->YiZwgYl>>B#x!&}a;98|m`-&~A`u-hUFs-azzK zYXQf7Tcpb2-19dSg1QcZG!9GbXXA`H!jxI0sc<1DJ>cYc3f0!t&)w}m=eJ(o8@@1s zzan!o^{8(>1oTN~FuTDI=7z3I2Km{Qusj6Ymp2r)o=Jj>jlBnJHg{J(4(EupdSBUZ z4dN(-MatU?HPAa*+K&hyq>_(&Gj6t48`{zCq_4-8VTQEXr9cK+mYf&M{{9z8%6WFJ z1BAGt4$ZY2!%TeB9{ea@`cnc#ap*wq__bHNlB?UsdxSkb_1zntwcMVRS$qWbb?)xq z8C~?+L)EbDh)_9(8nuH0Z7+j}C zsYg*3e(}%=6Ry;B?=Uea_H?OdB_e-Mh$`djo0F*%02+^WZgKB06y{qmc>b0T0zSH; z5*#^7Vij5x4f&ZPEC$N(g%0Sg#KB3E&VBqnJh+~U2MNS}mUW8o?w-YSZYVubigZ
+ +

)sI@zRVZIHa9)}tK{Y%5s2*S91wB* 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 Date: Tue, 9 Nov 2021 23:59:21 -0500 Subject: [PATCH 13/26] edited rotating towers page --- content/game-dev/part-i/towers.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/game-dev/part-i/towers.md b/content/game-dev/part-i/towers.md index 2fe4ec06..72b5a8b3 100644 --- a/content/game-dev/part-i/towers.md +++ b/content/game-dev/part-i/towers.md @@ -23,7 +23,7 @@ Remember that in Processing, Y values increase as you move _down the window_. Th ![Interface](/img/Line-Slopes.png) -The slope of a line is essentially _how the hieght of the line changes as you move along the X-axis_. Take a look at line 1. As you move along the x-axis (go from left to right), the height (or _Y-values_) of the line decreases, and so we say it has a negative slope value. In line 2, the line's height doesn't change, so we say it has a slope of 0. For line 3, the height/Y-value increases as you move along the X-axis, so we say the slope is positive. As you may see, the _slope of a line contains some information about the direction from one point to another_. +The slope of a line is essentially a measure of incline. This incline is determined by _how the hieght of the line changes as you move along the X-axis_. Take a look at line 1. As you move along the x-axis (go from left to right), the height (or _Y-values_) of the line decreases, and so we say it has a negative incline, or slope value. In line 2, the line's height doesn't change, so we say it has a slope of 0. For line 3, the height/Y-value increases as you move along the X-axis, so we say the slope is positive. As you may see, the _slope of a line contains some information about the direction from one point to another_. All you need to calculate the slope of a line is 2 points on the line itself. @@ -41,13 +41,13 @@ There is, however, one issue with using slope to go to an angle. ![Interface](/img/Rotation-Mechanism.png) -In the image, there are 2 lines going from the tower to 2 different balloons. Despite the arrows pointing opposite ways, the lines the arrows make have the same slope. Lets look back at our deifinition of slope: _change in hieght (or Y-value) as you move along the X-axis_. Both lines in this case are inclined downwards as you move along the X-axis, and because they do so at the same intensity, they have the same negative slope. In this case, we'll assume that their slopes are -1, which means for every 1 unit increase in _X_, there is 1 unit decrease in height (or in other words, decrease in _Y_). +In the image, there are 2 lines going from the tower to 2 different balloons. Despite the arrows pointing opposite ways, the lines the arrows make have the same slope. Lets look back at our deifinition of slope: _change in hieght (or Y-value) as you move along the X-axis_. Both lines approach the X-axis at the same intensity, which means their inclines, or slopes, are the same. In this case, we'll assume that their slopes are -1, which means for every 1 unit increase in _X_, there is 1 unit decrease in height (or in other words, decrease in _Y_). However, the identical slopes into atan(), you will get only 1 kind of angle, when there should very clearly be 2. If we assume the slope is -1, plugging that into atan() will tell us that the tower should turn -45 degrees for both balloons. This works for balloon 1, which is on the right side of the tower, but balloon 2 on the left needs an angle of rotation exaclty 180 degrees away from balloon 1. {{% notice info "Recap"%}} -1. Slope is the change in height as you move along the X-axis (in this case, height is Y-value) +1. Slope is a line's incline, which is defined by the change in the line's height as you move along the X-axis (in this case, height is Y-value) 2. The function atan() can be used to generate an angle from a slope 3. We need to find a way to differentiate balloon points that make similar slopes to find the proper angles From 3c73f97eb2fb3b2028fd0540d3d3214259978ce4 Mon Sep 17 00:00:00 2001 From: Averesoft <59520795+Averesoft@users.noreply.github.com> Date: Wed, 10 Nov 2021 08:00:46 -0500 Subject: [PATCH 14/26] Change TL;DR into notice --- content/game-dev/part-i/pathforballoons.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/game-dev/part-i/pathforballoons.md b/content/game-dev/part-i/pathforballoons.md index 195a230d..6c779dda 100644 --- a/content/game-dev/part-i/pathforballoons.md +++ b/content/game-dev/part-i/pathforballoons.md @@ -111,6 +111,8 @@ Check out `Path.pde` if you want to see how our path was made! *** -### TL;DR +{{% notice info "TL;DR" %}} ArrayLists can automatically resize themselves when you add or remove elements, while arrays have a set size. We can use an ArrayList to store the points of our path and use a for loop to create line segments connecting the points with a large strokeWeight. +{{% /notice %}} + From 9fdc76ce7b138b63ba3f044976e6de83f13b6af7 Mon Sep 17 00:00:00 2001 From: yeahbennou <38169671+BenZeng04@users.noreply.github.com> Date: Wed, 10 Nov 2021 13:00:17 -0500 Subject: [PATCH 15/26] Adjust weights & Shorten Titles --- content/game-dev/part-i/_index.md | 1 + content/game-dev/part-i/draganddrop.md | 2 +- .../{HealthChecking.md => healthchecking.md} | 4 +- content/game-dev/part-i/introduction.md | 58 +++++++++++++++++++ content/game-dev/part-i/sketch.js | 0 content/game-dev/part-i/towers.md | 2 +- ...pdatingBalloons.md => updatingballoons.md} | 4 +- content/game-dev/part-ii/_index.md | 1 + content/game-dev/part-iii/_index.md | 1 + 9 files changed, 67 insertions(+), 6 deletions(-) rename content/game-dev/part-i/{HealthChecking.md => healthchecking.md} (98%) delete mode 100644 content/game-dev/part-i/sketch.js rename content/game-dev/part-i/{UpdatingBalloons.md => updatingballoons.md} (99%) diff --git a/content/game-dev/part-i/_index.md b/content/game-dev/part-i/_index.md index 1f029dd7..ed1daa81 100644 --- a/content/game-dev/part-i/_index.md +++ b/content/game-dev/part-i/_index.md @@ -1,6 +1,7 @@ +++ chapter = true alwaysopen = false +pre = "1. " title = "Part I" weight = 1 +++ diff --git a/content/game-dev/part-i/draganddrop.md b/content/game-dev/part-i/draganddrop.md index b233b932..338b48ed 100644 --- a/content/game-dev/part-i/draganddrop.md +++ b/content/game-dev/part-i/draganddrop.md @@ -1,6 +1,6 @@ +++ title = "Drag And Drop" -weight = 3 +weight = 2 +++ --- diff --git a/content/game-dev/part-i/HealthChecking.md b/content/game-dev/part-i/healthchecking.md similarity index 98% rename from content/game-dev/part-i/HealthChecking.md rename to content/game-dev/part-i/healthchecking.md index fc3c9a81..4c247aef 100644 --- a/content/game-dev/part-i/HealthChecking.md +++ b/content/game-dev/part-i/healthchecking.md @@ -1,6 +1,6 @@ +++ -title = "Health Checking and Health Bar" -weight = 2 +title = "Health Bar" +weight = 9 +++ --- diff --git a/content/game-dev/part-i/introduction.md b/content/game-dev/part-i/introduction.md index 33ed9d14..2848cced 100644 --- a/content/game-dev/part-i/introduction.md +++ b/content/game-dev/part-i/introduction.md @@ -4,3 +4,61 @@ weight = 1 +++ --- + +## Game Dev - Season IV + +Welcome to the return of MCPT's Game Dev Series! The Game Dev Series consists of 3 parts where we have something for everyone, whether you’re a beginner or an experienced coder. + +Inspired by **Bloons Tower Defense**, you will learn how to code your very own tower-defense game in Processing by the end of a series of workshops. + +Everything will be made step by step allowing you to learn and see the progress of the game. The speed of the workshop is not set and will be altered at a moment's notice in order, so don’t worry if you don't get everything immediately! + +This website is interactive and holds all the content that we will be going over. Flip along and test code just as we do! This site will also be accessible at any time for you to look back and review content if you would like. + +### What is a "Tower Defense Game"? + +A tower defense game is a game where you have towers that defend. + +### Demo + +{{< p5js >}} +aihdsafguyagfubsufuv fix this. . . . . . +{{< /p5js >}} + +### Additional Info + +{{% expand "What you will learn" %}} +{{% notice info %}} +In the first part of this workshop, you will learn about the logic behind the fundamental components in **each level** of a tower-defense game. + +This includes: +* How to use Lists in Processing for Towers and Balloons +* How to create and customize Paths using a list of coordinates +* How to use Mouse Input to create a Drag-And-Drop System +* How to check if Balloons have reached the end of the path +* How to use pre-built template code +{{% /notice %}} +{{% /expand %}} + + +{{% expand "What you will need" %}} +{{% notice info %}} + +You will need to download [Processing 4.0](https://processing.org/download) from https://processing.org/download. + +{{% /notice %}} +{{% /expand %}} + + + +{{% expand "The Game Jam" %}} +{{% notice tip %}} + +The Game Dev Series leads up to a week-long Game Jam during the Winter Break. During the Game Jam, develop and create the best game you can! + +There will be many prizes and awards so make sure to participate! + +In addition, by participating in the Game Dev Series and completing challenges, you will earn points which will help you win awards during the Game Jam. + +{{% /notice %}} +{{% /expand %}} \ No newline at end of file diff --git a/content/game-dev/part-i/sketch.js b/content/game-dev/part-i/sketch.js deleted file mode 100644 index e69de29b..00000000 diff --git a/content/game-dev/part-i/towers.md b/content/game-dev/part-i/towers.md index 72b5a8b3..e787fe9b 100644 --- a/content/game-dev/part-i/towers.md +++ b/content/game-dev/part-i/towers.md @@ -1,6 +1,6 @@ +++ title = "Rotating Towers" -weight = 2 +weight = 3 +++ --- diff --git a/content/game-dev/part-i/UpdatingBalloons.md b/content/game-dev/part-i/updatingballoons.md similarity index 99% rename from content/game-dev/part-i/UpdatingBalloons.md rename to content/game-dev/part-i/updatingballoons.md index a6448de4..b01886ed 100644 --- a/content/game-dev/part-i/UpdatingBalloons.md +++ b/content/game-dev/part-i/updatingballoons.md @@ -1,6 +1,6 @@ +++ -title = "Sending Balloons In Waves" -weight = 1 +title = "Balloon Waves" +weight = 8 +++ --- diff --git a/content/game-dev/part-ii/_index.md b/content/game-dev/part-ii/_index.md index 8a6ad790..1c558648 100644 --- a/content/game-dev/part-ii/_index.md +++ b/content/game-dev/part-ii/_index.md @@ -1,6 +1,7 @@ +++ chapter = true title = "Part II" +pre = "2. " weight = 2 +++ diff --git a/content/game-dev/part-iii/_index.md b/content/game-dev/part-iii/_index.md index 48ab6ce1..4a11a683 100644 --- a/content/game-dev/part-iii/_index.md +++ b/content/game-dev/part-iii/_index.md @@ -1,6 +1,7 @@ +++ chapter = true title = "Part III" +pre = "3. " weight = 3 +++ From 77ae06e86cdf94f7359ef24f579ab266e4239f52 Mon Sep 17 00:00:00 2001 From: Vlad <4vladsurdu@gmail.com> Date: Wed, 10 Nov 2021 17:01:34 -0500 Subject: [PATCH 16/26] updated rotating towers page --- content/game-dev/part-i/towers.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/game-dev/part-i/towers.md b/content/game-dev/part-i/towers.md index 72b5a8b3..16058c33 100644 --- a/content/game-dev/part-i/towers.md +++ b/content/game-dev/part-i/towers.md @@ -52,3 +52,4 @@ However, the identical slopes into atan(), you will get only 1 kind of angle, wh 3. We need to find a way to differentiate balloon points that make similar slopes to find the proper angles {{%/notice%}} +git s From a178affe6aec26826311b5e910effae24b573b7a Mon Sep 17 00:00:00 2001 From: Vlad <4vladsurdu@gmail.com> Date: Wed, 10 Nov 2021 21:00:53 -0500 Subject: [PATCH 17/26] rotating towers finalized --- content/game-dev/part-i/towers.md | 57 +++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/content/game-dev/part-i/towers.md b/content/game-dev/part-i/towers.md index 817db5ec..65ef6682 100644 --- a/content/game-dev/part-i/towers.md +++ b/content/game-dev/part-i/towers.md @@ -47,9 +47,60 @@ However, the identical slopes into atan(), you will get only 1 kind of angle, wh {{% notice info "Recap"%}} -1. Slope is a line's incline, which is defined by the change in the line's height as you move along the X-axis (in this case, height is Y-value) +1. Slope is a line's incline, which is defined by the change in the line's height (Y-values) as you move along the X-axis 2. The function atan() can be used to generate an angle from a slope -3. We need to find a way to differentiate balloon points that make similar slopes to find the proper angles +3. We need to find a way to get the proper angle of tower rotation for balloons {{%/notice%}} -git s + +As you might have been able to figure out, the way to find the proper angle of rotation is to look at which side of the tower the balloon is on. The code would look something like this + +```java +if(the ballooon is on the right side){ + rotate the tower at the angle given by atan() +} +else{ + rotate the tower at the angle that is 180 degrees away from whatever is given by atan() +} +``` + +To figure out which side the balloon is on, we can simply look at the _X-value_ of the balloon. If the balloon is on the left side, it has a smaller _X-value_. If its on the right, then it has a greater _X-value_. + +So, we can simply take the _X-value_ of the tower and subtract it by the _X-value_ of the balloon. If this is positive, this means the balloon is to the left, and if its negative, the balloon is on the right. + +```java +if (targetLocation.x - xPos >= 0 ){ + rotate(angle); + } + else{ + rotate(angle+PI); //Processing uses radians by default, but instead of +PI you can put +degrees(180) + } +``` + +### Rotating the Tower + +Now we can use pushMatrix() and popMatrix(). These functions are used if you want to apply transformations to just one or a group of shapes, and not the whole screen. In this case, we **translate()** the origin to the tower's coordinates (since all things rotate relative to the origin), and we'll **rotate()** the tower so that it faces the balloon. + +```java +pushMatrix(); + +translate(xPos, yPos); //xPos & yPos are the coordinates of the tower + +// Angle calculation +float slope = (targetLocation.y - yPos) / (targetLocation.x - xPos); //Slope calculation +float angle = atan(slope); + +//Finding the right angle +if (targetLocation.x - xPos >= 0 ){ +rotate(angle); +} +else{ +rotate(angle+PI); +} + +rect(0,0,10,10); // Draw a simple rectangle as the tower + +popMatrix(); +``` + +And there you go! Now you know how to rotate a tower so that it faces a balloon! From 4548a2692f2b8556a721312a2b9dad72c83feb3e Mon Sep 17 00:00:00 2001 From: Averesoft <59520795+Averesoft@users.noreply.github.com> Date: Wed, 10 Nov 2021 21:17:55 -0500 Subject: [PATCH 18/26] Change url for towervaliditychecking.md --- content/game-dev/part-i/towervaliditychecking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/game-dev/part-i/towervaliditychecking.md b/content/game-dev/part-i/towervaliditychecking.md index 4c7187c8..082a8e16 100644 --- a/content/game-dev/part-i/towervaliditychecking.md +++ b/content/game-dev/part-i/towervaliditychecking.md @@ -10,7 +10,7 @@ One of the main things we need to make sure of is that our towers aren't being p ### Checking Overlaps With Other Towers -To check if there is overlap with other towers, we need to store our towers into an **[ArrayList](https://learning.mcpt.ca/game-dev/part-i/pathforballoons/#arraylists)**. We can use a PVector ArrayList to store the (x, y) coordinates of our towers. The formatting would be the exact same as our ArrayList for storing the path, as shown in Example 1. +To check if there is overlap with other towers, we need to store our towers into an **[ArrayList](/game-dev/part-i/pathforballoons/#arraylists)**. We can use a PVector ArrayList to store the (x, y) coordinates of our towers. The formatting would be the exact same as our ArrayList for storing the path, as shown in Example 1. ###### Example 1 ```Java From 587741c457616e7bf35e38b7da172063c61845bc Mon Sep 17 00:00:00 2001 From: ji-mmyliu Date: Wed, 10 Nov 2021 22:00:07 -0500 Subject: [PATCH 19/26] Add links to ArrayList explanation Link explanation of ArrayLists to the more detailed explanation in Paths for Balloons. --- content/game-dev/part-i/draganddrop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/game-dev/part-i/draganddrop.md b/content/game-dev/part-i/draganddrop.md index 338b48ed..ddbcb9ec 100644 --- a/content/game-dev/part-i/draganddrop.md +++ b/content/game-dev/part-i/draganddrop.md @@ -43,7 +43,7 @@ The `handleDrop()` method will check if the tower is either in a valid dropping In order to keep track of all the towers that have been placed down, we need to use an `ArrayList`. {{% notice info "ArrayLists and PVectors"%}} -`ArrayList` is a built-in feature in Processing and Java that is similar to an array. It stores a sequence of values or elements in a list-like fashion. They have the same functionality as an array, with an additional feature of inserting a new element into the ArrayList at any time. Official Documentation can be found here +`ArrayList` is a built-in feature in Processing and Java that is similar to an array. It stores a sequence of values or elements in a list-like fashion. They have the same functionality as an array, with an additional feature of inserting a new element into the ArrayList at any time. Check out balloon paths for a more detailed explanation or the official documentation `PVector` is a simple data type that stores two numbers and represents an (x, y) coordinate. Official documentation can be found here {{% /notice %}} From d4b42c7a2f3f4c10ca26c219fcaa578be8610b1f Mon Sep 17 00:00:00 2001 From: yeahbennou <38169671+BenZeng04@users.noreply.github.com> Date: Wed, 10 Nov 2021 22:07:30 -0500 Subject: [PATCH 20/26] Add demo to introduction page --- content/game-dev/part-i/introduction.md | 479 +++++++++++++++++++++++- 1 file changed, 478 insertions(+), 1 deletion(-) diff --git a/content/game-dev/part-i/introduction.md b/content/game-dev/part-i/introduction.md index 2848cced..78c51667 100644 --- a/content/game-dev/part-i/introduction.md +++ b/content/game-dev/part-i/introduction.md @@ -22,7 +22,484 @@ A tower defense game is a game where you have towers that defend. ### Demo {{< p5js >}} -aihdsafguyagfubsufuv fix this. . . . . . + +// Program main method +function setup() { +initializeFields(); +createCanvas(800, 500); +loadHeartIcon(); +initDragAndDrop(); +initPath(); +createFirstWave(); +} +let started; +let frames = 0; +function draw() { +frames++; +background(color(0xad, 0xd5, 0x58)); + + if(!started) { + textSize(60 + Math.sin(frames / 10) * 2); + textAlign(CENTER, BASELINE) + fill(color(0x4C, 0x67, 0x10)); + text("- CLICK TO START - ", 400, 250); + return; + } + textAlign(LEFT) + drawPath(); + // Draw all the towers that have been placed down before + drawAllTowers(); + drawTrash(); + drawSelectedTowers(); + dragAndDropInstructions(); + drawBalloons(); + drawHealthBar(); +} + +// Whenever the user drags the mouse, update the x and y values of the tower +function mouseDragged() { +if (within) { +// Check to see if the user is currently dragging a tower +// Set the values while accounting for the offset +x = mouseX + difX; +y = mouseY + difY; +} +} + +// Whenever the user initially presses down on the mouse +function mousePressed() { +if (mouseX < 0 || mouseX > 800 || mouseY < 0 || mouseY > 500) return; +if(!started) started = true; +// Check to see if the pointer is within the bounds of the tower +within = withinBounds(); +if (within) { +// The tower has been "picked up" +handlePickUp(); +// Calculate the offset values (the mouse pointer may not be in the direct centre of the tower) +difX = x - mouseX; +difY = y - mouseY; +} +} + +// Whenever the user releases their mouse +function mouseReleased() { +if (within) { +// If the user was holding the tower in the previous frame, the tower has just been dropped +// Call the method to handle the drop and check for drop validity +handleDrop(); +} +// The mouse is no longer holding the tower +within = false; +} + +var balloons; + +var distanceTravelled, delay, speed; + +/* +Encompasses: Displaying Balloons, Waves & Sending Balloons, Balloon Reaching End of Path +*/ +function createFirstWave() { +// {Number of "steps" taken, frames of delay before first step, speed} +balloons.push( [ 0, 100, 3 ]); +balloons.push( [ 0, 130, 3 ]); +balloons.push( [ 0, 160, 2 ]); +balloons.push( [ 0, 220, 4 ]); +balloons.push( [ 0, 340, 2 ]); +balloons.push( [ 0, 370, 2 ]); +balloons.push( [ 0, 400, 5 ]); +balloons.push( [ 0, 430, 5 ]); +balloons.push( [ 0, 490, 3 ]); +balloons.push( [ 0, 520, 1 ]); +balloons.push( [ 0, 550, 3 ]); +} + +// Displays and moves balloons +function updatePositions(balloon) { +// Only when balloonProps[1] is 0 (the delay) will the balloons start moving. +if (balloon[delay] == 0) { +// Radius of the balloon +var RADIUS = 25; +var position = getLocation(balloon[distanceTravelled]); +// Increases the balloon's total steps by the speed +balloon[distanceTravelled] += balloon[speed]; +// Drawing of ballon +ellipseMode(CENTER); +strokeWeight(0); +stroke(0); +fill(color(0xf3, 0xcd, 0x64)); +ellipse(position.x, position.y, RADIUS, RADIUS); +} else { +balloon[delay]--; +} +} + +function drawBalloons() { +for (var i = 0; i < balloons.length; i++) { +var balloon = balloons[i]; +updatePositions(balloon); +if (atEndOfPath(balloon[distanceTravelled])) { +// Removing the balloon from the list +balloons.splice(i, 1); +// Lost a life. +health--; +// Must decrease this counter variable, since the "next" balloon would be skipped +i--; +// When you remove a balloon from the list, all the indexes of the balloons "higher-up" in the list will decrement by 1 +} +} +} + +// Similar code to distance along path +function atEndOfPath(travelDistance) { +var totalPathLength = 0; +for (var i = 0; i < points.length - 1; i++) { +var currentPoint = points[i]; +var nextPoint = points[i + 1]; +var distance = dist(currentPoint.x, currentPoint.y, nextPoint.x, nextPoint.y); +totalPathLength += distance; +} +// This means the total distance travelled is enough to reach the end +if (travelDistance >= totalPathLength) +return true; +return false; +} + +// variable to track user's health +var health; + +var heart; + +// ------- HP SYSTEM -------- +/* +Heath-related variables: +int health: The player's total health. +This number decreases if balloons pass the end of the path (offscreen), currentely 12 since there are 12 balloons. +boolean[] offscreen: this array tracks if the balloon has been subtracted from health once it is off the screen. +PImage heart: the heart icon to display with the healthbar. +*/ +function loadHeartIcon() { +// done in preLoad(); +} + +// method to draw a healthbar at the top right of the screen +function drawHealthBar() { +// draw healthbar outline +stroke(0, 0, 0); +strokeWeight(0); +fill(color(0x83, 0x00, 0x00)); +rect(715, 455, 120, 20); +// draw healthbar +noStroke(); +rectMode(CORNER); +fill(color(0xFF, 0x31, 0x31)); +// the healthbar that changes based on hp +rect(655, 445.5, health * 12, 20); +rectMode(CENTER); +noFill(); +// write text +stroke(0, 0, 0); +textSize(14); +fill(255, 255, 255); +text("Health: " + health, 670, 462); +// put the heart.png image on screen +noFill(); +} + +// The points on the path, in order. +var points; + +var PATH_RADIUS; + +/* +Encompasses: The Path for Balloons, Balloon Movement +*/ +// ------- CODE FOR THE PATH +function addPointToPath(x, y) { +points.push(new p5.Vector(x, y)); +} + +function initPath() { +addPointToPath(0, 200); +addPointToPath(50, 200); +addPointToPath(200, 150); +addPointToPath(350, 200); +addPointToPath(500, 150); +addPointToPath(650, 200); +addPointToPath(650, 300); +addPointToPath(500, 250); +addPointToPath(350, 300); +addPointToPath(200, 250); +addPointToPath(50, 300); +addPointToPath(50, 400); +addPointToPath(200, 350); +addPointToPath(350, 400); +addPointToPath(500, 350); +addPointToPath(650, 400); +addPointToPath(800, 350); +} + +function drawPath() { +stroke(color(0x4C, 0x67, 0x10)); +strokeWeight(PATH_RADIUS * 2 + 1); +for (var i = 0; i < points.length - 1; i++) { +var currentPoint = points[i]; +var nextPoint = points[i + 1]; +line(currentPoint.x, currentPoint.y, nextPoint.x, nextPoint.y); +} +stroke(color(0x7b, 0x9d, 0x32)); +strokeWeight(PATH_RADIUS * 2); +for (var i = 0; i < points.length - 1; i++) { +var currentPoint = points[i]; +var nextPoint = points[i + 1]; +line(currentPoint.x, currentPoint.y, nextPoint.x, nextPoint.y); +} +} + +// GIVEN TO PARTICIPANTS BY DEFAULT +function getLocation(travelDistance) { +for (var i = 0; i < points.length - 1; i++) { +var currentPoint = points[i]; +var nextPoint = points[i + 1]; +var distance = dist(currentPoint.x, currentPoint.y, nextPoint.x, nextPoint.y); +if (distance <= 0.00000001 || travelDistance >= distance) { +travelDistance -= distance; +} else { +// In between two points +var travelProgress = travelDistance / distance; +var xDist = nextPoint.x - currentPoint.x; +var yDist = nextPoint.y - currentPoint.y; +var x = currentPoint.x + xDist * travelProgress; +var y = currentPoint.y + yDist * travelProgress; +return new p5.Vector(x, y); +} +} +// At end of path +return points[points.length - 1]; +} + +var x, y, difX, difY, count; + +// Towers that are placed down +var towers; + +// If mouse was held down during the previous frame +var within; + +var towerSize; + +var towerColour; + +// these variables are the trash bin coordinates +var trashX1, trashY1, trashX2, trashY2; + +/* +Encompasses: Displaying Towers, Drag & Drop, Discarding Towers, Rotating Towers, Tower Validity Checking +*/ +// -------- CODE FOR DRAG & DROP ---------------------- +function initDragAndDrop() { +x = 650; +y = 50; +within = false; +difX = 0; +difY = 0; +trashX1 = 525; +trashY1 = 30; +trashX2 = 775; +trashY2 = 120; +count = 0; +towers = []; +} + +// Use point to rectangle collision detection to check for mouse being within bounds of pick-up box +function pointRectCollision(x1, y1, x2, y2, size) { +// --X Distance-- --Y Distance-- +return (abs(x2 - x1) <= size / 2) && (abs(y2 - y1) <= size / 2); +} + +// Check to see if mouse pointer is within the boundaries of the tower +function withinBounds() { +return pointRectCollision(mouseX, mouseY, x, y, towerSize); +} + +// check if you drop in trash +function trashDrop() { +if (x >= trashX1 && x <= trashX2 && y >= trashY1 && y <= trashY2) { +return true; +} +return false; +} + +// -------Methods Used for further interaction------- +function handleDrop() { +// Instructions to check for valid drop area will go here +if (trashDrop()) { +x = 650; +y = 50; +print("Dropped object in trash."); +} else if (legalDrop()) { +towers.push(new p5.Vector(x, y)); +// Add the tower to the list of placed down towers +x = 650; +y = 50; +print("Dropped for the " + (++count) + "th time."); +} +} + +// Will be called whenever a tower is picked up +function handlePickUp() { +print("Object picked up."); +} + +// -------------------------------------------------- +// Draw a simple tower at a specified location +function drawTowerIcon(xPos, yPos, colour) { +strokeWeight(0); +stroke(0); +fill(colour); +rectMode(CENTER); +// Draw a simple rectangle as the tower +rect(xPos, yPos, towerSize, towerSize); +} + +// Draws a tower that rotates to face the targetLocation +function drawTowerIcon(xPos, yPos, colour, targetLocation=null) { +if (targetLocation === null) { +strokeWeight(0); +stroke(0); +fill(colour); +rectMode(CENTER); +// Draw a simple rectangle as the tower +rect(xPos, yPos, towerSize, towerSize); +return; +} +strokeWeight(5); +stroke(color(0x4C, 0x67, 0x10)); +line(xPos, yPos, targetLocation.x, targetLocation.y); +push(); +translate(xPos, yPos); +// Angle calculation +var slope = (targetLocation.y - yPos) / (targetLocation.x - xPos); +var angle = atan(slope); +rotate(angle); +strokeWeight(0); +fill(colour); +rectMode(CENTER); +// Draw a simple rectangle as the tower +rect(0, 0, towerSize, towerSize); +pop(); +} + +function drawAllTowers() { +for (var i = 0; i < towers.length; i++) { +var xPos = towers[i].x, yPos = towers[i].y; +// Towers will track the mouse as a placeholder +drawTowerIcon(xPos, yPos, towerColour, new p5.Vector(mouseX, mouseY)); +fill(color(0x4C, 0x67, 0x10)); +strokeWeight(0); +textSize(12); +text("Tower " + (i + 1), xPos - 30, yPos - 20); +} +} + +function drawSelectedTowers() { +// Changing the color if it is an illegal drop to red +if (!legalDrop()) { +// Draw the current tower (that the user is holding) as red to indicate illegal +drawTowerIcon(x, y, color(0xFF, 0x00, 0x00)); +} else { +// Draw the current tower (that the user is holding) +drawTowerIcon(x, y, towerColour); +} +// Draw the pick-up tower on the top right +drawTowerIcon(650, 50, towerColour); +} + +function drawTrash() { +rectMode(CORNERS); +noStroke(); +fill(color(0x4C, 0x67, 0x10)); +rect(trashX1, trashY1, trashX2, trashY2); +fill(255, 255, 255); +stroke(255, 255, 255); +} + +function dragAndDropInstructions() { +fill(color(0x4C, 0x67, 0x10)); +textSize(12); +text("Pick up tower from here!", 620, 20); +text("You can't place towers on the path of the balloons!", 200, 20); +text("Place a tower into the surrounding area to put it in the trash.", 200, 40); +text("Mouse X: " + mouseX + "\nMouse Y: " + mouseY + "\nMouse held: " + mouseIsPressed + "\nWithin object bounds: " + within, 15, 20); +} + +// -------- CODE FOR PATH COLLISION DETECTION --------- +function pointDistToLine(start, end, point) { +// Code from https://stackoverflow.com/questions/849211/shortest-distance-between-a-point-and-a-line-segment +// i.e. |w-v|^2 - avoid a sqrt +var l2 = (start.x - end.x) * (start.x - end.x) + (start.y - end.y) * (start.y - end.y); +// v == w case +if (l2 == 0.0) +return dist(end.x, end.y, point.x, point.y); +var t = max(0, min(1, p5.Vector.sub(point, start).dot(p5.Vector.sub(end, start)) / l2)); +// Projection falls on the segment +var projection = p5.Vector.add(start, p5.Vector.mult(p5.Vector.sub(end, start), t)); +return dist(point.x, point.y, projection.x, projection.y); +} + +function shortestDist(point) { +var answer = Number.MAX_VALUE; +for (var i = 0; i < points.length - 1; i++) { +var start = points[i]; +var end = points[i + 1]; +var distance = pointDistToLine(start, end, point); +answer = min(answer, distance); +} +return answer; +} + +// Will return if a drop is legal by looking at the shortance distance between the rectangle center and the path. +function legalDrop() { +// checking if this tower overlaps any of the already placed towers +for (var i = 0; i < towers.length; i++) { +var towerLocation = towers[i]; +if (pointRectCollision(x, y, towerLocation.x, towerLocation.y, towerSize)) +return false; +} +return shortestDist(new p5.Vector(x, y)) > PATH_RADIUS; +} + +function initializeFields() { +balloons = []; +distanceTravelled = 0; +delay = 1; +speed = 2; +health = 10; +points = []; +PATH_RADIUS = 20; +x = 0; +y = 0; +difX = 0; +difY = 0; +count = 0; +towers = null; +within = false; +towerSize = 25; +towerColour = color(0x7b, 0x9d, 0x32); +trashX1 = 0; +trashY1 = 0; +trashX2 = 0; +trashY2 = 0; +started = false; +} + +function preload() { +// TODO: put method calls that load from files into this method +// I found the following calls that you should move here: +// (note that line numbers are from your Processing code) +} + + {{< /p5js >}} ### Additional Info From 3c8e5c86dde3c0d1507739854e2bf66ea5192f1c Mon Sep 17 00:00:00 2001 From: Hazel G <58535328+toaster203@users.noreply.github.com> Date: Wed, 10 Nov 2021 22:09:33 -0500 Subject: [PATCH 21/26] Update updatingballoons.md changed the link to arraylist tutorial --- content/game-dev/part-i/updatingballoons.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/game-dev/part-i/updatingballoons.md b/content/game-dev/part-i/updatingballoons.md index b01886ed..1d9514a2 100644 --- a/content/game-dev/part-i/updatingballoons.md +++ b/content/game-dev/part-i/updatingballoons.md @@ -13,7 +13,7 @@ A quick note, all line numbers referenced in this page will refer to the lines i {{% notice info "Quick Review!"%}} As we’ve already learned, ArrayLists are similar to arrays, however they allow for **easier adding/removing of elements** from the list. Additionally, ArrayLists are **resizable**, while arrays must be intialized with a fixed size. This allows for more flexibility, and we'll be using ArrayLists to keep track of all the balloons. - +To read more, visit [ArrayLists in Path](/game-dev/part-i/pathforballoons/#arraylists) {{% /notice %}} ### The ArrayList From 9882734b06dde394e0c0113a0e987dd878c90345 Mon Sep 17 00:00:00 2001 From: Averesoft <59520795+Averesoft@users.noreply.github.com> Date: Wed, 10 Nov 2021 22:16:55 -0500 Subject: [PATCH 22/26] Add attachments --- .../pathforballoons.files/PathTemplate.zip | Bin 0 -> 886 bytes content/game-dev/part-i/pathforballoons.md | 5 ++++- .../TowerValidityTemplate.zip | Bin 0 -> 2391 bytes content/game-dev/part-i/towervaliditychecking.md | 2 ++ 4 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 content/game-dev/part-i/pathforballoons.files/PathTemplate.zip create mode 100644 content/game-dev/part-i/towervaliditychecking.files/TowerValidityTemplate.zip diff --git a/content/game-dev/part-i/pathforballoons.files/PathTemplate.zip b/content/game-dev/part-i/pathforballoons.files/PathTemplate.zip new file mode 100644 index 0000000000000000000000000000000000000000..0e79db79054ffa4f897a9412d75e6e30fe109fdf GIT binary patch literal 886 zcmWIWW@Zs#U|`^2VBMG%EdOx&&09ZEauDKjFxuZj!H2rit%Fm^F3DG@6xi2 z%lDQo4Z8iKZcg#}t?P58`MTKk+-t?xxg~R~i~TV7!7URR#X~s`!IjVMPx2@#Wc)tI zXyzeHgH27jyRW`#%yr(Nuv9%=;cB#ocsc52(Y!Y@}`Y~08Zo_fcm z=iRd={m7iRZG|;8HBlAX^R;&HxUk26S*WcavyW)fQLzVNc!Lu|O(_{WPaPc--rsTVC zUjJ32B1>(m%Ij^s5veU1f}1QI4Q4f`*Jvh)8hIvlR2*tu6!3Kuv$-Z?{D+PunyH`7 zHGQU=Ozg^gSnI#oTB%Io{aleheG$9g>)oF(^Xi#sc09*i{UuxXF@Jl&@$KP;4?#1; zu5pW$yKQf`Pha}yXIsWWMwv&S{_R`GeX7i1i%65f%+sw0t+M=U6b46Vq2b1`7(TY$llev6Z>bxJAR1VGzVojKC!xpR*-tvGarZBc3Gd`bprB8-g=pLp|q zB9p$)!GzaATB6t5Rj*&0=n%nEGtFOg>x#wKw_UyV@9Os3`T^dIOd<@pvjs3`FfcMG cfG8k9&KDS&B*2@M4Wx(>2)%){C^Lu$0E6g*xBvhE literal 0 HcmV?d00001 diff --git a/content/game-dev/part-i/pathforballoons.md b/content/game-dev/part-i/pathforballoons.md index 6c779dda..6acc33ad 100644 --- a/content/game-dev/part-i/pathforballoons.md +++ b/content/game-dev/part-i/pathforballoons.md @@ -4,6 +4,7 @@ weight = 6 +++ --- +{{%attachments style="red" title="Path For Balloons Template" pattern=".*zip"/%}} ## Prerequisite - Dynamic Arrays @@ -107,7 +108,7 @@ for (int i = 0; i < path.size() - 1; i++) { } ``` -Check out `Path.pde` if you want to see how our path was made! +Check out **[Path.pde](https://github.com/mcpt/game-dev/blob/main/PartOne/Path.pde)** if you want to see how our path was made! *** @@ -116,3 +117,5 @@ ArrayLists can automatically resize themselves when you add or remove elements, {{% /notice %}} + + diff --git a/content/game-dev/part-i/towervaliditychecking.files/TowerValidityTemplate.zip b/content/game-dev/part-i/towervaliditychecking.files/TowerValidityTemplate.zip new file mode 100644 index 0000000000000000000000000000000000000000..b6b452d54f085459936f5d03250df1a0893b4908 GIT binary patch literal 2391 zcmai$c{~&TAICQqh)p@Nxe2p2DM`w{i;QHBXpXtQ*xW>{+(*n&NtAQ0NK1~Q z%dv7Kxx&i5ey+{P_4Tb^-`{_IAHUD%@%g;okN4y8dj9=1Hv{bw1N=Pj5)aG&4*z_x zABq1n$i?5<$%{lJQ9|%8-o9Q=6c-J1CyKkeFVV&PpROQ)UFc!iT$v&V76bt1B>@19 zf9?L3_!BmDnLr-Vleo5)v;$(tW+k{>PFF$Nx7|CJfgu)?3`oPaj~l_7Lg!53>7cZ% zdg#uY0R*s15#@*8WaQm4h5-a-IQN8ET=KG0QDrIinU232tENU-GyqZIfP7YwSxVVB z2Qll#pS~sa%S!!S%1Dmxcob;mZGw&wrw<8j$$9TSEjiQov8 zq);Rg9yQPe2}VyMVIvQG##V24%0wLm`QjC}aM-74e9*a<}{H$nJM|XZz@sQuaNgFMh#pZ%hVM?7!<`BIUi2R>b7iC+$_* zY=>83H2`5{{PdPotw+K;Tsv+{wb-bGqNoZlpo(RFG@%JwWac+P<0s?;smWne>O{ESdc>1BF9pfcnEC>lc-KcHZQI0f>4CY=tX`DIJ zQ0tNE!;8do!ZEOyY^{u?(@~8Q!nX-$j7?lqsX!35Ch~SHWJ}-b`s!#-8O|*qt1j0$ zFE;b;E6VgXW--`8f3-f0=9p;YZ7j&6>iS-bAc`3ZM~$cIsL1(;%i8f+pE({yA1=^} z#EfIX7SZwAlEYoNI8ZuYPXS+)zWw~o#_SjakCx`*144e!#oe6I2f8<^OBMq5S9>Gb z4vtat>Ms_F#TceYg5&186FW+LgzDl)KC8_@rmlC*FQX;0i8i&zg^&Y@3Xl1_maG`C3!PTxaBX!%>m0K;=- zclU9*2RqrekQ@h=(sD*N9k+627jIZ)22tT}qx`fE@3XUU(f%EHad<(^doA#u>=^Hu zS?gej^_K5@_O)$Y;tFJ-0?<_FL+sMPXoGL=8G2yWX@p^QpQfGn=qv5&N4RJXN_19m z{aZ;-xrdwI!uDR=s94y|llshLlbav|Q(WBF=h%o-%@Q!0+tykN{l54Mr@kLG68M}SMP-)Ur9+?B_H_{7v zpN?{3`PLSIS_!j9L~;BhcR%d6cXt1R!mrigf-8y^=k^+cJl01gd;#=)`#|X3GzKX8 z@#R6DOCI;!B)RMpaA6sn$Z4S`-FZdViawx@z{U%n>ywo4fM= z(qDBmFS&YhSN|Aioux?qG+rrhFTcgyyg%Nwqg&|NLf~u>+(R@TCHvvyxSWjPk{v@U z`Di8j@xsbjh0U}?oLAFa(iNs7njfPdxP+~pSO(|7(&6T-5p8*!FdIi~Ok&eSV0$4m z8*C>s0ZKQl>H{V_yBG5?4NP;@Brshts|9!IAYIEuTz%9?$|&O2{x&FGxLmufiV}7C!_v0MY8hfo7PY){ z!pnYplN+g89&>Fnr-kQlBCrg7Yt!C!r&CK^I5z6MWV2m=o@I%ES+|g+S)rgOq}a|f zhSM)p?|ijV^`=(l8>DW=#42d$kG8P?__#a3CvJFN&Eju8 z|A(kKz4&Om_~=we`{PYU+X58I_;cqJ?=>{8z;pdlD~RiU1qNoh@Tc}Z;ZNRbouLfm z`kt6Xg~QJxAE`9>4xzV$vO}d`%Ib9MC5Rkq(CXyV+9i~dCfOs$wXQl7(a5ZBTp=^& z9KY{-sIt2qXdUjAk1oWd`F(pMo#24Rwuesj2|B74m|$Y#>hENqSOQ1BYH+j~g;0$Z zNNEDR#ezoF7B`>0(rDM(plZsJYsZV|k<$AJ z{1n_ct@<%^BX^El8hXO{u>GuUOg~{ooYk$JX18$IwMI+Ev{@@R`{fa}`qD_J0A9|$ z6J%M&w*w}Zx;OSCn)lz=7~R&6MjzQ$&{ Date: Wed, 10 Nov 2021 22:24:42 -0500 Subject: [PATCH 23/26] Update TowerValidityTemplate.zip --- .../TowerValidityTemplate.zip | Bin 2391 -> 3373 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/content/game-dev/part-i/towervaliditychecking.files/TowerValidityTemplate.zip b/content/game-dev/part-i/towervaliditychecking.files/TowerValidityTemplate.zip index b6b452d54f085459936f5d03250df1a0893b4908..3935f75e83dce94531459f4703d97635ecf7c940 100644 GIT binary patch delta 3237 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 delta 2251 zcmV;+2sHPt8rKpVP)h>@6aWAK001bbYEu9J000000000000177tO6MzP+@dvE^uUJ zP)h>@6aWAK2mtD&YE!+fjv@~T008Y6lc@qVf8|+QbK5o+e)o+31L}vCie*`nD>q%o zok^2CWTt67Y1&$|yALo4Nk}M?1CW-u9sl<|7XSn$IdMDtww{qh9smdD@|_Fd^KLe3bWc)YLj3y);I)KWSTE9T;?U7%6J89f}sV(2HC8o)1M@HU*C3v==wO z!ycvi0fgHqW3R+H2v3iqUddWW1G45a1@W_TQyd@Nm1VAEAyz8SX!hF$%v54sf{v)_ zokHPpcxS~%*DGE4H9UVKZ8ue9jls3Zf37m>Uc(fz01GNq=KLA5YKqKG$WHt$rb5Yd zB`heRgcOz3MwAOtm7u&GiQ^-6uT0Bylz_Nf;3;&GsjW!VXgPAsCjT7&JK{Zs*8wcb zbFnDR8n_!UmMoSz2vnno!#g~I#8$zcz(BwfwUjwpPvY9nscqR9w)N=v=-K(Me;1q_ zXe5+#p^dGDRW+)FgnCmt)jTB<=@6?ava%{IL93_o0bAql;GTPFw7koeB^=N~BkfAu z=>lL>noJh}X3I#Uq1(xjALjnycIqk9E9Nb3Twtsv@L8*RRc6OW_oXHgn<^QIKaY=u z*otd$IU8Sz79QXiX(;BqGE>Q`e>XpWc=LWhM3v{dvTBcR^?y|Id^{e)>M@h>Lx8&$ z3z=I*L`G(hgaHGDv45F|7yLL?f%e^)sZM90OfDkI?G)$C;yFl}Jnwi>IQF=ElwXTN zZA1w5gf(z}ePk3r3xMB`G%F%>r(;N0?RrP5E7r4&Sm4^e`NG8o#H|kzrfbA~7?_{Pt%MprS`}tw& zfEC+>WpQ&yGRqRQi3^Dz~&$ZvXmHUCa;f+U_lF_ja8h-t{v}!Pv=GfBbOG>VEw-Wb_x; ztN^^UZe-3cJTec43fZDd%0fKg&qI_-YSXCB)hT5#*cQsH^K!vyxAP#q#vTk(`mF8+ z^%>mD>T|po*X8q0;=W9MLA@3plxO_+j;fy(zhQ%jSXwj&PzdQ3ldeo_T^4St%VaA^ zZn^Rb2#@bOB~l4(e@7-ZD^+0A13;&wk4W#ea2#pah7}fMr9CX>eKsFTaW8Ytttj^} zlwy}9luo0(&7x2UCg3Ww7nazBy2! z)&cJEOpEfse{?sm%arXQdh7h$SGrTlC$?H`>*R!HFwperWH98t&Y=D{_GeJ1V?YGe z-tzh2C4|=Bts`9{{LA~F-@N}dq-(%i^88z9c`vYyaa4%&@{`)9|36hDf+wmvq^*Y} z`;d!HY`p1=V9Q@S20S=+@JzDf@ei0Dk|cX9Z za8WTsXWy_1_5#qw`KB%{bBHfU_PWN58y(T9#z6@(D#LYH55787*_;u ze=Mtme&m?I^>RiB@g2rk$j+L|F)j;-fJzv>T-Baarw2>V2^dSH2x}LnTvLPc)d{#_ zN~ffF_KyakgYAs%uC**yWO%`bF_pzPHIw7^e*@V~$9wE||2wyCrMm&dzxSE$f@DG2(x?fe@7lcG4X^;o? z@1eUaz-Mj@8#`vQcdvBtX30fI=ns8E7@`THW@$Tf4FTa9hCEWXbhXi9f8KOgFLA#{ zYhL4xvdZEUPR|{OeC;FIMS9+bdub2ye?3zK97w$}oR`8OEx4$EVRiMGoj!9P zw(Af^SI_zmDZLJ#FWvnzf;%DoBsBRaE=%*JZEE@y{(QS4+sDN?HB+6F8}}l00000 Z0RSKX002CbtO7EV7Yz^wm005DYATR&` From ccb6eadad715fc32983243ee500811d92404d970 Mon Sep 17 00:00:00 2001 From: yeahbennou <38169671+BenZeng04@users.noreply.github.com> Date: Wed, 10 Nov 2021 22:27:25 -0500 Subject: [PATCH 24/26] Finalize introduction page --- content/game-dev/part-i/introduction.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/content/game-dev/part-i/introduction.md b/content/game-dev/part-i/introduction.md index 78c51667..739b01db 100644 --- a/content/game-dev/part-i/introduction.md +++ b/content/game-dev/part-i/introduction.md @@ -11,15 +11,25 @@ Welcome to the return of MCPT's Game Dev Series! The Game Dev Series consists of Inspired by **Bloons Tower Defense**, you will learn how to code your very own tower-defense game in Processing by the end of a series of workshops. -Everything will be made step by step allowing you to learn and see the progress of the game. The speed of the workshop is not set and will be altered at a moment's notice in order, so don’t worry if you don't get everything immediately! -This website is interactive and holds all the content that we will be going over. Flip along and test code just as we do! This site will also be accessible at any time for you to look back and review content if you would like. +{{% expand "What is a tower-defense game?" %}} +{{% notice info %}} + +A **tower-defense game** is a type of strategy game where players will place down "towers", usually with a form of in-game currency that will defend against a set of enemies. If you fail to defeat the enemies, you will typically lose health - when you reach zero, it's **Game Over.** + +In **Bloons Tower Defense**, the towers are monkeys, and the enemies are balloons, which travel along a pre-determined path. Your goal as a player is to strategically spend your currency in placing towers in effective locations, using their special abilities to win the game! + +In this workshop, we will be covering the key aspects of a tower-defense game, and in future workshops, we will be covering special abilities and ways that you can customize your game to make it your own! + +{{% /notice %}} +{{% /expand %}} -### What is a "Tower Defense Game"? -A tower defense game is a game where you have towers that defend. +Everything will be made step by step allowing you to learn and see the progress of the game. The speed of the workshop is not set and will be altered at a moment's notice in order, so don’t worry if you don't get everything immediately! + +This website is interactive and holds all the content that we will be going over. Flip along and test code just as we do! This site will also be accessible at any time for you to look back and review content if you would like. -### Demo +### Part I - Demo {{< p5js >}} From 3d4ee289320df9ed9d4284a92c34c6a57adcc914 Mon Sep 17 00:00:00 2001 From: Vlad <4vladsurdu@gmail.com> Date: Wed, 10 Nov 2021 22:33:08 -0500 Subject: [PATCH 25/26] updated rotating towers --- content/game-dev/part-i/towers.md | 72 ++++++------------------------- 1 file changed, 12 insertions(+), 60 deletions(-) diff --git a/content/game-dev/part-i/towers.md b/content/game-dev/part-i/towers.md index 65ef6682..91068fb9 100644 --- a/content/game-dev/part-i/towers.md +++ b/content/game-dev/part-i/towers.md @@ -11,72 +11,32 @@ In this section, we will break down the process of rotating towers so that they We will talk about the **drawTowerIcon()** function staring on line 79 of [Towers.pde](https://github.com/mcpt/game-dev/blob/main/PartOne/Towers.pde "Open Towers.pde") -##### Key Steps +##### Key Concepts -1. How do we calculate the _slope of the line_ from the _tower to a balloon_? -2. How do we use that slope to calculate an _angle of rotation_? -3. How do we use that angle of rotation to _rotate the tower_? +1. Understanding slope of a line and how it can help determine direction +2. Using the components of slope to come up with an angle of rotation +3. Using the angle of rotation to rotate the tower Remember that in Processing, Y values increase as you move _down the window_. Therefore, the origin (0,0) is at the top-left corner of the window. -### Slope of a Line Connecting a Tower to a Balloon +### The Connection Between the Slope of a Line and Direction ![Interface](/img/Line-Slopes.png) The slope of a line is essentially a measure of incline. This incline is determined by _how the hieght of the line changes as you move along the X-axis_. Take a look at line 1. As you move along the x-axis (go from left to right), the height (or _Y-values_) of the line decreases, and so we say it has a negative incline, or slope value. In line 2, the line's height doesn't change, so we say it has a slope of 0. For line 3, the height/Y-value increases as you move along the X-axis, so we say the slope is positive. As you may see, the _slope of a line contains some information about the direction from one point to another_. -All you need to calculate the slope of a line is 2 points on the line itself. - -```java -float slope = (targetLocation.y - yPos) / (targetLocation.x - xPos); -``` - -The formula for slope is (y2 - y1)/(x2 - x1), where (x1,y1) and (x2,y2) are points on a line. This is the formula the code above uses. (targetLocation.x, targetLocation.y) is the coordinates of the tower, and (xPos,yPos) are the coordinates of a balloon. The code stores the slope in a _float_ variable to be used later. +To mathematically find slope of a line connection 2 points, you must take 2 points on the line: (x1,y1) and (x2,y2). The you must calculate the change in _Y_, which we call rise, and the change in _X_, which we call run. Change in _Y_ is equal to y2-y1, and change in _X_ is equal to x2-x1. We can then divide rise by run, which is the same thing as (y2-y1)/(x2-x1). ### Slope -> Angle -Now we need to find a way to use the slope we calculated to determine the angle the tower must rotate to face the balloon. To do this, we will use the trigonometric function inverse tan - _atan()_ - to convert our slope into an angle. - -There is, however, one issue with using slope to go to an angle. +Now we can use the components of slope (rise and run), to calculate the angle at which the tower must turn. To do this, we will use atan2(), and use rise as our first input, and run as our second input. -![Interface](/img/Rotation-Mechanism.png) +{{% notice info "About atan2()"%}} -In the image, there are 2 lines going from the tower to 2 different balloons. Despite the arrows pointing opposite ways, the lines the arrows make have the same slope. Lets look back at our deifinition of slope: _change in hieght (or Y-value) as you move along the X-axis_. Both lines approach the X-axis at the same intensity, which means their inclines, or slopes, are the same. In this case, we'll assume that their slopes are -1, which means for every 1 unit increase in _X_, there is 1 unit decrease in height (or in other words, decrease in _Y_). - -However, the identical slopes into atan(), you will get only 1 kind of angle, when there should very clearly be 2. If we assume the slope is -1, plugging that into atan() will tell us that the tower should turn -45 degrees for both balloons. This works for balloon 1, which is on the right side of the tower, but balloon 2 on the left needs an angle of rotation exaclty 180 degrees away from balloon 1. - -{{% notice info "Recap"%}} - -1. Slope is a line's incline, which is defined by the change in the line's height (Y-values) as you move along the X-axis -2. The function atan() can be used to generate an angle from a slope -3. We need to find a way to get the proper angle of tower rotation for balloons +Atan2() comes from the inverse trigonomtric function inverse tan (atan() in processing). Unlike atan2(), atan() uses an actual slope value (1 input) to calculate an angle. Using atan() however means some extra steps are required to find the right angle. {{%/notice%}} -As you might have been able to figure out, the way to find the proper angle of rotation is to look at which side of the tower the balloon is on. The code would look something like this - -```java -if(the ballooon is on the right side){ - rotate the tower at the angle given by atan() -} -else{ - rotate the tower at the angle that is 180 degrees away from whatever is given by atan() -} -``` - -To figure out which side the balloon is on, we can simply look at the _X-value_ of the balloon. If the balloon is on the left side, it has a smaller _X-value_. If its on the right, then it has a greater _X-value_. - -So, we can simply take the _X-value_ of the tower and subtract it by the _X-value_ of the balloon. If this is positive, this means the balloon is to the left, and if its negative, the balloon is on the right. - -```java -if (targetLocation.x - xPos >= 0 ){ - rotate(angle); - } - else{ - rotate(angle+PI); //Processing uses radians by default, but instead of +PI you can put +degrees(180) - } -``` - ### Rotating the Tower Now we can use pushMatrix() and popMatrix(). These functions are used if you want to apply transformations to just one or a group of shapes, and not the whole screen. In this case, we **translate()** the origin to the tower's coordinates (since all things rotate relative to the origin), and we'll **rotate()** the tower so that it faces the balloon. @@ -84,21 +44,13 @@ Now we can use pushMatrix() and popMatrix(). These functions are used if you wan ```java pushMatrix(); -translate(xPos, yPos); //xPos & yPos are the coordinates of the tower +translate(towerX,towerY); -// Angle calculation -float slope = (targetLocation.y - yPos) / (targetLocation.x - xPos); //Slope calculation -float angle = atan(slope); +float angle = atan2(balloonY-towerY,balloonX-towerX); -//Finding the right angle -if (targetLocation.x - xPos >= 0 ){ rotate(angle); -} -else{ -rotate(angle+PI); -} -rect(0,0,10,10); // Draw a simple rectangle as the tower +triangle(20,0,-20,-20,-20,20); popMatrix(); ``` From f50a49128cd506528235ddee2c2455f380759458 Mon Sep 17 00:00:00 2001 From: dulldesk <54601393+dulldesk@users.noreply.github.com> Date: Wed, 10 Nov 2021 22:55:56 -0500 Subject: [PATCH 26/26] Resize p5js canvas to content width --- layouts/shortcodes/p5js.html | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/layouts/shortcodes/p5js.html b/layouts/shortcodes/p5js.html index f175d15a..055372a7 100644 --- a/layouts/shortcodes/p5js.html +++ b/layouts/shortcodes/p5js.html @@ -9,7 +9,6 @@