The game file to import and load for this session is 5961_06_09.stencyl
.
Initialize Fruit Required
.Initialize Fruit Required
event appears as shown in the following screenshot, carefully checking the numbers and text in each of the blocks' textboxes:Before we can create the instructions to determine if all the fruit have been collected, we need to know how many fruit actors there are to collect. So we have created a new event that stores that information for us in a number attribute called Fruit Required
and displays it in the debug console.
We have created a for each … of group Collectibles
block. This very useful looping block will repeat the instructions placed inside it for each member of the specified group that can be found in the current scene. We have specified the Collectibles
group, and the instruction that we have placed inside the new loop is increment Fruit Required by 1
. When the loop has completed, the value of the Fruit Required
attribute is displayed in the debug console using a print …
block. When constructing new events, it's good practice to insert print …
blocks so we can be confident that the instructions achieve the results that we are expecting. When we are happy that the results are as expected, perhaps after carrying out further testing, we can remove the debug printing from our event.
We have also introduced a new type of block that can set a value for an actor; in this case, we have set actor value Collected for … of group to false
. This block ensures that each of the fruit actors has a value of Collected
that is set to false
each time the scene is loaded; remember that this instruction is inside the for each …
loop, so it is being carried out for every Collectible
group member in the current scene.
Where did the actor's Collected
value come from? Well, we just invented it! The set actor value …
block allows us to create an arbitrary value for an actor at any time. We can also retrieve that value at any time with a corresponding get actor value …
block, and we'll be doing just that when we check to see if a fruit actor has been collected in the next section, Time for action – detecting when all the fruit are collected.
Translating our instructions into English, results in the following statement:
For each actor in the Collectibles group, that can be found in this scene, add the value 1 to the Fruit Required attribute and also set the actor's Collected value to false. Finally, print the result in the debug console.
Note that the print …
block has been placed after the for each …
loop, so the message will not be printed for each fruit actor; it will appear just once, after the loop has completed!
If we wish to prove to ourselves that the loop is counting correctly, we can edit the Jungle scene and add as many fruit actors as we wish. When we test the game, we can see that the number of fruit actors in the scene is correctly displayed in the debug console. We have designed a flexible set of instructions that can be used in any scene with any number of fruit actors, and which does not require us (as the game designer) to manually configure the number of fruit actors to be collected in that scene! Once again, we have made life easier for our future selves!
Now that we have the attribute containing the number of fruit to be collected at the start of the scene, we can create the instructions that will respond when the player has successfully collected them all.
18.222.196.175