Browse Source

Complete White Belt Games

Michael Tang 3 years ago
parent
commit
e6d0e9fc2d

BIN
.DS_Store


+ 8 - 7
01-white/01-00-coded-messages.js

@@ -3,13 +3,14 @@
 
 Sensei Notes
 * Provide the Ninja with two pieces of paper, a pen, and scissors.
-* Instruct the Ninja to write their name twice, once in all capital letters and once in all lowercase letters.
+* Instruct the Ninja to write their name twice, once in all capital letters 
+and once in all lowercase letters.
 * Make sure they leave enough room to cut each letter out.
-* Have the Ninja arrange the letters to recreate their name using a mix of upper and lowercase letters,
-modeling if necessary.
-* Have the Ninja make and record as many combinations as they can. It's okay if they don't make every single
-combination.
-* Explain how while humans read CoDeY and coDEY as the same thing, computers do not.
-Provide an example of when you made a mistake like this and how it is okay.
+* Have the Ninja arrange the letters to recreate their name using a mix of upper 
+and lowercase letters, modeling if necessary.
+* Have the Ninja make and record as many combinations as they can. It's okay if 
+they don't make every single combination.
+* Explain how while humans read CoDeY and coDEY as the same thing, computers do 
+not. Provide an example of when you made a mistake like this and how it is okay.
 
  */

+ 49 - 36
01-white/01-01-zombie-island.js

@@ -6,50 +6,63 @@ Sensei Notes
 * Guide the Ninja through their first time navigating through the GDP.
 * Stress the importance of reading the manual carefully.
 * The first few games focus on adding and modifying GDP objects.
-*Help the Ninjas navigate through the Game Objects menu and the Events, Debug, and Properties tabs.
-* If the Ninja is having issues viewing the screen, assist in making the text bigger or smaller.
-* The goal of this game is for the Ninjas to have a fun and welcoming introduction to the GDP and Code
-Ninjas.
+*Help the Ninjas navigate through the Game Objects menu and the Events, Debug, 
+and Properties tabs.
+* If the Ninja is having issues viewing the screen, assist in making the text 
+bigger or smaller.
+* The goal of this game is for the Ninjas to have a fun and welcoming 
+introduction to the GDP and Code Ninjas.
 * Cultivate curiosity and problem solving, not perfection and copy/pasting.
 * There is no coding in this activity.
-* The Ninja should be able to navigate the GDP and change the properties of existing objects.
+* The Ninja should be able to navigate the GDP and change the properties of 
+existing objects.
 
 Solution Steps
 1 Make sure the Ninja understands the Student Dojo interface.
-2 Make sure the Ninja knows the difference between Code Combat, the GDP, and the Curriculum.
-3 If the Ninja is not in the White Belt path, help them navigate to it. Make sure they click the correct game.
+2 Make sure the Ninja knows the difference between Code Combat, the GDP, and the 
+Curriculum.
+3 If the Ninja is not in the White Belt path, help them navigate to it. Make sure 
+they click the correct game.
 4 Help the Ninja find and understand the Start Game and Stop Game buttons.
-S Let the Ninja play the game for a few minutes. Remember that this first game will set the tone for the Ninja's
-future experiences in your Dojo.
-6 Help the Ninja understand that the Game Objects menu contains only some of the objects in the Scene. In
-the early belts, only the objects that are referenced in the curriculum will be visible to the Ninjas.
+S Let the Ninja play the game for a few minutes. Remember that this first game 
+will set the tone for the Ninja's future experiences in your Dojo.
+6 Help the Ninja understand that the Game Objects menu contains only some of the 
+objects in the Scene. In the early belts, only the objects that are referenced in 
+the curriculum will be visible to the Ninjas.
 7 Make sure the Ninja understands how the Game Objects menu works.
-8 Make sure that the cannonBall object was selected. Explain that the Properties tab will change only the
-selected object.
-9 Currently, the GDP will not update an object until the property box loses focus. Get the Ninjas in a habit of
-changing a value and clicking on a different box or area of the Properties tab.
+8 Make sure that the cannonBall object was selected. Explain that the Properties 
+tab will change only the selected object.
+9 Currently, the GDP will not update an object until the property box loses focus.
+Get the Ninjas in a habit of changing a value and clicking on a different box or 
+area of the Properties tab.
 10 Verify that the Ninja's scene looks like the pictures in the manual.
-11 Help the Ninja find the Scale Y property box. Remind them that to see updates they must click off the box.
+11 Help the Ninja find the Scale Y property box. Remind them that to see updates 
+they must click off the box.
 12 Let the Ninja play their modified game for a few minutes.
-13 Make sure the Ninja selects the cannonBall game object from the Game Objects menu.
-14 Let the Ninja play around with the Scale X and Scale Y values. If they play with other values, let them know
-that they see unexpected changes or no difference at all.
-15 Help the ninja find the zombie and gZombie game objects. Both the objects are off the screen, so any
-changes they make will not be seen until they play the game and the zombies appear on the screen.
-16 Let the Ninja play the game for a few minutes. Help them find the save and submit buttons. Explain this
-process and how it lets the Senseis grade their games.
+13 Make sure the Ninja selects the cannonBall game object from the Game Objects 
+menu.
+14 Let the Ninja play around with the Scale X and Scale Y values. If they play 
+with other values, let them know that they see unexpected changes or no 
+difference at all.
+15 Help the ninja find the zombie and gZombie game objects. Both the objects are 
+off the screen, so any changes they make will not be seen until they play the 
+game and the zombies appear on the screen.
+16 Let the Ninja play the game for a few minutes. Help them find the save and 
+submit buttons. Explain this process and how it lets the Senseis grade their 
+games.
 
 Sensei Stops
-5 Tell a Sensei how to go to the Dojo, open the GDP, and open a Gome Scene.
-Correct the Ninja and model where necessary. Ask them more questions like "How did you know which
-game scene to open?" and "How do you stop a game?"
-10 Increasing the value of SCALE X stretched the cannonball horizontally. Tell a Sensei what you think will
-happen to the cannonball if you increase the value of SCALE Y.
-Ask the Ninja to explain their reasoning behind their prediction. Guide them as they change the SCALE Y
-value, then ask them what it did. Ask them to define scale, x, and yin their own words.
-15 Tell a Sensei how you changed the size of the zombies. Explain how it was similar and how it was different
-from when you changed the size of the cannonball.
-Ask the Ninja to change the scale of one of the zombies again and watch how they do it. If they are stuck or
-struggle, gently nudge them in the right direction.
-
-**/
+5 Tell a Sensei how to go to the Dojo, open the GDP, and open a Game Scene.
+Correct the Ninja and model where necessary. Ask them more questions like 
+"How did you know which game scene to open?" and "How do you stop a game?"
+10 Increasing the value of SCALE X stretched the cannonball horizontally. Tell a 
+Sensei what you think will happen to the cannonball if you increase the value of 
+SCALE Y.
+Ask the Ninja to explain their reasoning behind their prediction. Guide them as 
+they change the SCALE Y value, then ask them what it did. Ask them to define 
+scale, x, and y in their own words.
+15 Tell a Sensei how you changed the size of the zombies. Explain how it was 
+similar and how it was different from when you changed the size of the cannonball.
+Ask the Ninja to change the scale of one of the zombies again and watch how they 
+do it. If they are stuck or struggle, gently nudge them in the right direction.
+**/

+ 54 - 43
01-white/01-02 Shapeshifter.js

