Difference between revisions of "IB Computer Science 1"

From WLCS
Line 3: Line 3:
 
* Complete and demo Basic Pool: Part 1
 
* Complete and demo Basic Pool: Part 1
 
* Ball Collision detection & resolution
 
* Ball Collision detection & resolution
*# Use your Bouncing Ball program as a template
+
*# Use your Bouncing Ball program as a template (or you can use Basic Pool: Part 1)
 
*# Create two balls, one of which follows the mouse, and the other is stationary (you must have all the variables defined for both balls, including dx and dy)
 
*# Create two balls, one of which follows the mouse, and the other is stationary (you must have all the variables defined for both balls, including dx and dy)
 
*# Use the distance formula to detect if the two balls collide, and if they do, then paste the following code:
 
*# Use the distance formula to detect if the two balls collide, and if they do, then paste the following code:
 
 
<syntaxhighlight lang="Python">
 
<syntaxhighlight lang="Python">
 
# http://flatredball.com/documentation/tutorials/math/circle-collision/
 
# http://flatredball.com/documentation/tutorials/math/circle-collision/

Revision as of 17:18, 13 November 2018

Wednesday (11/14/18)

Agenda:

  • Complete and demo Basic Pool: Part 1
  • Ball Collision detection & resolution
    1. Use your Bouncing Ball program as a template (or you can use Basic Pool: Part 1)
    2. Create two balls, one of which follows the mouse, and the other is stationary (you must have all the variables defined for both balls, including dx and dy)
    3. Use the distance formula to detect if the two balls collide, and if they do, then paste the following code:
# http://flatredball.com/documentation/tutorials/math/circle-collision/
        tangentVector = PVector();
        tangentVector.y = x - x2;
        tangentVector.x = y2 - y;
        tangentVector.normalize()
        relVel = PVector(dx-dx2, dy-dy2)
        velLength = relVel.dot(tangentVector)
        velOnTangent = tangentVector.mult(velLength)
        velPerpToTangent = relVel.sub(velOnTangent)
        dx -= velPerpToTangent.x
        dy -= velPerpToTangent.y
        dx2 += velPerpToTangent.x
        dy2 += velPerpToTangent.y
  • Basic Pool: Part 2
    1. Your objective is to add a black circular pocket somewhere randomly generated. The player can win by shooting the pool ball into the pocket, but loses if the cue ball ever hits the pocket. The player will only have 3 attempts to shoot the ball in.

Friday (11/9/18)

Agenda:

  • Demonstrate all programs
  • Work on Basic Pool: Part 1 challenges

Wednesday (11/7/18)

Agenda:

  • Mr. Bui is out b/c his son is sick. Be prepared to demonstrate all programs on Friday (11/9/18)
  • Complete Basic Pool: Part 1
    1. Make the background green
    2. Create a white ball on the screen with dx and dy both set to random(-10,10) so that it begins moving in a random direction
    3. As soon as the mouse button is pressed, make the ball stop where it is
    4. While the mouse button is being held down, draw a red line from the middle of the ball to the mouse pointer
    5. Releasing the mouse changes the ball's velocity (dx and dy variables) using the differences between (x, y) and (mouseX, mouseY). i.e. the larger the green line, the faster the ball should move. If the speed is too fast, you can try shrinking the difference by dividing by 10
    6. As the ball moves around the screen, it should properly bounce off the edges
    7. Add a non-white second ball on the screen that is not moving, but randomly located. You can generate random numbers using random(low, high).
    8. To detect if the two balls ever collide, check the distance between their centers (x, y) and (x2, y2). If the distance is less than the sum of their two radii (r1 + r1), then there is a collision. Add a collision checking if-statement that temporarily changes the fill color of the balls to red if they collide, otherwise change it back to white
    9. Challenges:
      • Play around with stroke weight and color
      • Add friction (you'll need to create new variables) to slow down the ball

Friday (11/2/18)

Agenda:

  • Misc Quiz on Canvas
  • More advanced mouse fun
  • Fancy Buttons Assignment
    1. Create 4 buttons on the screen of some color of your choice (use the same color for all 4 buttons)
    2. Hovering over a button changes its color shade darker and increases the stroke weight around that particular button
    3. Pressing the button makes the color shade even darker (darker than hover)
    4. Releasing the button should return it to its original color. Depending on how you create your program, you may not need to define mouseReleased()
  • Complete Bouncing Ball
  • We will combine our new mouse knowledge with the bouncing ball lab to create a simple pool program that uses the mouse to control hitting a ball to hit another ball
    1. Create a ball on the screen
    2. When the mouse is clicked, you should draw a green line from the middle of the ball to the mouse pointer
    3. Releasing the mouse changes the ball's velocity (dx, dy) using the difference between (x, y) and (mouseX, mouseY)

Archives