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
 Sensei Notes
 * Provide the Ninja with two pieces of paper, a pen, and scissors.
 * 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.
 * 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.
 * Guide the Ninja through their first time navigating through the GDP.
 * Stress the importance of reading the manual carefully.
 * Stress the importance of reading the manual carefully.
 * The first few games focus on adding and modifying GDP objects.
 * 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.
 * Cultivate curiosity and problem solving, not perfection and copy/pasting.
 * There is no coding in this activity.
 * 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
 Solution Steps
 1 Make sure the Ninja understands the Student Dojo interface.
 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.
 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.
 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.
 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.
 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
 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
 * scale
 * opacity
 * opacity
 * rotation
 * rotation
 * width/height
 * width/height
 
 
 Sensei Notes
 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.
 * 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 navigate the GDP and add new objects.
 * The Ninja should be able to change the properties of objects.
 * The Ninja should be able to change the properties of objects.
 
 
 Solution Steps
 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.
 10 Make sure the Ninja's logo is like the image in step 9.
 
 
 Sensei Stops
 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.
 * 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 
 * If the Ninja is having a difficult time deciding what to draw, ask them about 
 some of their favorite movies, shows, or games.
 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.
 * 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 navigate the GDP and add new objects.
 * The Ninja should be able to change the properties of objects.
 * The Ninja should be able to change the properties of objects.
 
 
 Solution Steps
 Solution Steps
 1 Provide the Ninja with paper and drawing utensils.
 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
 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
 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
 New Vocabulary and Concepts
 * GDP spin() function
 * GDP spin() function
@@ -15,62 +16,73 @@ Reinforced Vocabulary and Concepts
 Sensei Notes
 Sensei Notes
 * This activity is the Ninja's first introduction into coding.
 * This activity is the Ninja's first introduction into coding.
 * The Ninjas need to add and customize a star.
 * 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.
 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
 Solution Steps
 1 Make sure the Ninja can navigate to the correct scene on their own.
 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, 10); 
     spin(star, 200);
     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:
 Code Diff:
     spin(star, 200); 
     spin(star, 200); 
     spin(star, l);
     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);
 spin(star, 1);
 
 
 /**
 /**
 Sensei Stops
 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
 Sensei Notes
 * The Ninjas will not add any objects to the scene.
 * 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
 Solution Steps
 1 Make sure the Ninja opens the correct scene.
 1 Make sure the Ninja opens the correct scene.
 2 Make sure the Ninja is on the correct object and in the correct event.
 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);
     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(yellowStar, 10);
 spin(orangeStar, 10);
 spin(orangeStar, 10);
@@ -48,13 +50,16 @@ spin(greenStar, 10);
 
 
 /**
 /**
 Sensei Stops
 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
 New Vocabulary and Concepts
 * GDP Asset Library
 * GDP Asset Library
@@ -12,40 +13,52 @@ Reinforced Vocabulary and Concepts
 * Object Names and Renaming
 * Object Names and Renaming
 
 
 Sensei Notes
 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.
 * The Ninja should compose a scene to the best of their ability.
 * Encourage them to experiment with changing shape properties.
 * 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
 Solution Steps
 1 Make sure the Ninja opens the correct scene.
 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(firstObject, 48);
 spin(secondObject,-330);
 spin(secondObject,-330);
 
 
 /**
 /**
 Sensei Stops
 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.
 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
 New Vocabulary and Concepts
 * Coordinates
 * Coordinates
 
 
 Sensei Notes
 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
 New Vocabulary and Concepts
 * Boolean Logic
 * Boolean Logic
@@ -13,35 +13,39 @@ Reinforced Vocabulary and Concepts
 
 
 Sensei Notes
 Sensei Notes
 * This is the first introduction to Boolean logic.
 * 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
 Solution Steps
 1 Make sure the Ninja opens the correct scene.
 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);
     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.
 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()) {
     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()) {
     if(circle.isTouchingWall()) {
         circle.bounce();
         circle.bounce();
         }
         }
 9 The circle should bounce every time it hits the wall.
 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);
 moveX(circle);
 
 
@@ -51,14 +55,17 @@ if(circle.isTouchingWall()) {
 
 
 /**
 /**
 Sensei Stops
 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
 New Vocabulary and Concepts
 * Comparison Operators
 * Comparison Operators
@@ -19,62 +20,72 @@ Sensei Notes
 
 
 Solution Steps
 Solution Steps
 1 Make sure the Ninja opens the correct scene.
 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.
 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(){
     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()) {
     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() < ) {
     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()) {
     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()) {
     if(laser.x() < getMouseX()) {
         moveX(laser, 400);
         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() {
     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()) {
     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()) {
     if(laser.x() > getMouseX()) {
         moveX(laser, -400);            
         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.
 15 Before the Ninja submits the scene, verify that the script is correct.
+*/
 
 
- */
 if(laser.x() < getMouseX()) {
 if(laser.x() < getMouseX()) {
     moveX(laser, 400);
     moveX(laser, 400);
 }
 }
@@ -85,16 +96,19 @@ if(laser.x() > getMouseX()) {
 
 
 /**
 /**
 Sensei Stops
 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
  * leftPaddle
  * if the up arrow is pressed, move the leftPaddle up
  * if the up arrow is pressed, move the leftPaddle up
@@ -44,4 +80,21 @@ if ( ball.isTouchingLeftWall() ) {
     rightScoreLabel.text(rightPaddle.score);
     rightScoreLabel.text(rightPaddle.score);
     ball.x(400);
     ball.x(400);
     ball.y(300);
     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.
+ */