@@ -1,58 +1,69 @@
 /**
-Ninjas investigate how changing an object's properties visually affects the object in the scene. 
+Ninjas investigate how changing an object's properties visually affects the 
+object in the scene. 
 * scale
 * opacity
 * rotation
 * width/height
 
 Sensei Notes
-* The goal of this activity and the other activities in section 1 is to continue to develop familiarity with the GDP
-before Ninjas start coding.
-* Ninjas are instructed to add any shape, change the properties, and then delete the shape. If they struggle,
-then help and have them repeat the process with each shape.
-* The Z value is briefly touched on, but it might require a more detailed explanation. Work with the Ninja to
-find the object in the physical Dojo that is farthest away from the Ninja. Assign this real-world object a z
-value of 0. Then find another object on the Ninja's desk like a laptop or pen and assign it a z value of 5. Have
-the Ninja assign four other objects with appropriate z values of 1, 2, 3, and 4 . Explain how the object with a z
-value of 2 is closer to the Ninja than the object with a value of 1, but it is farther away than the object with a
-value of 4.
-* Make sure that the Ninjas don't get overwhelmed with all the shapes and properties in the GDP. Familiarity
-with the interface is more important than understanding each property.
+* The goal of this activity and the other activities in section 1 is to continue 
+to develop familiarity with the GDP before Ninjas start coding.
+* Ninjas are instructed to add any shape, change the properties, and then delete 
+the shape. If they struggle, then help and have them repeat the process with each 
+shape.
+* The Z value is briefly touched on, but it might require a more detailed 
+explanation. Work with the Ninja to find the object in the physical Dojo that is 
+farthest away from the Ninja. Assign this real-world object a z value of 0. Then 
+find another object on the Ninja's desk like a laptop or pen and assign it a z 
+value of 5. Have the Ninja assign four other objects with appropriate z values of 
+1, 2, 3, and 4 . Explain how the object with a z value of 2 is closer to the 
+Ninja than the object with a value of 1, but it is farther away than the object 
+with a value of 4.
+* Make sure that the Ninjas don't get overwhelmed with all the shapes and 
+properties in the GDP. Familiarity with the interface is more important than 
+understanding each property.
 * There is no coding in this activity.
 * The Ninja should be able to navigate the GDP and add new objects.
 * The Ninja should be able to change the properties of objects.
 
 Solution Steps
-1 As the Ninja navigates to the correct scene, ask them "What's the next step?" to see if they can navigate the
-GDP.
-2 Explain that this activity requires the student to add and modify their very own shapes. They will need to
-recreate the logo in the scene, but in the next activity they will have complete creative freedom.
-3 The manual uses a circle, but let the Ninja add any shape to the scene. It will be deleted in a later step.
-4 Help the Ninja select their shape and open the Properties tab. Explain that they can either click on the shape
-in the scene or the name of the shape in the Game Objects menu.
-5 Let the Ninja play with the properties and investigate what each does. During your Sensei Stop, ask what
-they did to their shape.
-6 Again, let the Ninja play with the properties and investigate what each does. If the Ninja selected a circle,
-discuss why rotation doesn't seem to do anything. Explain how you cannot see the changes of the speed
-property because the object is not moving.
-7 Let the Ninja play with the colors of the object. If the shape has any special properties, let the Ninja play with
-and investigate what each does.
-8 Help the Ninja find the delete button. Stress that you cannot recover a deleted object.
-9 Explain the four shapes that are required. Have the Ninja verbalize how they think they need to approach the
-problem.
+1 As the Ninja navigates to the correct scene, ask them "What's the next step?" 
+to see if they can navigate the GDP.
+2 Explain that this activity requires the student to add and modify their very 
+own shapes. They will need to recreate the logo in the scene, but in the next 
+activity they will have complete creative freedom.
+3 The manual uses a circle, but let the Ninja add any shape to the scene. It will 
+be deleted in a later step.
+4 Help the Ninja select their shape and open the Properties tab. Explain that 
+they can either click on the shape in the scene or the name of the shape in the 
+Game Objects menu.
+5 Let the Ninja play with the properties and investigate what each does. During 
+your Sensei Stop, ask what they did to their shape.
+6 Again, let the Ninja play with the properties and investigate what each does. 
+If the Ninja selected a circle, discuss why rotation doesn't seem to do anything. 
+Explain how you cannot see the changes of the speed property because the object 
+is not moving.
+7 Let the Ninja play with the colors of the object. If the shape has any special 
+properties, let the Ninja play with and investigate what each does.
+8 Help the Ninja find the delete button. Stress that you cannot recover a deleted 
+object.
+9 Explain the four shapes that are required. Have the Ninja verbalize how they 
+think they need to approach the problem.
 10 Make sure the Ninja's logo is like the image in step 9.
 
 Sensei Stops
-5 Tell a Sensei what the OPACITY property did to your shape. What is the maximum value? What is the
-minimum value?
-The definition of opacity is never explicitly stated in the manual. Ninjas should experiment and come up with
-their own definition and understanding. If they struggle, tell them to slide it to the right and ask them about
-what the shape looks like and the value. Tell them to slide it to the middle and ask them what changed about
-the shape and what changed about the value. Ask them to predict what will happen when the slider is all the
-way to the left.
-10 Tell a Sensei what you did to create your logo. What shape did you odd first? How did you make sure the
-shapes were in the correct places?
-Ask the Ninja if they thought this was easy or hard. The next activity requires them to build their own scene
-from nothing, so they must understand how to add objects and edit properties.
-
- */
+5 Tell a Sensei what the OPACITY property did to your shape. What is the maximum 
+value? What is the minimum value?
+The definition of opacity is never explicitly stated in the manual. Ninjas should 
+experiment and come up with their own definition and understanding. If they 
+struggle, tell them to slide it to the right and ask them about what the shape 
+looks like and the value. Tell them to slide it to the middle and ask them what 
+changed about the shape and what changed about the value. Ask them to predict 
+what will happen when the slider is all the way to the left.
+10 Tell a Sensei what you did to create your logo. What shape did you odd first? 
+How did you make sure the shapes were in the correct places?
+Ask the Ninja if they thought this was easy or hard. The next activity requires 
+them to build their own scene from nothing, so they must understand how to add 
+objects and edit properties.
+*/

+ 19 - 17
01-white/01-03-PY-digital-painting.js

@@ -12,28 +12,30 @@ to develop familiarity with the GDP before Ninjas start coding.
 * Provide the Ninja with paper and drawing utensils, ideally colored pencils.
 * If the Ninja is having a difficult time deciding what to draw, ask them about 
 some of their favorite movies, shows, or games.
-* If a Ninja wants to jump right into the GDP, make sure that they take the time to
-plan out what they aregoing to create. Stress that it is okay to change their ideas 
-in the GDP later.
+* If a Ninja wants to jump right into the GDP, make sure that they take the time 
+to plan out what they aregoing to create. Stress that it is okay to change their 
+ideas in the GDP later.
 * There is no coding in this activity.
 * The Ninja should be able to navigate the GDP and add new objects.
 * The Ninja should be able to change the properties of objects.
 
 Solution Steps
 1 Provide the Ninja with paper and drawing utensils.
-2 Explain that the GDP only knows a few basic shapes but that they can create complex objects out of many
-simple shapes.
-3 Help the Ninjas navigate to the correct scene. Make sure they know where to do and can do it without
-assistance.
-4 Review the Ninja's sketch and ask how they are going to begin to recreate it in the GDP.
-5 Review the Ninja's final scene to see if they demonstrated mastery of adding and modifying GDP shapes.
+2 Explain that the GDP only knows a few basic shapes but that they can create 
+complex objects out of many simple shapes.
+3 Help the Ninjas navigate to the correct scene. Make sure they know where to do 
+and can do it without assistance.
+4 Review the Ninja's sketch and ask how they are going to begin to recreate it in 
+the GDP.
+5 Review the Ninja's final scene to see if they demonstrated mastery of adding 
+and modifying GDP shapes.
 
 Sensei Stops
