Presentation on theme: "Lecture 12 or President’s Day Holiday Chapter 7.2 While Loops – Finish up our race of the penguins."— Presentation transcript:
Lecture 12 or President’s Day Holiday Chapter 7.2 While Loops – Finish up our race of the penguins
Hint to getting while loops right Humans naturally think “until” – I’ll keep spending until I run out of money (balance <= 0) – I’ll keep dancing until I fall asleep Computers use “while” loops – the opposite – I’ll keep spending while I still have money (balance > 0) – I’ll keep dancing while I am not asleep – While I have a dirty dish, I’ll keep washing dishes
Let’s have a race… A – Wind up penguin (he just goes) While loop with “walk and spin” inside it – Jet-pack penguin2 (controlled by <- event) Moves forward.5 meters Race to a stop sign (within 2 meters) Whenever someone gets within 2 meters – Stop looping (going)
When should we keep going? e.g. while loop expression true (P1: wind up, P2: jet pack) CasesABCD P1, P2 outsideTTTT P1 inside, P2 outsideTTTF P2 inside, P1 outsideTTFF P1, P2 insideTFFF
Which while loop header (tile) would you use to control the “going”?
This would STOP the game (evaluate to false) when A.Both penguins must be close to the stop sign B.Either penguin is close to the stop sign C.Neither penguin is close to the stop sign D.I don’t know What does the other one do?
CasesE1E2Evaluates To (keep playing while true) P1, P2 outsideTT P1 inside, P2 outside FT P2 inside, P1 outside TF P1, P2 insideFF Truth Table for OR logical operator
CasesE1E2Evaluates To (keep playing while true) P1, P2 outsideTT P1 inside, P2 outside FT P2 inside, P1 outside TF P1, P2 insideFF Truth Table for AND logical operator
Let’s look at the code I wrote:
The jet pack penguin (P2) can move forward on a <- event when A.Neither penguin is close to the stop sign B.The windup penguin is close, but the jet pack penguin isn’t C.The jet pack penguin is close, but the windup penguin isn’t D.Any time (any possible situation of TT, TF, FT, FF)
Both penguins stop moving when someone “close” To fix this we’d need to create how many of the following? 1.Method for <- event handler 2.Method to be called by the windUpAndGo method 3.If statement in <- event handler 4.If statement in penguin move method 5.If statement in windUpAndGo method
Which if statement would you want and why? Allow to move when… C) Both A and B D) Neither A nor B E) I don’t know
Let’s Build This…
2 meters from the stop sign? That seems far! (3-D object representation trickiness) Stop Sign center: in middle SIGN Penguin center: in middle of FEET I want to control stopping by distance of penguin center from BASE of stop sign! Use math – again SQRT( c*c – b*b) SQRT (penguin.distanceTo(stopSign) * penguin.distanceTo(stopSign) – stopSign.height * stopSign.height)