/** 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 * GDP getMouseX() * GDP .x() function * Pseudocode Reinforced Vocabulary and Concepts * Boolean Logic * Functions and Parameters * if() statements * Object Names Sensei Notes * This is the first introduction to user input. * This activity uses if statements and Boolean logic. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 15 Before the Ninja submits the scene, verify that the script is correct. */ if(laser.x() < getMouseX()) { moveX(laser, 400); } if(laser.x() > getMouseX()) { moveX(laser, -400); } /** 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. */