-5 Tello Sensei about your digital pointing. What is it? Why did you make it? Was it easy or hard to turn o real
-drawing into o digital piece of art?
-The goal of this activity was to let the Ninja be creative while also increasing their proficiency navigating the
-GDP. This is also a good time to make personal connections with your Ninja. Listen to their answers and ask
-follow-up questions. Ask if there is a story behind their scene. Do they like art or programming more? Do you
-have a relatable story or experience to share with the Ninja?
-
- */
+5 Tell a Sensei about your digital painting. What is it? Why did you make it? 
+Was it easy or hard to turn a real drawing into o digital piece of art?
+The goal of this activity was to let the Ninja be creative while also increasing 
+their proficiency navigating the GDP. This is also a good time to make personal 
+connections with your Ninja. Listen to their answers and ask follow-up questions. 
+Ask if there is a story behind their scene. Do they like art or programming more? 
+Do you have a relatable story or experience to share with the Ninja?
+*/

+ 15 - 15
01-white/02-00-ninja-says.js

@@ -1,18 +1,18 @@
 /**
-Ninjas are introduced to the concept of functions by verbally instructing a "Sensei Robot" that can only perform
-8 simple operations.
+Ninjas are introduced to the concept of functions by verbally instructing a 
+"Sensei Robot" that can only perform 8 simple operations.
 
 Sensei Notes
-* In this activity, the Sensei will be at the board with a marker and the ninja will instruct the Sensei how to draw
-the ninja image.
-* If the Ninja asks you do perform an action that is not one of the 8 listed, then respond with "I do not know
-what that means."
-* If the Ninja uses a command, perform exactly what they ask. If they say "move up" but don't specify how
-long, then move up forever.
-*  The goal is to provide a visual "anchor" for how a programmer interacts with a computer. You should be able
-to reference this activity in the future when you need to explain why code is behaving a certain way. For
-example, if a Ninja codes to move left when the left arrow is pressed but they leave out the negative sign,
-the computer is doing exactly what is told to do. The Ninja must alter the instructions to correct the
-computer's output.
-
- */
+* In this activity, the Sensei will be at the board with a marker and the ninja 
+will instruct the Sensei how to draw the ninja image.
+* If the Ninja asks you do perform an action that is not one of the 8 listed, 
+then respond with "I do not know what that means."
+* If the Ninja uses a command, perform exactly what they ask. If they say 
+"move up" but don't specify how long, then move up forever.
+*  The goal is to provide a visual "anchor" for how a programmer interacts with a 
+computer. You should be able to reference this activity in the future when you 
+need to explain why code is behaving a certain way. For example, if a Ninja codes 
+to move left when the left arrow is pressed but they leave out the negative sign,
+the computer is doing exactly what is told to do. The Ninja must alter the 
+instructions to correct the computer's output.
+*/

+ 59 - 47
01-white/02-01-spin-a-star.js

@@ -1,6 +1,7 @@
 /**
-Ninjas code their first function by using the built in GDP spin function. They reference an object by name and
-investigate how changing parameters affect the targeted object.
+Ninjas code their first function by using the built in GDP spin function. They 
+reference an object by name and investigate how changing parameters affect the 
+targeted object.
 
 New Vocabulary and Concepts
 * GDP spin() function
@@ -15,62 +16,73 @@ Reinforced Vocabulary and Concepts
 Sensei Notes
 * This activity is the Ninja's first introduction into coding.
 * The Ninjas need to add and customize a star.
-* They may decorate the scene, but they must have one object named "star" to complete the coding portion
-of the activity.
-* All the coding in White Belt takes place in the scene's update every frame event. If you see a Ninja coding on
-an object or in a different event, help them move their code to the right place.
-* Reference the Coded Messages and Ninja Says activities when explaining functions. Functions, as well as
-objects, have unique case sensitive names. The GDP only understands spin(object, rate), so stress that the
-Ninja needs to make sure they have the exact name and the correct parameters. You can reference the
+* They may decorate the scene, but they must have one object named "star" to 
+complete the coding portion of the activity.
+* All the coding in White Belt takes place in the scene's update every frame 
+event. If you see a Ninja coding on an object or in a different event, help them 
+move their code to the right place.
+* Reference the Coded Messages and Ninja Says activities when explaining 
+functions. Functions, as well as objects, have unique case sensitive names. The 
+GDP only understands spin(object, rate), so stress that the Ninja needs to make 
+sure they have the exact name and the correct parameters. You can reference the
 Debug tab if you feel the Ninja will understand it.
-* Semicolons are not required for JavaScript code to run and execute but using them is a good practice to help
-communicate the concept of statements.
-* This activity has a lot of new vocabulary, so consider writing definitions on the board and having the Ninja
-come up with examples or their own ways to explain the concepts.
+* Semicolons are not required for JavaScript code to run and execute but using 
+them is a good practice to help communicate the concept of statements.
+* This activity has a lot of new vocabulary, so consider writing definitions on 
+the board and having the Ninja come up with examples or their own ways to explain 
+the concepts.
 
 Solution Steps
 1 Make sure the Ninja can navigate to the correct scene on their own.
-2 Make sure the Ninja adds only one star to the scene. If they want to add more shapes, then tell them they
-can do that after they complete the lesson content. It is best if the scene is not cluttered with other objects.
-3 Let the Ninja customize their star. Make sure that it you will be able to see it being rotated . The rotation of a
-star with a very large number of points or a similar inner and outer radius will be difficult to see. The object
-name is important from this activity on. Make sure that the Ninja keeps this object's default name of star.
-4 Make sure the Ninja is in the scene's update every frame event. All coding in the White Belt will take place
-here, so it is essential that the Ninjas develop a habit of checking where they are before they start coding.
-S Instruct the Ninjas to copy the code exactly. Make sure they know the location of each character on the
-keyboard. Explain the purpose of a semicolon.
-    spin(star, 10)
-6 Ask the Ninja if they predicted correctly. If not, have them explain what happened. Ask the Ninja to connect
-the result in the scene to the code.
-7 Explain the three pieces of the spin function. Explain the three rules of functions. If the Ninja doesn't seem to
-understand, work with them to come up with real world actions that could have parameters that alter the
-outcome. For example, riding a bike could have a parameter of speed.
-8 Make sure the ninja changes only the second parameter. The star should spin the same direction, just
-significantly faster.
+2 Make sure the Ninja adds only one star to the scene. If they want to add more 
+shapes, then tell them they can do that after they complete the lesson content. 
+It is best if the scene is not cluttered with other objects.
+3 Let the Ninja customize their star. Make sure that it you will be able to see 
+it being rotated . The rotation of a star with a very large number of points or a 
+similar inner and outer radius will be difficult to see. The object name is 
+important from this activity on. Make sure that the Ninja keeps this object's 
+default name of star.
+4 Make sure the Ninja is in the scene's update every frame event. All coding in 
+the White Belt will take place here, so it is essential that the Ninjas develop a 
+habit of checking where they are before they start coding.
+5 Instruct the Ninjas to copy the code exactly. Make sure they know the location 
+of each character on the keyboard. Explain the purpose of a semicolon.
+    spin(star, 10);
+6 Ask the Ninja if they predicted correctly. If not, have them explain what 
+happened. Ask the Ninja to connect the result in the scene to the code.
+7 Explain the three pieces of the spin function. Explain the three rules of 
+functions. If the Ninja doesn't seem to understand, work with them to come up 
+with real world actions that could have parameters that alter the outcome. 
+For example, riding a bike could have a parameter of speed.
+8 Make sure the ninja changes only the second parameter. The star should spin the 
+same direction, just significantly faster.
     spin(star, 10); 
     spin(star, 200);
-9 Make sure the ninja changes only the second parameter. The star should spin the same direction, just
-significantly slower.
+9 Make sure the ninja changes only the second parameter. The star should spin the 
+same direction, just significantly slower.
 Code Diff:
     spin(star, 200); 
     spin(star, l);
-10 Ask the Ninja how they feel about writing their first line of code. Ask them to explain what each part of the
-code does.
+10 Ask the Ninja how they feel about writing their first line of code. Ask them 
+to explain what each part of the code does.
+*/
 
