| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- /**
- 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.
- */
|