- */
 spin(star, 1);
 
 /**
 Sensei Stops
-5 Tell a Sensei what you think is going to happen when you start your game. Will the star move? How?
-Make sure that the Ninja has the correct line of code. Before the Ninja plays the game, they should predict
-what will happen to their star. No matter what their answer is, ask them why they thought that. If they have
-a fundamental misunderstanding, reference the Ninja Says activity to get them back on the right path. If the
-Ninja pressed play too early and has already seen what happens to the star, get them to explain how the line
-of code caused the star to spin.
-10 Tell a Sensei what happens when you change the second parameter of the spin function. What happens
-when your number is big? What about o smo// number?
-It is important for the Ninja to make the connection that we are spinning the star at a rate. If we change the
-rate, then the speed of the spin changes. They should be able to explain that a bigger number makes it spin
-faster and a lower number makes it spin slower. Encourage them to experiment with different numbers.
- */
+5 Tell a Sensei what you think is going to happen when you start your game. Will 
+the star move? How?
+Make sure that the Ninja has the correct line of code. Before the Ninja plays the 
+game, they should predict what will happen to their star. No matter what their 
+answer is, ask them why they thought that. If they have a fundamental 
+misunderstanding, reference the Ninja Says activity to get them back on the right 
+path. If the Ninja pressed play too early and has already seen what happens to 
+the star, get them to explain how the line of code caused the star to spin.
+10 Tell a Sensei what happens when you change the second parameter of the spin 
+function. What happens when your number is big? What about a small number?
+It is important for the Ninja to make the connection that we are spinning the 
+star at a rate. If we change the rate, then the speed of the spin changes. They 
+should be able to explain that a bigger number makes it spin faster and a lower 
+number makes it spin slower. Encourage them to experiment with different numbers.
+*/

+ 40 - 35
01-white/02-02-seeing-stars.js

@@ -11,36 +11,38 @@ Reinforced Vocabulary and Concepts
 
 Sensei Notes
 * The Ninjas will not add any objects to the scene.
-* This activity introduces an error on purpose to stress the importance of GDP object names. The Debug tab is
-not a focus of the White Belt.
+* This activity introduces an error on purpose to stress the importance of GDP 
+object names. The Debug tab is not a focus of the White Belt.
 
 Solution Steps
 1 Make sure the Ninja opens the correct scene.
 2 Make sure the Ninja is on the correct object and in the correct event.
-3 This piece of code is the same as the first piece of code in the previous activity. The Ninjas need to realize
-that the GDP acts on objects with specific names. There is not an object named "star' in this scene, so the
-GDP does not know what to do.
+3 This piece of code is the same as the first piece of code in the previous 
+activity. The Ninjas need to realize that the GDP acts on objects with specific 
+names. There is not an object named "star' in this scene, so the GDP does not 
+know what to do.
     spin(star, 10);
-4 No stars should be spinning. You can ask the Ninja what they think is wrong, but they should not know why
-at this point.
-5 This is could be the Ninja's first scene that is "broken," so stress that debugging is part of programming.
-There is no "right" or "wrong" answer or way to program. The Error in the console should be "ReferenceError:
-star is not defined."
-6 Explain that each object has a unique name and that the names of the three stars in this scene are
-yellowStar, orangeStar, and greenStar.
-7 Have the ninja change only the first parameter from star to yellowStar. When the Ninja plays the game, only
-the yellow star should be spinning.
-8 This is the first time that the Ninja is adding more than one line of code. Make sure they understand the enter
-key moves to the next line. When the Ninja plays, the yellow and orange stars should be spinning at the
-same exact rate.
-9 This is the first time Ninjas are expected to produce their own line of code from nothing. If they struggle,
-help them use the existing two lines as a model for the new line. The first parameter should now be
-greenStar.
-10 Before the Ninja submits their game, make sure they understand the purpose of functions. We can ask the
-GDP to perform actions on objects. While pieces of functions might change, they always have a name,
-parentheses, and zero or more parameters.
-
- */
+4 No stars should be spinning. You can ask the Ninja what they think is wrong, 
+but they should not know why at this point.
+5 This is could be the Ninja's first scene that is "broken," so stress that 
+debugging is part of programming.
+There is no "right" or "wrong" answer or way to program. The Error in the console 
+should be "ReferenceError: star is not defined."
+6 Explain that each object has a unique name and that the names of the three 
+stars in this scene are yellowStar, orangeStar, and greenStar.
+7 Have the ninja change only the first parameter from star to yellowStar. 
+When the Ninja plays the game, only the yellow star should be spinning.
+8 This is the first time that the Ninja is adding more than one line of code. 
+Make sure they understand the enter key moves to the next line. When the Ninja 
+plays, the yellow and orange stars should be spinning at the same exact rate.
+9 This is the first time Ninjas are expected to produce their own line of code 
+from nothing. If they struggle, help them use the existing two lines as a model 
+for the new line. The first parameter should now be greenStar.
+10 Before the Ninja submits their game, make sure they understand the purpose of 
+functions. We can ask the GDP to perform actions on objects. While pieces of 
+functions might change, they always have a name, parentheses, and zero or more 
+parameters.
+*/
 
 spin(yellowStar, 10);
 spin(orangeStar, 10);
@@ -48,13 +50,16 @@ spin(greenStar, 10);
 
 /**
 Sensei Stops
-5 Tello Sensei whot you think this error means. What does it mean when it soys, "star is not defined?"
-Ask the Ninja what "star" is in this context. Remind them that it was referring to an object in the scene. Ask
-the Ninja what happens if you call them by the wrong name? Would they respond? Of course not! That must
-mean that we don't have the correct name of any of the stars.
-10 Tell a Sensei about line 3 of your code. How did you know what name to use? What are the components of a
-function?
-It is important to understand the thought process of the Ninja. They came up with the code on their own, so
-ask how they knew what to type. See if they remember the definitions of function and parameter. See if they
-remember the parameters of the spin function.
- */
+5 Tell a Sensei what you think this error means. What does it mean when it says, 
+"star is not defined?"
+Ask the Ninja what "star" is in this context. Remind them that it was referring 
+to an object in the scene. Ask the Ninja what happens if you call them by the 
+wrong name? Would they respond? Of course not! That must mean that we don't have 
+the correct name of any of the stars.
+10 Tell a Sensei about line 3 of your code. How did you know what name to use? 
+What are the components of a function?
+It is important to understand the thought process of the Ninja. They came up with 
+the code on their own, so ask how they knew what to type. See if they remember 
+the definitions of function and parameter. See if they remember the parameters of 
+the spin function.
+*/

+ 37 - 24
01-white/02-03-PY-under-the-stars.js

@@ -1,5 +1,6 @@
 /**
-Ninjas will use their knowledge of the GDP, GDP objects, and the spin function to create their own scene.
+Ninjas will use their knowledge of the GDP, GDP objects, and the spin function to 
+create their own scene.
 
 New Vocabulary and Concepts
 * GDP Asset Library
@@ -12,40 +13,52 @@ Reinforced Vocabulary and Concepts
 * Object Names and Renaming
 
 Sensei Notes
-* The Ninja needs to demonstrate mastery of the GDP by creating a scene from scratch.
-* There are a lot of Ninja characters, backgrounds, and other images in the GDP Assets that can be accessed
-by clicking on the magnifying glass on the bottom white bar.
+* The Ninja needs to demonstrate mastery of the GDP by creating a scene from 
+scratch.
+* There are a lot of Ninja characters, backgrounds, and other images in the GDP 
+Assets that can be accessed by clicking on the magnifying glass on the bottom 
+white bar.
 * The Ninja should compose a scene to the best of their ability.
 * Encourage them to experiment with changing shape properties.
-* Stress the importance of knowing the name of each object. Step 3 shows how to rename an object.
+* Stress the importance of knowing the name of each object. Step 3 shows how to 
+rename an object.
 
 Solution Steps
 1 Make sure the Ninja opens the correct scene.
-2 Encourage the Ninja to be creative within the bounds of the activity. The end goal is to use the spin function
-on their own game objects. Changing the offset of an object will drastically change how the object responds
-to the spin function. By using an offset, you can simulate shooting stars. Encourage them create complex
-items out of the simple shapes. For example, a telescope can be made from rectangles for the legs, an ellipse
-for the body, and a circle for the lens.
-3 The GDP gives generic names with numbers to all new objects. Help the Ninja pick appropriate names.
-4 Make sure the Ninja is coding in the scene's Update Every Frame event. If they coded somewhere else, help
-them copy and paste the code into the correct location. Because they will be adding to the scene, it is easy
-to lose track of what object is selected. Point out that the name of the selected object is always directly
-under the Events tab. If the Ninjas have a hard time understanding a negative number, help them write the
-code and then ask them what changed.
-5 Before the Ninjas submit their scene, verify that they have used the spin function properly on at least two
-objects. Ask them what a negative number does to the spin direction of an object.
+2 Encourage the Ninja to be creative within the bounds of the activity. 
+The end goal is to use the spin function on their own game objects. Changing the 
+offset of an object will drastically change how the object responds to the spin 
+function. By using an offset, you can simulate shooting stars. Encourage them 
+create complex items out of the simple shapes. For example, a telescope can be 
+made from rectangles for the legs, an ellipse for the body, and a circle for the 
+lens.
+3 The GDP gives generic names with numbers to all new objects. Help the Ninja 
+pick appropriate names.
+4 Make sure the Ninja is coding in the scene's Update Every Frame event. If they 
+coded somewhere else, help them copy and paste the code into the correct location. 
+Because they will be adding to the scene, it is easy to lose track of what object 
+is selected. Point out that the name of the selected object is always directly
+under the Events tab. If the Ninjas have a hard time understanding a negative 
+number, help them write the code and then ask them what changed.
+5 Before the Ninjas submit their scene, verify that they have used the spin 
+function properly on at least two objects. Ask them what a negative number does 
+to the spin direction of an object.
+*/
 
- */
+/**All Ninja scripts for this activity should be unique. At minimum, there should 
+be two spin functions. One function should have a positive spin rate and the 
+other should have a negative spin rate.
+**/
 
-//All Ninja scripts for this activity should be unique. At minimum, there should be two spin functions. One
-//function should have a positive spin rate and the other should have a negative spin rate.
 spin(firstObject, 48);
 spin(secondObject,-330);
 
 /**
 Sensei Stops
-5 Tell a Sensei how you created your scene. Did you use any GDP assets? How did you change the properties?
+5 Tell a Sensei how you created your scene. Did you use any GDP assets? How did 
+you change the properties?
 Explain how you used the spin function.
-This is the last activity before new computer science concepts and GDP functions are introduced. Ensure
-that the Ninja can explain in their own words what they have learned up to this point.
+This is the last activity before new computer science concepts and GDP functions 
+are introduced. Ensure that the Ninja can explain in their own words what they 
+have learned up to this point.
  */

+ 11 - 7
01-white/03-00-myopic-mapper.js

@@ -1,14 +1,18 @@
 /**
-A Ninja and a Sensei will work together to create a detailed map of the Dojo by communicating only verbally.
+A Ninja and a Sensei will work together to create a detailed map of the Dojo by 
+communicating only verbally.
 
 New Vocabulary and Concepts
 * Coordinates
 
 Sensei Notes
-* Provide the Ninja with a piece of graph paper. This can be special graph paper, or you can find a template
-online to print.
-* The goal of this activity is to give a concrete reference point for a coordinate system.
-* If the Ninja does not at first come up with their own coordinate system the first time, that is okay. You can
-talk about what was difficult about communicating and suggest coordinates to solve the problems.
-* Connect the coordinate system created in this activity with the GDP coordinate system.
+* Provide the Ninja with a piece of graph paper. This can be special graph paper, 
+or you can find a template online to print.
+* The goal of this activity is to give a concrete reference point for a 
+coordinate system.
+* If the Ninja does not at first come up with their own coordinate system the 
+first time, that is okay. You can talk about what was difficult about 
+communicating and suggest coordinates to solve the problems.
+* Connect the coordinate system created in this activity with the GDP coordinate 
+system.
  */

+ 37 - 30
01-white/03-01-wall-bounce.js

@@ -1,6 +1,6 @@
 /**
-Ninjas will use the GDP's moveX function to move a ball and then write the if statement that bounces the ball if
-it touches the wall.
+Ninjas will use the GDP's moveX function to move a ball and then write the if 
+statement that bounces the ball if it touches the wall.
 
 New Vocabulary and Concepts
 * Boolean Logic
@@ -13,35 +13,39 @@ Reinforced Vocabulary and Concepts
 
 Sensei Notes
 * This is the first introduction to Boolean logic.
-* Make sure the Ninja understands that true is like yes or on, and that false is like no or off.
+* Make sure the Ninja understands that true is like yes or on, and that false is 
+like no or off.
 
 Solution Steps
 1 Make sure the Ninja opens the correct scene.
-2 To simplify this activity, some of the code is hidden from the Ninja. Make sure the focus is on the logic of
-why and when code is executing and not how it is happening.
-3 Make sure the Ninja is in the scene's Update Every Frame event. The name of the object is circle.
+2 To simplify this activity, some of the code is hidden from the Ninja. Make sure 
+the focus is on the logic of why and when code is executing and not how it is 
+happening.
+3 Make sure the Ninja is in the scene's Update Every Frame event. The name of the 
+object is circle.
     moveX(circle);
-4 Relate the moveX function to the spin function. Ask the Ninja to explain the similarities and differences
-between the two.
+4 Relate the moveX function to the spin function. Ask the Ninja to explain the 
+similarities and differences between the two.
 5 The ball should not bounce, but the text should change from false to true.
-6 Help the Ninja type the if statement, making sure that the brackets and parentheses are in the correct
-places. This is a lot more code than in previous games but introducing Boolean logic will allow for more
-interactive games. Explain that moveX is a GDP function and isTouchingWall is a function that this circle
-knows.
+6 Help the Ninja type the if statement, making sure that the brackets and 
+parentheses are in the correct places. This is a lot more code than in previous 
+games but introducing Boolean logic will allow for more interactive games. 
+Explain that moveX is a GDP function and isTouchingWall is a function that this 
+circle knows.
     if(circle.isTouchingWall()) {
 
     }
-7 Explain the different parts of an if statement. Walk through the example of looking outside and grabbing an
-umbrella if it is raining . Ask the Ninja to come up with another real-world situation and write a code version
-of it together.
-8 Help the Ninja place the new line of code inside the if statement. Explain again that we are asking the circle
-to perform its function named bounce.
+7 Explain the different parts of an if statement. Walk through the example of 
+looking outside and grabbing an umbrella if it is raining . Ask the Ninja to 
+come up with another real-world situation and write a code version of it together.
+8 Help the Ninja place the new line of code inside the if statement. Explain 
+again that we are asking the circle to perform its function named bounce.
     if(circle.isTouchingWall()) {
         circle.bounce();
         }
 9 The circle should bounce every time it hits the wall.
-10 Before the Ninja submits the scene, make sure they have a basic understanding of if statements and
-Booleans.
+10 Before the Ninja submits the scene, make sure they have a basic understanding 
+of if statements and Booleans.
 */
 moveX(circle);
 
@@ -51,14 +55,17 @@ if(circle.isTouchingWall()) {
 
 /**
 Sensei Stops
-5 Tell a Sense/ why your circle doesn't bounce. What do is mean when circ/e.isTouchingWo/1 is fa lse? What
-about when it is true?
-The Ninja should recognize that we are just asking the ball to move. We have not asked it to bounce yet, but
-it is reporting when it is touching the wall. Ask the Ninja to describe what the circle looks like when it says
-false and compare it to when it says true.
-10 Act out what is happening in the scene with a Sense/. You ore the circle, so soy out loud what you ore
-thinking! You must always move. How often do you ask yourself if you are touching the wall? Once? Every
-step? What happens if you touch the wall?
-Help the Ninja act out this activity. You can use the real walls in the Dojo or come up with other bounds. The
-Ninja should understand that the circle is constantly asking itself if it is touching a wall.
- */
+5 Tell a Sensei why your circle doesn't bounce. What does it mean when 
+circle.isTouchingWall is false? What about when it is true?
+The Ninja should recognize that we are just asking the ball to move. We have not 
+asked it to bounce yet, but it is reporting when it is touching the wall. Ask the 
+Ninja to describe what the circle looks like when it says false and compare it to 
+when it says true.
+10 Act out what is happening in the scene with a Sensei. You are the circle, so 
+say out loud what you are thinking! You must always move. How often do you ask 
+yourself if you are touching the wall? Once? Every step? What happens if you 
+touch the wall?
+Help the Ninja act out this activity. You can use the real walls in the Dojo or 
+come up with other bounds. The Ninja should understand that the circle is 
+constantly asking itself if it is touching a wall.
+ */

+ 56 - 42
01-white/03-02-laser-chase.js

@@ -1,5 +1,6 @@
 /**
-Ninjas create two if statements to use the mouse to control the position of an object in the scene.
+Ninjas create two if statements to use the mouse to control the position of an 
+object in the scene.
 
 New Vocabulary and Concepts
 * Comparison Operators
@@ -19,62 +20,72 @@ Sensei Notes
 
 Solution Steps
 1 Make sure the Ninja opens the correct scene.
-2 Let the Ninja play the game so they can see what functionality needs to be added.
-3 This step introduces pseudocode. As the code becomes more complex, the manual places a larger focus on
-the logic rather than the syntax.
-4 Work with the Ninja to brainstorm and think about the first piece of pseudocode and the situations it applies
-to. Lead them to discover we need a second if statement that covers when the laser is to the right of the
-mouse. Help the Ninja write their pseudocode statement. It is okay if it is not perfect.
+2 Let the Ninja play the game so they can see what functionality needs to be 
+added.
+3 This step introduces pseudocode. As the code becomes more complex, the manual 
+places a larger focus on the logic rather than the syntax.
+4 Work with the Ninja to brainstorm and think about the first piece of 
+pseudocode and the situations it applies to. Lead them to discover we need a 
+second if statement that covers when the laser is to the right of the mouse. 
+Help the Ninja write their pseudocode statement. It is okay if it is not perfect.
 5 Compare and contrast the Ninja's pseudocode with the provided pseudocode.
-6 Make sure the Ninja is coding in the scene's Update Every Frame event. Reference the pseudocode before
-the Ninja types the if statement. The GDP's editor will say there is an error. This is because we have an
-incomplete if statement. This will be fixed in the next step.
+6 Make sure the Ninja is coding in the scene's Update Every Frame event. 
+Reference the pseudocode before the Ninja types the if statement. The GDP's 
+editor will say there is an error. This is because we have an incomplete if 
+statement. This will be fixed in the next step.
     if(){
 
     }
-7 Make sure the Ninja writes the new line of code inside the parentheses. All GDP objects have an x and y
-function that can be used to get or set the object's position. The error is now gone, but the game hasn't
-changed. Ask the Ninja what functionality still needs to be coded.
+7 Make sure the Ninja writes the new line of code inside the parentheses. All 
+GDP objects have an .x() and .y() function that can be used to get or set the 
+object's position. The error is now gone, but the game hasn't changed. Ask the 
+Ninja what functionality still needs to be coded.
     if(laser.x()) {
         
     }
-8 This is the introduction to operators. If the Ninja does not understand what the less than operator means,
-then ask them if a real -world object's age or size is less than another object's age or size.
+8 This is the introduction to operators. If the Ninja does not understand what 
+the less than operator means, then ask them if a real-world object's age or size 
+is less than another object's age or size.
     if(laser.x() < ) {
 
     }
-9 Make sure the Ninja writes the getMouseX function in the correct location of the if statement. This function
-will return the x value of the current or last known mouse position.
+9 Make sure the Ninja writes the getMouseX() function in the correct location of 
+the if statement. This function will return the x value of the current or last 
+known mouse position.
     if(laser.x() < getMouseX()) {
 
     }
-10 Make sure the Ninja writes the new line of code inside the body of the if statement. Since we want to easily
-control the direction that the laser moves, we are using a version of moveX that takes the speed as a second
-parameter. If the second parameter is left out, then the laser will move at the rate of speedX that is set
-directly in the properties tab. A speed of 400 is not too slow or too fast, but the Ninja can change it if they
-want.
+10 Make sure the Ninja writes the new line of code inside the body of the if 
+statement. Since we want to easily control the direction that the laser moves, 
+we are using a version of moveX that takes the speed as a second parameter. If 
+the second parameter is left out, then the laser will move at the rate of speedX 
+that is set directly in the properties tab. A speed of 400 is not too slow or 
+too fast, but the Ninja can change it if they want.
     if(laser.x() < getMouseX()) {
         moveX(laser, 400);
     }
-11 Make sure the Ninja types the new if statement after the first. There will be another error like in step 6.
+11 Make sure the Ninja types the new if statement after the first. There will be 
+another error like in step 6.
     if() {
         
     }
-12 Help the Ninja write the entire conditional statement using the pseudocode and the first if statement. Make
-sure they use the greater than sign.
+12 Help the Ninja write the entire conditional statement using the pseudocode 
+and the first if statement. Make sure they use the greater than sign.
     if(laser.x() > getMouseX()) {
         
     }
-13 Help the Ninja write the body of the second if statement using the pseudocode and the body of the first if
-statement. Mention that since we want the laser to move to the left, we want to use a negative speed.
+13 Help the Ninja write the body of the second if statement using the pseudocode 
+and the body of the first if statement. Mention that since we want the laser to 
+move to the left, we want to use a negative speed.
     if(laser.x() > getMouseX()) {
         moveX(laser, -400);            
     }
-14 This step asks the Ninja to change the speed being passed to the moveX function. Make sure the Ninja
-changes it at least twice to see how a smaller and a larger number affects the speed.
+14 This step asks the Ninja to change the speed being passed to the moveX 
+function. Make sure the Ninja changes it at least twice to see how a smaller and 
+a larger number affects the speed.
 15 Before the Ninja submits the scene, verify that the script is correct.
+*/
 
- */
 if(laser.x() < getMouseX()) {
     moveX(laser, 400);
 }
@@ -85,16 +96,19 @@ if(laser.x() > getMouseX()) {
 
 /**
 Sensei Stops
-5 Read your pseudocode if statement to a Sensei. Explain what your condition is and what happens when that
-condition is met. Why is it helpful to use pseudocode?
-If the Ninja's pseudocode is incorrect, discuss what is wrong and how to correct it. Pseudocode is important
-because it lets you plan before you start coding.
-10 Play your game and explain your code to a Sensei. Be sure to explain the three parts of the condition and the
-code in the body. What do you think you need to change for the second if statement?
-Right now, the laser will only move right towards the mouse. Have the Ninja connect the code to the action
-in the scene. Have the Ninja think about what parts of the if statement will need to change to make the laser
-move in the opposite direction.
-15 Explain to a Sensei how planning out your code before you program it is helpful. Was it easier to understand
-the real code ofter you wrote out the pseudocode?
-Compare planning with pseudocode to brainstorming and outlining before writing in school.
+5 Read your pseudocode if statement to a Sensei. Explain what your condition is 
+and what happens when that condition is met. Why is it helpful to use pseudocode?
+If the Ninja's pseudocode is incorrect, discuss what is wrong and how to correct 
+it. Pseudocode is important because it lets you plan before you start coding.
+10 Play your game and explain your code to a Sensei. Be sure to explain the 
+three parts of the condition and the code in the body. What do you think you 
+need to change for the second if statement? Right now, the laser will only move 
+right towards the mouse. Have the Ninja connect the code to the action in the 
+scene. Have the Ninja think about what parts of the if statement will need to 
+change to make the laser move in the opposite direction.
+15 Explain to a Sensei how planning out your code before you program it is 
+helpful. Was it easier to understand the real code ofter you wrote out the 
+pseudocode? 
+Compare planning with pseudocode to brainstorming and outlining before writing 
+in school.
  */

+ 49 - 0
01-white/03-03-PY-space-zapper.js

@@ -0,0 +1,49 @@
+/**
+Ninjas use what they know about if statements, conditional statements, and the 
+mouse to move an object to complete a game.
+
+New Vocabulary and Concepts
+* GDP getMouseY() function
+* GDP .y() function
+
+Reinforced Vocabulary and Concepts
+* Boolean Logic
+* Comparison Operators
+* Functions and Parameters
+* if() statements
+* Object Names
+* Pseudocode
+
+Sensei Notes
+* This Prove Yourself requires the Ninja to recreate the code from the laser game
+but with y instead of x.
+* Step 4 is a review of the z coordinate. Sometimes the GDP does not properly 
+layer object clones, so the asteroids might not always be where you expect them.
+
+Solution Steps
+1 Make sure the Ninja opens the correct scene.
+2 The Ninja should play the game to see what functionality needs to be added.
+3 This step references Activity 03-02: Laser Chase. The code to complete this 
+activity is the same except laser should be ship and x should be y. Have the 
+Ninja create their own pseudocode to help them plan.
+4 The Ninja can decorate their scene with images, shapes, and emojis. Encourage 
+them to be creative and to make something unique.
+5 Before they save and submit the scene, make sure the script is correct.
+*/
+
+//***********************Scene - Update Every Frame**************************//
+if(ship.y() < getMouseY()){
+    moveY(ship, 400);
+}
+
+if(ship.y() > getMouseY()) {
+    moveY(ship, -400);
+}
+
+/**
+Sensei Stops
+5 Tell a Sensei how you created your scene. How did you use the Z value to place 
+objects in front or behind other objects?
+This is the last game in white belt where Ninjas are asked to add objects to the 
+scene, so make sure they have a good understanding of the process.
+ */

+ 16 - 0
01-white/04-00-code-the-dojo.js

@@ -0,0 +1,16 @@
+/**
+Ninjas use what they know about control flow logic to develop a set of rules 
+about the Dojo.
+
+Reinforced Vocabulary and Concepts
+* Boolean Logic
+* Comparison Operators
+* if() Statements
+
+Sensei Notes
+* The purpose of this activity is to practice control flow and Boolean logic by 
+applying it to real world situations.
+* The manual describes some examples for the Dojo, but you can extend the concept
+to almost any situation.
+* The Ninja should be able to see the cause and effect of Boolean logic.
+ **/

+ 92 - 0
01-white/04-01-cocunut-chaos.js

@@ -0,0 +1,92 @@
+/**
+Ninjas use conditionals and if statements to move an object when a key is pressed.
+
+New Vocabulary and Concepts
+* GDP isKeyPressed() function
+* GDP Keys Object
+
+Reinforced Vocabulary and Concepts
+* Boolean Logic
+* Comparison Operators
+* Functions and Parameters
+* GPD moveX() Function
+* if() Statements
+* Object Names
+* Pseudocode
+
+Sensei Notes
+* This game takes the concepts learned in 03-02 and 03-03 and applies them to 
+keyboard inputs.
+* This activity introduces isKeyPressed() and the Keys object.
+* The steps in section 4 are denser than the previous 3 sections. If a Ninja is 
+getting overwhelmed with how much they need to do at each step, help them break 
+the step down into smaller and more manageable pieces.
+
+Solution Steps
+1 Make sure the Ninja opens the correct scene.
+2 The Ninja should play the game to see what functionality needs to be added. 
+They should write down the provided pseudocode so they can reference it when they 
+write their own.
+3 The Ninja should attempt to write their own pseudocode and then compare it to 
+the provided pseudocode.
+4 Make sure the Ninja has correct pseudocode before they code in the GDP.
+    if(){
+
+    }
+5 Make sure the Ninja places the function call inside the if statement's 
+parentheses. Explain that the GDP uses the isKeyPressed() function to communicate 
+when a key is being pressed by the user. Explain that the Keys object is an easy 
+way to ask the isKeyPressed function about a specific key on the keyboard.
+    if(isKeyPressed(Keys.rightArrow)){
+
+    }
+6 Make sure the Ninja types the new line of code inside the body of the if 
+statement. The name of the GDP object is ninjas and 300 is a good starting move 
+speed.
+    if(isKeyPressed(Keys.rightArrow)){
+        moveX(ninjas, 300);
+    }
+7 Have the Ninja play the game to verify that their code is working. They can 
+change the speed to whatever they think is best.
+8 Make sure the Ninja types the new if statement after the first one.
+    if(){
+
+    }
+9 Make sure the Ninja places the function call inside the if statement's 
+parentheses.
+    if(isKeyPressed(Keys.leftArrow)){
+
+    }
+10 Make sure the Ninja types the new line of code inside the body of the if 
+statement. If they changed the speed of the first if statement, make sure they 
+have the negative version of their speed in this if statement.
+    if(isKeyPressed(Keys.leftArrow)){
+        moveX(ninjas, -300);
+    }
+11 Let the Ninja play the game that they built. Encourage them to playtest it to 
+find the best move speed values.
+12 Before the Ninja submits the game, verify that their code is correct.
+*/
+
+if(isKeyPressed(Keys.rightArrow)){
+    moveX(ninjas, 300);
+}
+
+if(isKeyPressed(Keys.leftArrow)){
+    moveX(ninjas, -300);
+}
+
+/**
+Sensei Stops
+5 Tell a Sensei if isKeyPressed(Keys.rightArrow) returns true of false when the 
+right arrow key is pressed. How about if the space bar is pressed?
+The Ninja should be able to understand that the function will return true if and 
+only if the right arrow key is being pressed. Make sure they understand that the 
+body of the if statement will run only if the condition evaluates to true.
+10 Tell a Sensei how you used your pseudocode to understand the GDP code. Why did 
+we use a negative speed in the second if statement?
+The Ninja should be able to connect the pseudocode they wrote to the code they 
+typed. If they do not understand, then walk through each of the pseudocode and 
+how it translates to JavaScript code. The Ninja should be able to state that a 
+negative x speed moves an object to the left.
+ */

+ 158 - 0
01-white/04-02-hungry-hungry-ninja.js

@@ -0,0 +1,158 @@
+/**
+Ninjas use conditionals and if statements to keep score and move an object when a key is pressed.
+
+Reinforced Vocabulary and Concepts
+* Comparison Operators
+* Functions and Parameters
+* GDP isKeyPressed() Function
+* GDP Keys Object
+* GPD .x() and .y() Functions
+* if() Statements
+* Object Names
+* Pseudocode
+
+Sensei Notes
+* This game introduces the use of the x and y functions to set the position of an object. Previously they were
+used to get the position of an object.
+* This game will give the Ninja the last pieces of knowledge they need to complete the final activity in the
+White Belt.
+* The Ninja will need to write the code to keep score.
+* This is the most code that a Ninja has written in a single game, but it is a series of similar if statements.
+
+Solution Steps
+1 Make sure the Ninja opens the correct scene.
+2 The Ninja should play the game to see what functionality needs to be added.
+3 Have the Ninja copy the provided pseudocode down as a reference.
+4 Have the Ninja copy the provided pseudocode down as a reference.
+5 Have the Ninja write the pseudocode for pressing the down and right arrows based on the pseudocode
+provided in steps 3 and 4.
+6 Make sure the Ninja is in the scene's Update Every Frame event.
+    if() {
+
+    }
+7 Make sure the Ninja places the function call inside the if statement's parentheses. Ask them to explain how
+the GDP uses the isKeyPressed function to communicate when a key is being pressed by the user. Ask them
+to explain that the Keys object is an easy way to ask the isKeyPressed function about a specific key on the
+keyboard.
+    if(isKeyPressed(Keys.upArrow)) {
+
+    }
+8 Make sure the Ninja types the new line of code inside the body of the if statement. The name of the GDP
+object is ninja and we want to set its x position to exactly 400.
+    if(isKeyPressed(Keys.upArrow)) {
+        ninja.x(400);
+    }
+9 The Ninja should play the game and investigate what happens when the up arrow is pressed. The ninja
+object will go to 400 on the x axis, so it will be stuck in the hole.
+10 Make sure the Ninja types the new line of code inside the body of the if statement and sets they value to
+exactly 240.
+    if(isKeyPressed(Keys.upArrow)) {
+        ninja.x(400);
+        ninja.y(240);
+    }
+11 Have the Ninja play the game to see what happens when the up key is pressed. The Ninja should move to
+the top conveyer belt, but it will not be able to move somewhere else.
+12 Make sure the Ninja writes the new if statement after the first if statement. Make sure they correctly place
+the isKeyPressed function and the Keys.leftArrow object.
+    if(isKeyPressed(Keys.leftArrow)) {
+            
+        }
+13 Make sure the Ninja sets the x value to exactly 340.
+    if(isKeyPressed(Keys.leftArrow)) {
+        ninja.x(340);
+    }
+14 Make sure the Ninja types the new line of code inside the body of the if statement and sets they value to
+exactly 300.
+    if(isKeyPressed(Keys.leftArrow)) {
+        ninja.x(340);
+        ninja.y(300);
+    }
+15 The ninja can now move to the top and to the left conveyer belts.
+16 Help the Ninja write a new if statement based off their pseudocode statement from step 5. They should be
+able to use the first two if statements to help them. This code is explicitly provided in the manual in step 18.
+    if(isKeyPressed(Keys.downArrow)) {
+
+    }
+17 Help the Ninja write the code that sets the ninja's position to exactly 400, 360.
+    if(isKeyPressed(Keys.downArrow)) {
+        ninja.x(400);
+        ninja.y(360);
+    }
+18 Verify that the Ninja's code matches and that the ninja in the game moves to the correct place when the
+down arrow is pressed.
+19 Help the Ninja write the final piece of movement code.
+    if(isKeyPressed(Keys.rightArrow)) {
+        ninja.x(460);
+        ninja.y(300);
+    }
+20 The game's movement code is now complete. The ninja can collect the food, but the score is not updating.
+21 Help the Ninja write the final if statement. Explain that the ninja object knows a function called ateFood() that
+will return true when the ninja collects a piece of food off a conveyer belt.
+    if(ninja.ateFood()) {
+
+    }
+22 The ninja object keeps track of the game's score through the ninja.score property. This line of code takes the
+current score, adds one, and updates the value.
+    if(ninja.ateFood()) {
+        ninja.score += 1;
+    }
+23 The Ninja should notice that the game now gets harder, but the score number in the UI does not update.
+Explain that we are keeping track of the score, but not yet displaying it to the user.
+24 Explain that the GDP uses labels to display text to the user. In this game, we need to set the scorelabel's
+text by passing the score to the text function.
+    if(ninja.ateFood()) {
+        ninja.score += 1;
+        scoreLabel.text(ninja.score);
+    }
+25 Before the Ninja submits the game, verify that the score is updating.
+
+ */
+if(isKeyPressed(Keys.upArrow)) {
+    ninja.x(400);
+    ninja.y(240);
+}
+
+if(isKeyPressed(Keys.leftArrow)) {
+    ninja.x(340);
+    ninja.y(300);
+}
+
+if(isKeyPressed(Keys.downArrow)) {
+    ninja.x(400);
+    ninja.y(360);
+}
+
+if(isKeyPressed(Keys.rightArrow)) {
+    ninja.x(460);
+    ninja.y(300);
+}
+
+if(ninja.ateFood()) {
+    ninja.score += 1;
+    scoreLabel.text(ninja.score);
+}
+
+/**
+Sensei Stops
+5 Read over your pseudocode with a Sensei. Talk obout whot you need to change to convert it into real
+JavaScript code.
+The Ninja should be able to explain how to convert the pseudocode into JavaScript code. If they are
+struggling, you can use Coconut Chaos as a reference point.
+10 Before you play your game, tell a Sensei what you think will happen to your ninja. Using the words horizontal,
+vertical, and coordinate, explain the difference between the ninja's x and y values.
+Answers will vary, but Ninjas should be able to pair horizontal with x and vertical with y. They should know
+that x starts at O on the left and increases in value to the right. They should know that y starts at O at the top
+and increases up in value down.
+15 Tell a Sensei what code you still need to write to make your ninja move to the bottom and the right conveyer
+belts.
+The Ninja should be able to explain that they need two more if statements that respond to the down and
+right arrows and move the ninja to the appropriate location.
+20 Tell a Sensei how you planned, coded, ond tested moving the ninja down ond right. What parts were eosy?
+What parts were hard?
+Answers will vary. This is a time for the Ninja to reflect on the process of creating pseudocode,
+programming, and testing.
+25 Explain the difference between ninja.score and scoreLabel to a Sensei. Why do we need both?
+We are keeping track of the value of score with ninja.score and we display the score in the scorelabel GDP
+object. Explain that the ninja is keeping track of how many pieces of food they ate, and they need to tell the
+user since we can't read the ninja's mind.
+ */

+ 55 - 2
01-white/04-03-PY-air-hockey.js

@@ -1,4 +1,40 @@
-// Scene - Update Every Frame
+/**
+Ninjas use conditionals and if statements to keep score and move an object 
+when a key is pressed.
+
+Reinforced Vocabulary and Concepts
+* Boolean Logic
+* Comparison Operators
+* Functions and Parameters
+* GDP isKeyPressed() Function
+* GDP Keys Object
+* GDP moveY() Function
+* GPD .x() and .y() Functions
+* if() Statements
+* Object Names
+* Pseudocode
+
+Decomposition
+* left paddle is controlled with keys (coconut chaos)
+* right paddle is controlled with mouse (laser chase)
+* left side gets a point if ball touches right wall (wall bounce)
+* right side gets a point if ball touches left wall 
+* ball resets to middle after every point (hungry ninja)
+* points are incremented and updated (hungry ninja)
+
+Sensei Notes
+* This Prove Yourself requires the Ninja use every coding concept they have 
+learned in the second half of the White Belt.
+* No code is provided in the manual, but guiding comments are in the scene.
+* The Ninja must reference the games they have created for hints.
+* The game is divided into three sections that require two if statements each.
+* The left paddle moves using the keyboard and the right paddle moves using the 
+mouse.
+* Encourage the Ninja to take their time and thoroughly test at each step.
+ */
+
+
+//*************Scene - Update Every Frame********************//
 /**
  * leftPaddle
  * if the up arrow is pressed, move the leftPaddle up
@@ -44,4 +80,21 @@ if ( ball.isTouchingLeftWall() ) {
     rightScoreLabel.text(rightPaddle.score);
     ball.x(400);
     ball.y(300);
-}
+}
+
+/**
+Sensei Stops
+5 Explain to a Sensei how you used and changed code from Laser Chase and 
+Coconut Chaos to add paddle movement to this game.
+All good programmers know how to repurpose code in different situations. The 
+Ninja should be able to explain the parts of the code that they changed and the 
+parts of the code that they kept the same.
+10 Explain to a Sensei how you used and changed code from Hungry Hungry Ninja to 
+add scoring. How did you teleport the ball?
+The Ninja should be able to explain the parts of the code that they change and 
+the parts of the code that they kept the same.
+15 Tell a Sensei three things that you learned in White Belt. What are three 
+things you still want to learn?
+Let the Ninja reflect on what they learned in White Belt, Ask what their 
+favorite game was. Have them articulate what they still want to learn.
+ */